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