1. 適合的纔是最佳的
2. 惟一不變的是不停改變
3. 永無止境
微服務:
將單體服務根據業務邊界進行分離,單個微服務可以以獨立的、對外透明的方式提供服務。可以獨立的持續集成和交付。
- 經過REST API/SDK方式暴露服務,會兼容2-3個版本。REST優點是簡單、交付快。SDK優點是能夠在調用端作出優化和限制。
- 服務發現與註冊。eureka、consul
- 服務隔離與降級。hystrix
- 數據一致性。分佈式事務、業務補償機制。秒殺場景……
- 持續集成與部署。Jenkins
- 多環境模擬與測試。測試環境和預發佈環境。測試環境測試功能模塊,預發佈環境模擬PD場景。
- 代碼分支。特性分支、開發分支、預發佈分支、發佈分支。正常代碼交付、hotfix交付。版本管理。
- 代碼重構。隨着業務變化,以前完美的代碼也不能適應新的業務。
- 技術文檔和接口文檔。踩坑指南、技術方案、配置指南。swagger--接口即文檔
- 單元測試、集成測試、自動化測試。easymock、Junit、SpringbootTest
- 上線。AWS、shell。藍綠、灰度。回退。
- 無狀態。token貫穿
- 安全。基礎設施層安全和應用層安全。
微服務之路:shell
- 從剛開始的單體服務,逐步拆分紅微服務,quote服務拆分、Library、search、pricing、order(ing)
- 從單庫向獨立數據庫遷移
- 從AngularJs到Vue
- 從jar、war混合到單純jar包
- 從單人上線到人人上線
目前的DevOps之路:
- 開發人員全棧
- SPA 保證接口純粹 Vue Angularjs
- 部署腳本一致,團隊成員都能作上線,新啓服務能夠使用先用腳本稍做修改便可加入自動部署體系
- On Call。
- 代碼review。代碼質量、團隊成長
+數據庫