正如企事業單位盛產“臨時工”一樣,IT行業也有大量的背鍋俠,遠有挖掘機近有程序員,而隨著云計算服務的興起,云計算廠商大有成為新一代背鍋俠的趨勢——因為很多服務跑在云上,不管這些服務為啥掛了,都可以說是云計算廠商導致的。
粗略地看,這鍋還真是云計算廠商背定了。遠的如AWS宕機、Azure宕機,近的有Google宕機,國內也有阿里云、騰訊云、青云等的宕機事故。云計算廠商宕機之后,他們服務的客戶肯定也癱瘓。
不過,也有一些服務幸免于難,其原因很簡單——自己做了災備。從系統性角度來看,云計算是一個很顯而易見的責任方,但如果做到了服務的高可用還真的可以無視云計算宕機,關鍵在于頂層設計。
IT黑天鵝事件不可避免
云計算成了當今互聯網服務的核心基礎。云計算服務商在談論服務時總喜歡強調有多少個9的可用性,無論是云服務器、數據庫還是存儲。這不是云計算行業的獨特發明,面向企業級客戶的產品和服務,第一賣點永遠是穩定可靠,9的個數是某種定量化的表征,換一種更專業的說法叫SLA。
不過,SLA并非萬無一失的保險柜,這個世界上,小概率事件永遠會發生,有個規律叫“墨菲定律”,大意是你想到的最壞的事情它總會發生——龐大而復雜的IT環境,加上各種天災人禍,出問題幾乎無法避免。
云計算高可用+應用高可用=服務高可用
那么,一個非常現實又容易被忽略的問題來了:如何保證在云服務不可用的情況下,用戶的應用架構仍然能夠屹立不倒?
能夠提出這一問題的云計算用戶并不多,因為絕大多數人把云平臺的可用性等同于自身業務架構的可用性,事實上這是兩件事。
出事了別把責任全推給云廠商,也要看看自己。某種程度上,你得做好即便云計算廠商掛了,你都不會掛。因為這是你對你自己客戶的承諾。承諾不能轉嫁別人。
2012年堪稱亞馬遜AWS的厄運之年,6、7兩個月連續宕機影響一大票用戶,其中不乏Netflix、Heroku、Pinterest這樣的明星公司。那時候,輿論不光對亞馬遜AWS大加討伐,對云服務的前景也幾乎失去了信心。
但也有清醒的聲音。美國知名電腦周刊雜志eWeek 就發表資深科技記者Mike Elgan評論文章說“云計算不是萬靈丹,我們不過是租別人的計算機而已。因此自己數據中心可能出現的問題就算是轉向了云計算也依然存在”,他建議“企業有自己的替代方案很重要”。
Netflix的技術人員就表示,不論在何種情況下,每個系統必須靠自己存活。他們在設計系統時考慮了其所依賴的其他系統的故障并且能夠容忍故障。
災備還有同城災備、異地災備以及多活
自己掌握主動權,自己掌握主動權,自己掌握主動權,重要的事情說三遍。
解決可用性問題,很容易想到的是災備:從兩地三中心到同城雙活到異地多活,金融機構、政府、大中型企業一直秉持“不把雞蛋放在一個籃子里”的思路,在災備的路上越走越高精尖。
但是高精尖的背后是高昂的成本,對中小企業而言有些負擔過重。事實上,在云計算上也有對應的服務:地域(Region)和可用區(AZ:Availabe Zone)。
地域就是物理意義上不同地方的機房,一般來說距離較遠,相對來說會在用戶需求量較大的地方部署地域機房;每個地域又被劃分成多個可用區。可用區就好比資源池,它由一組物理和邏輯資源組成。
所以對于自己的云端業務,既可以分散到多個可用區,也可分散到多個地域。建立在不同地域上的業務架構可用性高于可用區,但復雜度和成本也高,所以平衡很重要。
應用高可用可做的文章更多
除此之外,互聯網界對于系統如何達到高可用是有一些基本共識的,比如:大系統小做,服務拆分;并發控制,服務隔離;灰度發布;全方位監控報警;核心服務,平滑降級。這些最佳實踐,如果很好地落實,對于提高系統可用性非常有幫助。
這里面每一個領域都可以單獨做文章,這里想特別提一個概念:分布式。分布式是互聯網界的熱詞,雖然說得多,但真正理解的人少。
分布式通過一套協議,將多臺機器連接在一起,減少了中心計算節點,從而完成計算。增加了網絡,減少了共享,這為分布式系統帶來了一些新的優點,比如高可用。
能夠做到高可用的原因其實很簡單,因為分布式系統是通過網絡將大量計算機連接在一起來完成功能的,而每一臺參與到網絡內的計算機,都是一臺全功能的計算機。因此,哪怕網絡內只存在著一臺計算機,從理論上來說,它也能完成全部計算,只是速度會稍微有一點影響。
分布式的思想引領了互聯網的發展,也讓高可用不再昂貴得遙不可及。
業內越來越清晰地認識到云計算是一門信任生意,可以說云計算是在金融之后更大的信任商業。只是,企業把IT基礎設施托付給云服務商的時候,千萬別忘了你才是這些系統的主人。