北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業業務能7×24不間斷運行,同時企業卻面臨越來越多業務中斷的風險,如企業系統復雜性的增加,頻繁的功能更新和發布等。如何確保業務連續性,提升韌性,成為企業急需解決的問題。
韌性是應用程序抵御中斷或從中恢復的能力,包括與基礎設施、依賴服務、錯誤配置、網絡問題和負載激增相關的中斷。在亞馬遜云科技,構建云韌性是一項最基礎的工作。亞馬遜云科技從一開始并持續在其基礎設施、服務設計與部署、運營模式和機制中將韌性考慮其中。在此基礎上,亞馬遜云科技還提供一套全面的服務、最佳實踐等,進一步幫助客戶提升自身的韌性。
亞馬遜云科技的韌性始于全球基礎設施
亞馬遜云科技全球基礎設施地理位置分散,遍及34個地理區域的108個可用區。為了避免單點故障的影響范圍,亞馬遜云科技最小化全球基礎設施之間的互聯性。每個區域都獨立于其他區域,區域之間的這種隔離機制確保單個區域發生服務故障時,其他區域不受影響仍正常運營。每個區域由三個或更多個相互獨立,且在物理上分隔的可用區組成。每個可用區都有獨立的電力、制冷和物理安全設施,同一區域內的可用區之間的物理距離也經過精心計算——通常是100公里以內。可用區的這種隔離機制,既能防止如供電、冷卻等常見故障點,也能避免同時受到如地震、洪水等大規模災害的影響。可用區之間又通過冗余的超低延遲網絡連接,可實現可用區間單位毫秒級延遲的數據同步復制。為了獲得高可用性的同時可以實現更大的容錯能力,客戶可以將他們的應用程序設計為在多個可用區中運行。
亞馬遜云科技將韌性根植于服務及架構設計中
亞馬遜云科技構建的服務均滿足極高的可用性目標。在服務/系統設計時,亞馬遜云科技使用通過對服務的控制平面和數據平面進行隔離設計,并采用"單元架構"設計模式,減少故障發生的可能,并盡可能降低故障發生時的影響范圍。
亞馬遜云科技服務分為控制平面和數據平面,并對他們進行分離設計,即數據平面不依賴于控制平面而獨立運行,當控制平面發生故障的情況下數據平面仍能繼續正常運行。其中,控制平面提供用于創建、讀取/描述、更新、刪除和列出(CRUDL)資源的管理 API,例如啟動新的 Amazon EC2 實例、創建 Amazon S3 存儲桶以及描述 Amazon SQS 隊列等。數據平面是提供服務的主要功能,例如正在運行的 Amazon EC2 實例本身、讀取和寫入 Amazon EBS 卷、在 Amazon S3 存儲桶中獲取和放置對象等。控制平面往往是復雜的協調和聚合系統,會執行多項任務;數據平面則沒那么復雜,相比控制平面其發生故障事件的可能性要小。這類似于火車系統,控制平面相當于指揮中心,數據平面則是鐵路線路,當指揮中心如通訊系統出現臨時故障時,火車仍然能按照既定線路運行。
亞馬遜云科技根據區域和可用區的隔離機制以及控制平面和數據平面分離的原則,提供三種服務類型:全局(Global)服務、區域級(Region)服務、可用區級(AZ)服務。全局服務的控制平面和數據平面不是在每個區域中獨立存在。全局服務以 Amazon Identity and Access Management(Amazon IAM)為例,該服務是全局服務,它的數據平面獨立存在于每個區域(Region),該區域中的每個云服務都直接與 Amazon IAM 數據平面交互。Amazon IAM 有獨立的控制平面,客戶可以使用它來管理身份和策略等 IAM 資源。當 IAM 控制平面故障的情況下,無需任何更改,每個區域的身份驗證和授權(即 IAM 的數據平面)都可以繼續正常運行。
區域級服務是建立在多個可用區域之上的服務,數據平面和控制平面都是區域級別。以 Amazon S3 為例,將請求和數據分布在多個可用區之間,可以自動從可用區故障中恢復。
可用區級服務可在一個區域內的每個可用區中獨立運行,不依賴于其他可用區中的組件,可用區服務可以指定將資源部署到哪個可用區,如 Amazon EC2 屬于可用區級服務。客戶可以通過部署多可用區架構運行具有更高可用性、容錯能力和可擴展性的生產級工作負載。當工作負載使用多個可用區架構時,可以更好地隔離和保護客戶免受影響單個可用區物理基礎設施問題的影響,即使一個可用區出現故障,工作負載也能保持運行。
此外,為了進一步降低故障發生時的影響范圍即"爆炸半徑",亞馬遜云科技還采用了"單元架構"設計模式。該模式將服務切分為多個部署堆棧,每個部署堆棧稱為"單元" ,每個單元之間都是互相獨立的,不共享任何內容,包括數據庫,每個單元服務于一個或多個客戶。采用了單元架構后,以可用區級別的服務為例,服務發生故障的影響范圍就限制在單元內,而不是整個可用區。
"經驗沒有壓縮算法"——通過卓越的運營和機制確保云服務的韌性
亞馬遜云科技還建立內部運營機制,通過服務責任模型、運營就緒審查、安全/持續部署以及錯誤流程糾錯來確保云服務的韌性。其中,亞馬遜云科技的工程和產品管理工作由小型多學科團隊領導,他們對所提供的服務擁有強大的所有權——不僅負責設計和發布服務,還負責在生產過程中運營服務,并在出現問題時隨時待命。
在一項服務發布之前,亞馬遜云科技還會使用"運營就緒審查"流程來審核所有新服務的運營準備情況。當對部署軟件進行服務更新或推出新服務時,亞馬遜云科技會使用安全、持續的部署管道。為了最大限度地減少錯誤部署對生產造成的潛在影響,亞馬遜云科技通過使用廣泛的預生產測試、自動回滾和交錯生產部署,將自動化部署安全構建到發布過程中。例如,一項服務的更新會從小處開始,首先部署到可用區內的單個最小單元,并經過指定的等待期以驗證沒有出現問題,再逐步部署到整個可用區的其余部分、其他可用區、單個區域,最后部署到其余區域。
此外,亞馬遜云科技還利用"糾錯流程",對客戶事件進行分析、研究,找出根本原因,減少其他服務發生類似問題的可能性,防患于未然。
亞馬遜云科技賦能客戶利用"云韌性"提升"云中韌性"
構建韌性是一個持續的過程,而不是一次性的努力。為了幫助客戶更輕松地提升云中應用的韌性,亞馬遜云科技基于自身以及多年服務客戶的廣泛經驗,總結了一套包含了服務、策略和架構最佳實踐的"韌性系統建設生命周期框架"。該框架包含五個階段:設定目標、設計和實施、驗證和測試、持續運營以及響應和改進。
亞馬遜云科技在每個階段都為客戶提供了適用的工具和服務。例如,客戶可以使用 Amazon Resilience Hub 來設置目標,根據這些目標評估韌性狀況,并根據Amazon Well-Architected Framework和 Amazon Trusted Advisor 的建議實施改進措施。在 Resilience Hub 中,客戶可以創建和運行 Amazon Fault Injection Service 實驗,這些實驗允許客戶測試其應用程序將如何響應某些類型的中斷。其他服務,如 Amazon Backup、Amazon Elastic Disaster Recovery (Amazon DRS) 和 Amazon Route53 Application Recovery Controller (Route 53 ARC),可以幫助客戶快速響應和從中斷中恢復。
結語
正如亞馬遜首席信息官 Werner Vogels 曾說過"Everything fails all the time"(故障總在情理之中、意料之外),這也是亞馬遜云科技從開始并始終加強和發展韌性的原因。亞馬遜云科技將持續為客戶提供廣泛、深入的架構及運營最佳實踐服務、工具和指導,幫助客戶在云中構建和運行韌性的應用程序。