在2024亞馬遜云科技re:Invent全球大會第四天的主題演講中,亞馬遜副總裁兼CTO Dr.Werner Vogels分享了 The Way of Simplexity,繁簡之道,濃縮了Werner在亞馬遜20年構建架構的經驗。
Werner表示,復雜性總是會“悄無聲息”地滲透進來,讓系統變得更加復雜。復雜性本身是件好事,因為它意味著添加更多功能。所以“復雜性”并不是問題,而“管理復雜性”才是個問題。
歷史悠久的"兩個披薩團隊",奠定繁簡之道
早在30多年前,亞馬遜老板在公司成立初期為他的團隊制定了“兩個披薩規則”,并認為較大的團隊難以管理,并且可能會因責任越來越大而不堪重負,而一個小團隊(大約 10 人左右)則確保員工團隊的規模合適,以實現最高效率和生產力。
復雜性的本質
在2024亞馬遜云科技re:Invent大會上,Werner開場視頻講述了世界上最大的存儲系統之一Amazon S3的故事,以及通過Two-Pizza team工作法,保有高效創新的團隊。“每年我都被大家的熱情所感染”,Werner說自己參與過13次re:Invent大會,在2012年首屆亞馬遜云科技re:Invent大會上首次提出的“21世紀架構”的理念,今年——Werner引入了“繁簡之道”(The Way of Simplexity)的概念:“要真正控制你的系統,你需要管理復雜性。”
Vogels認為,復雜性并非問題本身,而是如何管理復雜性至關重要。他提出兩類復雜性:
- 有意識的復雜性:隨新功能需求而產生
- 無意的復雜性:導致系統脆弱和低效
隨時間變化,需求的擴展、安全等等需要解決的問題逐步積累,系統的復雜性就逐漸上升。“有意識的復雜性”是必要的,新功能需要與之匹配的系統規模。“無意的復雜性”就可能造成真正的問題,導致系統變得脆弱、低速。Werner說:首先要識別這兩種復雜性。辦法也很簡單:警示信號有很多,如發布功能速度放緩、系統頻繁升級、調試耗時、模式不一致等。那么如何管理復雜度?“保持可演進性”,Werner指出,“達爾文早已認識到,要成功形成一個復雜有機生物,唯一的方式就是無數次連續微小修正。”引用赫拉克利特的觀點:世界處于不斷的變遷之中。如果系統不持續演進,客戶會認為公司的技術已經落伍。
可演進性:持續微小修正
Werner指出,構建可控演進的架構,是應對復雜性、生存下去的關鍵所在。
Amazon S3的發展歷程是最佳例證:
- 2006年啟動時僅有6個微服務
- 目前已發展到超過300個微服務
- 團隊從一開始就明確:一年后的架構將不同于初始設計
可演進性是一種長期策略,旨在應對復雜性的持續變化,而可維護性則是確保系統在短期內正常運行亞馬遜云科技為Amazon S3持續添加新功能,卻令客戶幾乎無感知其變化。
系統擴展看似簡單,但隨著內在復雜度增加,難度呈指數級上升。我們無法預測未來,但可以:
- 設計靈活、可擴展的架構
- 應對未知挑戰
- 需要遠見卓識的技術規劃
- 不斷打磨架構本身
**只有構建出能夠以可控方式演進的系統架構,我們才能從容應對復雜性的持續變化,在保證系統核心價值的同時,不斷融入創新,滿足不斷升級的需求。**這是科技巨頭架構設計的核心,也是每個技術團隊應該學習的寶貴經驗。
模塊化解耦:將復雜系統拆分
Werner以Amazon CloudWatch為例,Amazon CloudWatch作為亞馬遜云科技的關鍵基礎服務,其架構演進生動詮釋了"去大化小"的設計理念:
隨著系統不斷擴展,Amazon CloudWatch每天處理成百上千億的指標,其復雜性不斷攀升。
亞馬遜云科技的架構優化策略:
- 將CloudWatch拆分為低耦合、高內聚的小組件
- 定義清晰、規范的API接口
- 提供簡單的前端服務
"去大化小"的架構思路,將復雜的大系統分解為簡單、靈活、可組合的微服務,這是應對復雜性的可演進路徑。
微服務架構的關鍵特征:
- 每個組件職責明確
- 變更成本低
- 可持續優化和演進
- 能在關鍵時刻平滑過渡
面對新功能,有兩種主要策略:
- 擴展現有代碼
- 開發速度快
- 風險:增加系統復雜度
- 可能產生"超級服務"
- 創建新微服務
- 開發周期較長
- 優點:保持服務復雜度可控
- 架構更清晰、更具可擴展性
重點是在開發速度和系統可維護性之間尋求平衡。
組織與架構對齊,充分領悟領導力準則
亞馬遜云科技副總裁及杰出工程師Andy Barfield登臺加入Werner演講,闡釋了第三條經驗。他表示,Amazon S3服務已經存在18年了,在構建越來越復雜系統的同時,必須承認,組織的復雜性與正在構建的軟件一樣復雜。
首先,成功的團隊不能自滿。即使一切順利,你仍然需要時刻留意可能出現的問題,并不斷提出質疑。正是這種“挑戰現狀、指出漏洞并找到問題”的精神,幫助保障Amazon S3的持久性。
第二,主人翁精神。交給團隊一個問題,并賦予他們決策權和空間去解決它。領導者的職責是賦予團隊決策權,同時保持一種緊迫感,幫助他們按時交付。
一方面要賦能團隊,授權并信任他們;另一方面也要建立良好的問責機制,營造積極向上的文化氛圍,推動持續改進。只有組織與技術架構相互匹配、相互支撐,才能真正釋放團隊的創新活力,攻克復雜性。
單元化架構:控制"爆炸范圍"
Werner強調,管理復雜性的一個關鍵策略是采用基于單元的架構(Cell-based Architectures),即將系統拆分為更小、職責更明確的獨立單元。這些單元比傳統團隊負責的部分更為細化,它們獨立運作,能夠精確地控制故障的影響范圍——即所謂的“爆炸范圍”。這意味著當某個單元發生故障或需要升級時,影響僅限于該單元本身,從而避免了連鎖反應導致整個系統的癱瘓。
結合亞馬遜的實際案例,Werner深入闡述了這一設計哲學。理想情況下,每個單元的設計應達到一個平衡點:既足夠大以處理預期的最大工作負載,又足夠小以便進行全面測試。這種權衡旨在確保單元長期維護的可靠性和安全性,同時盡量減少對客戶體驗的影響。單元化設計通過隔離故障影響,提高了系統的可靠性、彈性和安全性,使得單個單元更容易管理和演進。
配合云原生技術如容器和服務網格,單元化架構不僅降低了系統的整體復雜性,還最大限度地增強了系統的可靠性和彈性,確保為客戶提供一致且優質的體驗。其最佳實踐在《What is a cell-based architecture》一文中有所詳細描述
系統可預測性:降低不確定性
Werner指出,不確定性是管理復雜度的另一關鍵問題。不確定性通常很難處理,想象一下:你的任務是設計一個配置系統,但是現有系統的客戶正在不斷地重新配置他們的任務和參數,而且客戶的數量級是數以百萬計;這時,一種常見的方法是使用小規模事件驅動的體系結構,更改配置并存儲在數據庫中。每發送一個事件或隊列,我們就相應調整系統。但如果這種情況持續發生,系統負載均衡所必須承擔的重新配置的負載量,就會變得相當可怕。
但是,我們所采用是一種更簡單的方法,將所有的調整存儲在一個文件中,該文件包含一組固定的記錄,負載均衡器在固定的循環中,每隔幾秒鐘從該文件中獲取新的配置,并處理所有記錄。此時重新配置就是完全可預測的,可簡單地構建高度可預測系統,持續地從Amazon S3中取出一個文件,避免積壓、瓶頸,自然而然地自我修復——這就是持續工作模式。
另一個利用持續工作模式的例子是Amazon Route53的健康檢查。配置健康檢查之后,無論節點是否可用,健康狀況檢查器只會定期推送出完整的配置文件到聚合器,聚合器合并所有請求,然后將其推送到一個更大的表中,并推送Amazon Route53。這就實現了不會每次都觸發調整,只有當DNS請求到達并被解析到一組IP地址時,系統才會檢查表中的記錄。這樣,系統就是高度可預測的。而這是特意設計出來的。化繁為簡需要有意識地配置和調整,設計可預測的系統,以減少不確定性。
自動化:簡化復雜重復流程
“自動化是另一條重要經驗”,Werner說。有些過程需要人工參與,但對于大量功能而言,自動化是關鍵所在。Werner以安全領域為例,亞馬遜云科技每天要處理超過1萬億次DNS請求,并且每天都會自動發現12.4多萬個惡意域名——這是人工系統無法復制的自動化過程。因此,我們不應該問“我們應該自動化什么?”,而應該問的是“我們還有哪些沒有自動化?”我們應該將一切無需判斷決策的事務都自動化。
例如,客戶可以使用Amazon Bedrock Serverless Agentic工作流程,創建智能化的票據分級系統。在這些系統中,針對特定用例場景訓練的自主AI代理可以自行解決問題,在必要時才升級給人工處理。自動化是應對復雜性、提高效率的重要手段。當我們將大量重復性工作交給機器去執行時,不僅能極大降低人工操作的復雜度和出錯率,還可以讓人類的注意力集中在真正需要判斷和創造的環節上。
精益求精-基于微秒級精準時鐘,更進一步降低分布式系統復雜度
在分享全部六點繁簡之道的經驗后,Werner講述了“復雜性的負擔”,亞馬遜云科技正在通過構建更簡單、更高效的系統,幫助客戶將自主構建系統的復雜性轉移到亞馬遜云科技云服務上來。他強調了亞馬遜云科技CEO Matt Garman在主題演講中發布的Amazon Aurora DSQL擴展功能這一典型案例,相比較于傳統云數據庫,它不僅消除了全球部署及資源管理的復雜度,更將跨區域強一致性和低延遲,以及全球同步時鐘的復雜性轉移給了云。
同時,Werner深入解讀了Amazon Aurora DSQL背后的核心技術與邏輯,包括關鍵的繁簡之道思路、從前端到存儲的5級傳輸架構,以及打破了分布式系統時間無用論,微秒級時間精準同步的Amazon Time Sync Service。正是這一系列突破性的技術,為客戶提供跨區域、強一致、低延遲的Amazon Aurora DSQL。
Werner說,時間可能是最根本的構建模塊。亞馬遜云科技的微秒級精準時鐘和時間同步服務,將幫助客戶顯著降低復雜度。
社會責任的承擔:NOW GO BUILD CTO Fellowship
在主題演講的最后,Werner表示,作為科技從業者,“我們有責任幫助客戶解決世界上最棘手的問題。”正是出于這一理念,去年他與救濟技術組織(Tech To The Rescue)領導的AI for Changemakers組織以及亞馬遜云科技社會責任團隊合作,設立了“NOW GO BUILD CTO Fellowship”。該計劃旨在支持那些利用人工智能和云計算推動積極變革的首席技術官們。
科技的力量是雙刃劍,能造福世界,也可能帶來不利影響。作為科技從業者,我們肩負著更大的社會責任。Werner呼吁,不要將科技孤立于社會之外,而是要主動以科技助力解決人類面臨的種種挑戰。“現在去構建”一個更美好的世界,正是科技人的終極使命!