亞馬遜高級副總裁兼杰出工程師James?Hamilton是這一領(lǐng)域的專家,他在服務(wù)器和數(shù)據(jù)中心基礎(chǔ)設(shè)施、數(shù)據(jù)庫以及云計算技術(shù)方面經(jīng)驗豐富,在20多個國家擁有超過200項專利。
他從2009年開始負責亞馬遜云科技在基礎(chǔ)設(shè)施效率、可靠性和服務(wù)擴展方面的工作。
James Hamilton是一位計算機領(lǐng)域的專家,擁有滑鐵盧大學計算機科學碩士學位和維多利亞大學計算機科學榮譽學士學位。較早的工作經(jīng)歷中,他是一名服務(wù)于意大利豪車品牌,比如瑪莎拉蒂、法拉利、蘭博基尼等豪車的專業(yè)汽車技師。
加入亞馬遜之前,他在IBM工作了11年,領(lǐng)導(dǎo)IBM C++編譯器團隊,擔任IBM DB2的首席架構(gòu)師。隨后,在微軟工作的12年中,先后擔任任微軟Exchange托管服務(wù)的領(lǐng)導(dǎo)者、SQL Server WebData團隊的總經(jīng)理,還負責微軟SQL Server的相關(guān)工作。
James Hamilton曾撰文分享了提高IT韌性的三種方法。
第一種,盡可能擴大自動化范圍。
Uptime Institute 的數(shù)據(jù)顯示,大約70%的數(shù)據(jù)中心和服務(wù)中斷是由人為錯誤造成的。而James預(yù)測這個比例會更高,這也是亞馬遜云科技如此專注于自動化的原因。因為手動操作會帶來風險,為此從備份到測試需要盡可能地自動化,自動化是創(chuàng)建韌性架構(gòu)的關(guān)鍵。
James提到了一家叫CalvertHealth的醫(yī)院,原本這家醫(yī)院電子健康記錄的數(shù)據(jù)備份是在企業(yè)數(shù)據(jù)中心服務(wù)器上手動管理的,恢復(fù)時間目標(RTO)數(shù)值曾為48至72小時。而當應(yīng)用恢復(fù)系統(tǒng)遷移到亞馬遜云科技后,RTO降至兩小時以下,縮短了97%。
James認為,在部署前就識別和解決代碼中的問題,也是構(gòu)建高可用性、高韌性應(yīng)用的重要組成部分。手動審查依賴于審查人員的專業(yè)知識和能力。但是,借助機器學習的代碼審查工具,企業(yè)可以實現(xiàn)這一過程的自動化,甚至還能優(yōu)化應(yīng)用性能。
Cognizant是世界領(lǐng)先的專業(yè)服務(wù)提供商之一,它使用亞馬遜云科技的自動化代碼審查功能來幫助開發(fā)和運營團隊主動識別和解決問題,并確保其部署的性能、安全性和合規(guī)性超出了來自不同行業(yè)和地區(qū)的客戶的要求。
第二種,持續(xù)測試來應(yīng)對未知。
持續(xù)測試是工程師理解系統(tǒng)如何應(yīng)對未知情況的方法。實現(xiàn)這個目標的做法之一是故意搞“破壞”。通過這種方法,企業(yè)能夠執(zhí)行故障注入實驗,幫助團隊營造真實世界所需的條件,來發(fā)現(xiàn)分布式系統(tǒng)中難以甄別的隱藏錯誤、盲點和性能瓶頸。
自21世紀初以來,亞馬遜一直在不會對客戶產(chǎn)生影響的精準控制的情況下,有意注入故障。這提高了其應(yīng)變能力,確保能為最壞的情況做準備。如果能觸發(fā)罕見事件,并更頻繁地調(diào)整應(yīng)對措施,那就做好了準備。
另一種流行的測試方法是韌性“游戲日”(game days),它通過模擬一個失敗或其他事件來測試系統(tǒng)、流程和團隊的響應(yīng)。這種方法的目的是盡可能逼真地演習,如果異常事件真的發(fā)生,團隊會采取行動。企業(yè)可以在亞馬遜云科技中使用其生產(chǎn)環(huán)境的完整副本進行游戲日演練。
第三點,統(tǒng)一可觀測性指標。
了解系統(tǒng)的運行情況對提高IT韌性至關(guān)重要。企業(yè)不斷收集和分析應(yīng)用數(shù)據(jù),才能更快地檢測和解決應(yīng)用可用性和性能方面的問題,從而改善用戶體驗。但隨著應(yīng)用復(fù)雜性的日益增加,問題出現(xiàn)時很難快速定位并解決。
Docebo是一家學習管理系統(tǒng)軟件供應(yīng)商,由于系統(tǒng)太復(fù)雜,排除故障經(jīng)常需要耗費幾天時間。當使用亞馬遜云科技的分析服務(wù),把所有日志記錄和跟蹤數(shù)據(jù)進行結(jié)合,創(chuàng)建了單一事實來源。隨后,Docebo將故障排除時間縮短了90%,修復(fù)時間從70%-80%減少到15%以下。過去幾天的工作現(xiàn)在只需要幾分鐘。
James提到的這三種方法中,盡可能擴大自動化范圍主要是減少故障出現(xiàn)的可能,持續(xù)測試來應(yīng)對未知,這部分主要是未雨綢繆做準備,而統(tǒng)一可觀測性指標則是為了提高定位和解決問題的速度。
事實上,亞馬遜云科技通過在基礎(chǔ)設(shè)施設(shè)計、服務(wù)部署、運營流程和機制中深度融入韌性原則,構(gòu)建了世界上最可靠的云服務(wù)之一。這些做法征服了納斯達克、道瓊斯、美國金融監(jiān)管局(FINRA)、默沙東等對數(shù)據(jù)高度敏感的組織。
如果要簡單總結(jié)亞馬遜云科技做對了什么,我認為關(guān)鍵的有以下幾個方面。
首先,亞馬遜云科技在其服務(wù)設(shè)計階段就已經(jīng)考慮到了防止中斷和事故的策略。這種前瞻性的設(shè)計意味著,一旦發(fā)生中斷,能夠最小化對客戶影響。此外,亞馬遜云科技通過在運營文化中深植韌性,確保其團隊始終準備應(yīng)對各種挑戰(zhàn)。
亞馬遜云科技的全球基礎(chǔ)設(shè)施是其可靠性策略的核心,在全球33個地區(qū)有105個可用區(qū)。這些區(qū)域由多個相互獨立且物理上分隔的可用區(qū)組成,同一區(qū)域內(nèi)的可用區(qū)之間具有足夠的距離。這種設(shè)計既保證了足夠的距離來防止相關(guān)故障,同時又能實現(xiàn)單位毫秒級的同步復(fù)制。
亞馬遜云科技是唯一一個在每個區(qū)域內(nèi)提供三個或更多可用區(qū)的云提供商。而且,每個可用區(qū)都有獨立的電力、制冷和物理安全設(shè)施。通過增加冗余和改善隔離,亞馬遜云科技最大限度地減少了故障的影響面。
亞馬遜云科技鼓勵客戶將其應(yīng)用程序設(shè)計為在多個可用區(qū)中運行,以獲得更高的可用性和容錯能力。亞馬遜使用了靜態(tài)穩(wěn)定性來提高韌性,即使發(fā)生故障或依賴項不可用時,系統(tǒng)可以繼續(xù)以靜態(tài)狀態(tài)正常運行。例如,EC2實例啟動后即具備與數(shù)據(jù)中心中物理服務(wù)器相同的可用性。
在用戶能接觸到的層面,亞馬遜提供了一系列定制的服務(wù),這些服務(wù)夠輕松集成到用戶的工作流中,幫助客戶增強自身的韌性。
比如,用戶首先通過使用Amazon Resilience Hub設(shè)定韌性目標和評估當前狀態(tài)。隨后,根據(jù)Amazon Well-Architected Framework和Amazon Trusted Advisor的建議進行改進。然后,就使用Amazon Resilience Hub來進行實驗評估和測試,通過測試來應(yīng)對未知。
當故障發(fā)生后,可以使用Amazon Backup、Amazon DRS和Route 53 ARC這些服務(wù)來快速響應(yīng)中斷并恢復(fù)業(yè)務(wù)。這一系列工具和服務(wù)確保了用戶能夠在面對挑戰(zhàn)時保持業(yè)務(wù)的連續(xù)性和穩(wěn)定性。