Flask 創建一個二手書籍線上購物平台-系統設計
技術可行性評估
- 評估組員的技能樹,大部分組員有點 Python,且有使用過 Flask 框架的經驗,故使用Flask 框架。
- 考量到我們只有一個月的時間開發(不含測試),且同時要修課,我們決定使用 ORM ,原因是因為組員不需要額外寫 SQL,可以加快整體開發進度。
- 目前業界最新技術採用前後端分離,我們也是考量到時間,且組內的組員對 JavaScript 沒有到很熟悉,我們改由後端來渲染前端模板。
- 三層式架構雖然會增加開發時間,採用它的原因在於好測試,最主要這門課程著重在「測試」。
系統部署架構
硬體資訊
硬體 | 作業系統 | 安裝模組 |
---|---|---|
Client PC | Windows / MacOS/ Linux | |
Web Server | AWS EC2 (Amazon Linux) | nginx-1.23.4 |
Application Server | AWS EC2 (Amazon Linux) | Gunicorn 21.2.0 |
Database Server | AWS RDS | PostgreSQL 15 |
使用者會透過 PC 瀏覽我們二手書籍線上購物平台,期間發出的 Http request 會打到 Nginx 反向代理伺服器,再導向應用程式伺服器,在應用程式伺服器裡面運行 gunicorn 的網頁伺服器,如若涉及操作資料庫,會再到 PostgreSQL 做操作。
實際營運環境要用什麼樣的硬體規格,會在測試階段環節確認出來。
系統軟體架構設計
系統使用 Python 的 Flask 網頁伺服器框架作為 MVC 框架,並且採用了三層式架構。首先是Controller層,負責接收和處理 Http request,同時處理與 View 的交互。第二層是Service層,專門負責處理商業邏輯,確保系統邏輯的一致性和有效性。最後一層是 ORM 層,主要負責操作 Model 並與 PostgreSQL 資料庫伺服器進行溝通。
選擇三層式架構的原因在於可以實現元件之間的解耦,提高模組的內聚力,同時為未來的開發工作提供方便,特別是在進行單元測試和整合測試時。這樣的結構使得不同層次的功能分明,開發人員能夠更容易地定位和處理相關模組的問題,同時也提升了代碼的可維護性和可擴展性。
模組版本資訊
1 | 1. Python version: 3.9 |
檔案結構
在 Presentation layer 會放 Controller 模塊、跟網頁模板,在 Business layer 會放 Service 模塊,負責接收從 Controller 傳過來的資料,做完商業邏輯運算後,會使用 DBManager 模塊與 PostgreSQL 溝通操作。
類別圖設計
Python 實務上不像 Java 會以類別包住 API,更常是直接在 py 檔上寫 function,所以我們 python 模塊視為類別,在類別圖上我們有特別標示 Module 字樣。
而這張類別圖是參考使用者案例圖所繪製出來的,我們將四大使用者案例轉換成 Python 模塊,細部使用者案例則設計 API 接口,承如上面所介紹的系統架構,以三層式設計,分別是 Controller、Service、DAO(ORM) 層。
大致上,負責開發的組員以這個架構下去做開發,更細部業務邏輯我們有記錄在系統設計書,提供可以組員開發做參考,在此不贅述。
Flask 創建一個二手書籍線上購物平台-系統設計
https://gordonfang199649.github.io/2024/02/05/Flask-創建一個二手書籍線上購物平台-系統設計/