建構微服務:設計細微化的系統 封面

建構微服務:設計細微化的系統

👨‍💼: Sam Newman
📅: July 24, 2021
Buy Now
📖:
Sam Newman 的微服務聖經第二版——以「獨立可部署性」為核心戒律,把架構、實作、人與文化整合為一份從巨石到微服務的漸進式遷移手冊。
📘 深度概覽

作者背景#

Sam Newman,獨立顧問、技術作家、講者,專精於微服務架構、雲端、持續交付與 DevOps 領域。曾任 ThoughtWorks 顧問十餘年,後成立自有顧問公司,為全球知名企業提供分散式系統與組織轉型的諮詢。其代表作 Building Microservices(O’Reilly, 第一版 2015)是英語世界最具影響力的微服務入門書之一,定義了「微服務作為一個建築風格」的標準語彙。本書是第二版(2021),相對於第一版的重大改寫包括:補充過去六年業界落地的經驗、重寫資料庫拆解(database decomposition)章節、加入 Saga / Workflow 等 BASE 取向的協調模式、整合 GraphQL / BFF 等使用者介面層次的處理、以及把「組織與文化」從附錄提升為獨立的第四部分。其他代表作包括 Monolith to Microservices(2019,本書遷移章節的擴充版)、 Production-Ready Microservices 系列課程。Newman 寫作風格以「強硬反對教條」著稱——他多次強調微服務「不是預設選項」、「會帶來巨大複雜度」、「許多公司不應該採用」。

完整摘要#

本書要回應的問題是:微服務架構在今天究竟值得做嗎?如果值得,應該怎麼做? Newman 的整體答案是:「微服務帶來的不是答案,而是選擇權(options);選擇權有代價」——這個立場貫穿全書四百多頁。

全書分為四部分,循序處理「概念—實作—系統—人」四個層次:

Part I 基礎(Foundation,3 章) — 確立微服務的定義與建模原則。微服務是「圍繞業務領域建模、可獨立發佈」的服務,是 SOA 做對的具體做法。Newman 提出本書最核心的命題:「如果只能帶走一個觀念,那就是『獨立可部署性』(Independent Deployability)——把它當預設發佈紀律」。獨立部署反過來會強迫你做對其他事(明確介面、資訊隱藏、領域邊界),形成一個強制函式(forcing function)。建模章節深度引入領域驅動設計(DDD)、Bounded Context、聚合(Aggregate)等概念。通訊風格章節區分同步阻塞 / 同步非阻塞 / 事件驅動 / 請求-回應四種模式的取捨。

Part II 實作(Implementation,5 章) — 處理具體的工程細節。通訊實作處理 RPC、REST、GraphQL、訊息佇列、Schema 演化的具體技術選擇。Workflow 章節是第二版重要新增——以分散式交易、Saga 模式、補償交易處理「跨服務交易」這個微服務最痛的問題。從巨石到微服務章節引入 Strangler Fig 模式、Branch by Abstraction、UI Composition 等漸進式遷移工具。資料庫拆解章節(重寫)詳細處理共享資料庫拆分的步驟、雙寫一致性、讀寫分離、Outbox 模式。成長之痛章節歸納微服務系統規模化過程中常見的瓶頸。

Part III 系統(People,5 章) — 處理可運行的微服務系統需要的橫向能力:Build / Deploy / Testing(CI/CD 在微服務世界的重新設計、消費者驅動契約測試 CDC、Canary、Blue/Green)、Monitoring & Observability(從監控到可觀察性的轉向、分散式追蹤、structured logging、SLO)、Security(零信任架構、邊界 vs. 服務間驗證、機密管理)、Resiliency(韌性的四個層級:穩定、堅韌、可恢復、適應;Circuit Breaker、Bulkhead、超時與重試)、Scaling(垂直、水平、功能、資料四種擴充軸)。

Part IV 人與文化(People and Culture,3 章) — 微服務作為社會技術問題(sociotechnical)的核心部分。Organizational Structures 章節以康威定律為錨——「鬆耦合的組織會產生鬆耦合的架構」。借 Team Topologies(Skelton & Pais, 2019)的四種團隊類型(Stream-Aligned、Enabling、Complicated-Subsystem、Platform)為框架。引用 Accelerate(Forsgren, Humble, Kim, 2018)的高效團隊指標、Brooks’s Law、two-pizza team。Evolutionary Architect 章節重新定義架構師角色——從「設計者」轉為「規則制定者與守門人」(zoning officer),主張架構是不斷演化的而非一次性決定。

本書的貢獻與定位#

本書的歷史地位在於 它把微服務從矽谷大廠(Netflix、Amazon、Google)的稀有實踐,轉為英語世界一般工程組織可以系統學習與評估的標準架構選項。在分散式系統與架構演化的譜系中,Newman 與 Eric Evans(Domain-Driven Design)、Martin Fowler(Patterns of Enterprise Application Architecture)、Vaughn Vernon(Implementing DDD)、Mike Amundsen(API 設計)形成「英語世界微服務知識共同體」的軸線;本書最獨特的貢獻是 它強硬地把「微服務不是預設選項」作為論述底色——強調 Modular Monolith 在多數場景仍是更明智的選擇、漸進式遷移勝於 Big Bang Rewrite、組織不變則架構不會變。「獨立可部署性作為強制函式」、「Service-Per-Bounded-Context」、「資訊隱藏作為服務邊界的判準」、「微服務帶來的是選擇權,不是答案」、「鬆耦合組織產生鬆耦合架構」等命題已成為當代分散式系統設計的標準語彙。最適合作為 架構師、技術主管、平台工程師、以及正考慮微服務遷移的工程組織 的參考手冊——既可作為入門系統學習的教科書,也可作為遷移實作中遇到具體問題的查詢指南;尤其推薦給「已經有微服務但成效不如預期」的團隊,本書第二部分與第三部分對於分辨痛點來自架構錯誤、實作錯誤、還是組織錯誤特別有力。