微服務遵循前提:
業務獨立性:推薦書籍 Eric Evans《領域驅動模型》
團隊自主性:
特點
單一職責:推薦書籍 Robert C.Martin《靈活軟體開發:原則、模式和實作》
輕量級通信:語言無關、平台無關的互動方式

獨立性:傳遞過程中,開發(功能)、測試、部署的獨立性;服務與服務的獨立、隔離;
程序隔離
背景
網際網路時代的産品特點:
需求變化快
使用者群體龐大
價值觀、方法論=》可遵循、可參考、可實施的傳遞體系
精益創業Lean Startup=》最小可實行産品Minimum Viable Product
靈活方法
持續傳遞
雲、虛拟化、基礎設施自動化Infrastructure as Code:
DevOps文化的推行
容器虛拟化技術
Docker的優勢 》一個節點運作成百上千的Docker容器 》解決微服務的環境搭建、部署、運維成本高的問題
更快速的傳遞、部署:鏡像
更輕松的遷移、擴充:可以在任意平台遷移(實體機、虛拟機、公有雲、私有雲……)
更簡單的管理:鏡像修改以增量方式分發、更新
SOA面向服務架構 vs 微服務
微服務的本質:
服務作為元件Component:元件可以被獨立部署
定義了清晰的、語言無關、平台無關的接口
分布式調用比程序調用更消耗時間
嚴重依賴網絡的可靠性、穩定性
圍繞業務組織團隊
關注産品而非項目
技術多樣性
業務資料獨立
業務資料接口繼承,而非以資料庫的方式同其他服務繼承
随業務發張,選擇更合适的工具管理、遷移業務資料
基礎設施自動化
部署、運維的成本随服務的增多呈指數級增長
雲技術、持續繼承、持續傳遞
演進式架構
業務驅動架構,架構服務于業務
微服務的優勢
獨立性
單一職責
實施需要考慮的因素:
分布式系統的複雜度
性能:網絡延遲、帶寬;多服務互相協作時,響應時間、性能
可靠性:網絡、帶寬、節點自身的可靠性=》元件間遠端調用;單點故障
異步:異步通信的定位問題、調試問題難度更大
資料一緻性:跨多個節點來保證資料的瞬時一緻性||資料的最終一緻性
工具:開發、調試工具沒有足夠支援
運維成本:每個服務獨立配置、部署、監控、日志收集=》成本呈指數級增長
配置
部署
監控、警告
日志收集
部署自動化:建構自動化部署流水線
DevOps與組織架構
服務間依賴測試
服務間依賴管理