如何把一個簡單的Web專案複雜化——垂直劃分——設計篇
概述
把簡單的Web專案做複雜,是為了能夠把更復雜的Web專案做簡單。
垂直劃分,是把Web專案做成可擴充套件的第一步,第二步是水平劃分,在這裡,我們僅探討垂直劃分。
本文定位為設計篇,是為了把實現邏輯跟大家說清楚,至於如何實現,有機會,再跟大家分享。
假設&前提
做一個Web網上商城專案,在這裡僅討論該專案的使用者(user)、產品(prod)與訂單(order)模組及其相關。
為了讓大家好理解,以及描述的方便,我們假定用LNMP實現,用Git管理程式碼。
該專案有包含大家所熟知及使用的Web網上商城功能:註冊、登入、使用者中心、我的訂單、產品展示和下單等。
一個專案實現所有功能的作法
一個構建在MVC PHP框架之上的Web專案 + 一個MySQL資料庫,就這麼多。
垂直劃分成多個專案實現所有功能的作法
Web專案
專案名 | 域名 | 說明 |
---|---|---|
example_www | www.example.com | 主專案,不被其它專案所包含的功能 |
example_reg | reg.example.com | 註冊 |
example_passport | passport.example.com | 登入,單點登入,使用者認證 |
example_user | user.example.com | 使用者中心 |
example_order | order.example.com | 我的訂單 |
example_prod | prod.example.com | 產品展示 |
資料庫
資料庫名 | 說明 |
---|---|
example_www | 主庫,不被其它資料庫所包含的表 |
example_log | 日誌,僅用於記錄,不作為業務使用 |
example_user | 使用者 |
example_prod | 產品 |
example_order | 訂單 |
Rpc專案
Rpc專案與資料庫一一對應,給Web專案提供對應資料庫的CRUD服務,及其業務相關服務(注:業務不相關的元件,可通過composer提供給各專案使用)。
專案名 | 域名 | 說明 |
---|---|---|
example_www_rpc | www-rpc.example.com | 主庫CRUD,業務相關服務,及不被其它Rpc專案包含的服務 |
example_log_rpc | log-rpc.example.com | 日誌CRUD |
example_user_rpc | user-rpc.example.com | 使用者CRUD,及其業務相關服務 |
example_prod_rpc | prod-rpc.example.com | 產品CRUD,及其業務相關服務 |
example_order_rpc | order-rpc.example.com | 訂單CRUD,及其業務相關服務 |
Api專案
專案名 | 域名 | 說明 |
---|---|---|
example_api | api.example.com | 整個大專案(Web網上商城)對外提供介面的專案,類似於api.github.com |
Git
每個專案(Web專案和Rpc專案)一個Git庫。
Git分支管理使用經典Git flow,見:http://nvie.com/posts/a-successful-git-branching-model/
Over
相關文章
- 如何弄懂複雜專案
- iOS 面試大全從簡單到複雜(簡單篇)iOS面試
- 如何建立複雜的機器學習專案?機器學習
- 10.03.30專題 “《簡單之美》作者老倪談專案管理之道--複雜系統簡單化“專案管理
- Tomcat詳解系列(1) - 如何設計一個簡單的web容器TomcatWeb
- 最簡單的nginx教程 - 如何把一個web應用部署到nginx上NginxWeb
- 如何搭建一個功能複雜的前端配置化框架(一)前端框架
- 精讀《維護好一個複雜專案》
- 如何在Linux安裝Python+JDK+Mysql+Tomcat+Django以及簡單的跑一個java web專案和一個簡單的Django專案LinuxPythonJDKMySqlTomcatDjangoJavaWeb
- 如何設計一個簡單的 C++ ORMC++ORM
- 把簡單做好也不簡單-css水平垂直居中CSS
- 超實用乾貨!互動設計中如何簡化複雜操作?
- Flutter隨筆(二)——使用Flutter Web + Docker + Nginx打造一個簡單的Web專案FlutterWebDockerNginx
- Web效能優化系列:把效能看作設計的一部分Web優化
- 軟體專案計劃-估算雜談
- 如何建立複雜專案的WBS結構(轉)
- 如何設計一個簡單的訊息中介軟體
- 如何寫一個簡單的分頁元件(原理)元件
- 挨踢專案求生法則——計劃篇,計劃趕不上變化!
- 一個電商專案的Web服務化改造Web
- 複雜產品的響應式設計【流程篇】
- 如何設計一個最簡化的推薦系統
- 記一個複雜元件(Filter)的從設計到開發元件Filter
- 複雜的IT專案如何管理 有哪些管理要點
- 分享一個簡單的聊天室專案
- 配置一個簡單的傳統SSM專案SSM
- 如何打造一份it專案計劃書
- 基於元件化開發,一個簡單的Android專案框架元件化Android框架
- 透鏡設計和萬智牌的簡化(上):三種複雜度複雜度
- 如何在jenkins上新建一個專案及其簡單配置Jenkins
- 自己一人如何去做一個web專案Web
- 複雜單頁應用的資料層設計
- 如何把Spring Boot 專案變成一個XML配置的Spring專案Spring BootXML
- 如何用TypeScript來建立一個簡單的Web應用TypeScriptWeb
- 專案經理的基本功之一“把簡單的事情做好”(轉)
- 如何管理前端專案中的複雜依賴關係前端
- 構建一個簡單的react-typescript專案ReactTypeScript
- 資料複雜性和簡單