Amazon的CEO Jeff Bezos前幾天在致股東的信中表示,亞馬遜云服務(wù)AWS目前已經(jīng)有超過(guò)100萬(wàn)的用戶(hù),2016年的營(yíng)收也將突破100億美元。Amazon的AWS服務(wù)是在2006年3月推出,距今已有整整10年的時(shí)間了。AWS最早推出的云服務(wù)是簡(jiǎn)單儲(chǔ)存服務(wù)Simple Storage Service(S3),后來(lái)又陸續(xù)推出了Amazon彈性計(jì)算網(wǎng)云Elastic Compute Cloud (EC2)、亞馬遜簡(jiǎn)單數(shù)據(jù)庫(kù)(Amazon SimpleDB)、亞馬遜簡(jiǎn)單隊(duì)列服務(wù)(Amazon Simple Queue Service)以及Amazon CloudFront等云服務(wù)。目前,成千上萬(wàn)的創(chuàng)業(yè)公司在AWS的數(shù)據(jù)中心和服務(wù)基礎(chǔ)上構(gòu)建了自己的在線業(yè)務(wù)。不僅大量小公司依賴(lài)于Amazon AWS的云計(jì)算服務(wù),很多諸如Adobe、GE、Netflix和Pinterest這樣的大公司也都在使用Amazon的AWS服務(wù)。
在Amazon的AWS服務(wù)上線10周年之際,推動(dòng)AWS服務(wù)發(fā)展的核心人物、Amazon的CTO Werner Vogels在本文中專(zhuān)門(mén)總結(jié)和分享了他在AWS上線運(yùn)營(yíng)10年過(guò)程中的學(xué)到的10條經(jīng)驗(yàn),希望對(duì)大家有所啟發(fā)和借鑒。
1.從第一天開(kāi)始,就要打造一個(gè)可以持續(xù)演化的系統(tǒng)
從第一天開(kāi)始,我們就非常清楚地認(rèn)識(shí)到,我們所開(kāi)發(fā)的這套軟件是一個(gè)一定需要持續(xù)改進(jìn)的軟件,現(xiàn)在開(kāi)發(fā)的軟件可能并不是一年以后運(yùn)行的軟件。我們當(dāng)時(shí)是這樣預(yù)期的,隨著數(shù)量級(jí)的增加,我們就需要去重新檢視和修改我們已有的架構(gòu),確保能夠解決擴(kuò)展性的問(wèn)題。
然而,由于全世界不同地方的很多公司都依賴(lài)著我們平臺(tái)所提供的7x24小時(shí)全天候不間斷的服務(wù),因此我們無(wú)法采用過(guò)去通常采用的通過(guò)維護(hù)停機(jī)、進(jìn)行系統(tǒng)升級(jí)的方式來(lái)達(dá)到這一目標(biāo)。因此,我們從開(kāi)始就需要打造一個(gè)在引入新的軟件構(gòu)件時(shí)不會(huì)迫使服務(wù)暫停的架構(gòu)。Amazon的一位非常出色的工程師Marvin Theimer有一次曾開(kāi)玩笑說(shuō),Amazon S3服務(wù)的持續(xù)演進(jìn)和下面這個(gè)場(chǎng)景非常像:我們最開(kāi)始開(kāi)的是一架單引擎的賽斯納飛機(jī),在開(kāi)了一段時(shí)間后升級(jí)成了一架波音737飛機(jī),之后又換成了一支波音747飛機(jī)編隊(duì),我們現(xiàn)在開(kāi)的則更像是由空中巨無(wú)霸空客A380組成的一支大型飛機(jī)編隊(duì)。從最開(kāi)始到現(xiàn)在,我們都是通過(guò)空中加油的方式確保飛機(jī)的正常飛行的,與此同時(shí),我們直接將AWS的用戶(hù)在空中從一架舊飛機(jī)上轉(zhuǎn)移到另一架新飛機(jī)上面,而AWS用戶(hù)在這整個(gè)過(guò)程中甚至沒(méi)有意識(shí)到他們被悄悄地轉(zhuǎn)移到另一架更先進(jìn)的飛機(jī)里了。
2.為意料之外的失敗和問(wèn)題做好充分準(zhǔn)備
失效是難以避免的的,隨著時(shí)間的推移,任何東西都有可能會(huì)出現(xiàn)這樣那樣的問(wèn)題:從路由器到硬盤(pán),從操作系統(tǒng)到存儲(chǔ)單元損壞的TCP數(shù)據(jù)包,從瞬間誤差到永久失效等等。不管是使用高質(zhì)量的硬件還是低成本的組件,這些問(wèn)題都將無(wú)可避免地出現(xiàn)。
隨著服務(wù)規(guī)模的擴(kuò)大,懂得這個(gè)問(wèn)題將變得越來(lái)越重要:舉個(gè)例子,當(dāng)AmazonS3的服務(wù)處理數(shù)億的存儲(chǔ)交易時(shí),即使是可能性最小的錯(cuò)誤也會(huì)變成現(xiàn)實(shí)。這些失敗和出問(wèn)題的場(chǎng)景中的一部分是可以被事先預(yù)想的,然而很多問(wèn)題在設(shè)計(jì)和構(gòu)建過(guò)程中是無(wú)法被事先考慮到的。
所以說(shuō),我們需要打造一個(gè)將失敗和故障視為自然會(huì)發(fā)生的系統(tǒng),即使我們不知道故障和問(wèn)題可能會(huì)是什么。這個(gè)系統(tǒng)需要在即使“屋里已經(jīng)失火”的情況下依然能夠維持正常運(yùn)行的狀態(tài)。其中很重要的一點(diǎn)是,要能夠在不讓整個(gè)系統(tǒng)宕機(jī)的情況下就能處理好受到影響的組件。我們現(xiàn)在已經(jīng)掌握了一套能夠控制故障發(fā)生后所波及范圍的基本技能,這樣一旦出現(xiàn)任何問(wèn)題,系統(tǒng)的整體健康狀況是可以繼續(xù)維持的,不會(huì)出現(xiàn)服務(wù)停機(jī)的狀況。
3.要提供基元,而非僅提供一個(gè)大而全的統(tǒng)一框架
很快,我們就發(fā)現(xiàn)很多用戶(hù)喜歡在AWS提供的服務(wù)上持續(xù)構(gòu)建自己的業(yè)務(wù)的。在離開(kāi)了傳統(tǒng)舊世界里備受束縛的IT硬件和數(shù)據(jù)中心之后,他們開(kāi)始以一種全新有趣的使用方式來(lái)開(kāi)發(fā)自己的系統(tǒng)。正因?yàn)槿绱耍覀兙托枰龅阶銐虻仂`活性去滿(mǎn)足用戶(hù)各種不同的需求。
我們提供的最重要的機(jī)制之一是為用戶(hù)提供一系列基元功能和工具,他們可以選擇自己喜歡的方式來(lái)使用AWS服務(wù),而不是提供一個(gè)強(qiáng)迫用戶(hù)必須使用的包羅一切的大而全的統(tǒng)一框架。這個(gè)方法讓我們的用戶(hù)獲得了巨大的成功,甚至AWS后來(lái)提供的的很多服務(wù)都使用了同樣類(lèi)似的服務(wù)機(jī)制,而這個(gè)服務(wù)機(jī)制是我們的很多用戶(hù)都已經(jīng)習(xí)慣了的。
此外,在用戶(hù)真正開(kāi)始使用我們的服務(wù)開(kāi)發(fā)產(chǎn)品和服務(wù)之前,我們很難去預(yù)測(cè)對(duì)用戶(hù)自己的優(yōu)先級(jí)到底是什么,意識(shí)到這一點(diǎn)非常重要。這也是為什么我們后來(lái)推出新服務(wù)最開(kāi)始只配有最小的功能集,這樣一來(lái),我們可以通過(guò)用戶(hù)的反饋來(lái)對(duì)擴(kuò)展我們服務(wù)的新功能,以更好地滿(mǎn)足用戶(hù)的需求。
4.自動(dòng)化是關(guān)鍵
開(kāi)發(fā)一個(gè)需要去檢測(cè)維護(hù)的軟件服務(wù)和開(kāi)發(fā)一個(gè)最終交付給客戶(hù)的軟件是有著非常大的區(qū)別的。為了滿(mǎn)足用戶(hù)對(duì)產(chǎn)品可靠性、性能以及可擴(kuò)展性等方面的期待和需求,管理AWS這樣的規(guī)模化系統(tǒng)是需要一種不同的心態(tài)和方法的。
要想實(shí)現(xiàn)上述目標(biāo),一個(gè)關(guān)鍵的機(jī)制就是盡可能地將管理工作全部自動(dòng)化,這樣就可以避免手工操作可能帶來(lái)的任何容易產(chǎn)生的誤差。為了實(shí)現(xiàn)這一目標(biāo),我們需要打造一套可以控制操作中各項(xiàng)主要功能的管理API。此外,AWS也能夠幫助用戶(hù)同樣實(shí)現(xiàn)這個(gè)目標(biāo)。通過(guò)把你的應(yīng)用分解成一個(gè)個(gè)基本的構(gòu)建模塊,每個(gè)模塊都有自己的管理API,這樣你就可以利用自動(dòng)化規(guī)則進(jìn)行大規(guī)模可靠、可預(yù)測(cè)的的運(yùn)營(yíng)。自動(dòng)化工作究竟做得如何,有個(gè)很簡(jiǎn)單的檢驗(yàn)方法就是看你是不是還需要SSH登陸到服務(wù)器進(jìn)行操作,如果需要的話(huà),說(shuō)明你的自動(dòng)化的工作還有待加強(qiáng)。
5.API是永恒的,一旦上線便無(wú)法變更
其實(shí)之前在Amazon零售業(yè)務(wù)中已經(jīng)吸取了類(lèi)似的經(jīng)驗(yàn)和教訓(xùn)了。然而對(duì)于AWS這種以API為中心的服務(wù)而言,“API是永恒的”這個(gè)原則顯然就變得更為重要了。一旦用戶(hù)開(kāi)始使用我們的API開(kāi)發(fā)他們的應(yīng)用和系統(tǒng)后,我們就不可能再去對(duì)那些這些API做任何變動(dòng)了,因?yàn)樽儎?dòng)API會(huì)嚴(yán)重影響到用戶(hù)的業(yè)務(wù)。我們已經(jīng)意識(shí)到,設(shè)計(jì)API是一個(gè)非常重要的任務(wù),必須要一次性成功。
6.關(guān)注和了解自己的資源使用情況
在你為一項(xiàng)服務(wù)制定合適的計(jì)費(fèi)模式的時(shí)候,一定要確保你有一份關(guān)于這項(xiàng)服務(wù)的各項(xiàng)成本和運(yùn)營(yíng)費(fèi)用的詳細(xì)數(shù)據(jù),當(dāng)你運(yùn)營(yíng)一個(gè)業(yè)務(wù)量大、利潤(rùn)率低的業(yè)務(wù)時(shí)更需要如此。AWS作為一個(gè)服務(wù)提供商,我們必須對(duì)服務(wù)成本非常了如指掌,這樣我們就能清楚地了解基于這一成本,我們是否能夠承擔(dān)得起為用戶(hù)提供這項(xiàng)服務(wù)。此外,我們還可以借此找到那些可以通過(guò)提高運(yùn)營(yíng)效率而降低成本的一些方法,并通過(guò)這種方法進(jìn)一步降低服務(wù)價(jià)格,從而讓用戶(hù)從中受益。
舉例說(shuō)明一下,在我們發(fā)展早期,我們一開(kāi)始對(duì)Amazon S3服務(wù)所需要的資源成本其實(shí)并不是非常清楚。我們當(dāng)時(shí)是這樣設(shè)想的,存儲(chǔ)和寬帶成本是我們首先需要考慮的收費(fèi)點(diǎn)。不過(guò)后來(lái)在Amazon S3運(yùn)行了一段時(shí)間之后我們開(kāi)始意識(shí)到,請(qǐng)求數(shù)量其實(shí)和存儲(chǔ)與帶寬是一樣重要的。如果有用戶(hù)有大量的小文件,在這種情況下,即使這個(gè)用戶(hù)請(qǐng)求上百萬(wàn)次,其實(shí)都不會(huì)占用太多的存儲(chǔ)和帶寬資源,占最多資源的其實(shí)是請(qǐng)求數(shù)量。因此我們必須對(duì)收費(fèi)模型進(jìn)行調(diào)整,將請(qǐng)求數(shù)量也放進(jìn)了資源成本中去,這樣才能確保AWS有一個(gè)可以持續(xù)發(fā)展的業(yè)務(wù)。
7.從一開(kāi)始就要將安全問(wèn)題考慮進(jìn)去
保護(hù)用戶(hù)的安全是一個(gè)你永遠(yuǎn)都要排在第一位的優(yōu)先級(jí)問(wèn)題,在AWS當(dāng)然也是這樣,這無(wú)論從運(yùn)營(yíng)的角度來(lái)看,還是從工具和機(jī)制的角度來(lái)看都是如此。因此,我們?cè)诎踩矫娴耐度雽⒁恢笔俏覀兊牡谝淮笸度搿?br />
我們很快就學(xué)會(huì)的一個(gè)方法是,為了打造更加安全的服務(wù),這就要求我們?cè)诜⻊?wù)設(shè)計(jì)的最初階段就將安全問(wèn)題考慮進(jìn)去。安全團(tuán)隊(duì)的工作不是在一項(xiàng)服務(wù)開(kāi)發(fā)完成之后再去檢查驗(yàn)證它的安全性問(wèn)題到底如何。安全團(tuán)隊(duì)?wèi)?yīng)該在開(kāi)發(fā)工作開(kāi)始后的第一天就參與到產(chǎn)品開(kāi)發(fā)中去,確保安全問(wèn)題在剛開(kāi)始開(kāi)發(fā)時(shí)就被考慮進(jìn)去,而且貫穿于整個(gè)項(xiàng)目的開(kāi)發(fā)的全過(guò)程。在任何涉及安全的問(wèn)題時(shí),你都不能做任何妥協(xié)。
8.數(shù)據(jù)加密太重要
數(shù)據(jù)加密是讓用戶(hù)確保他們對(duì)誰(shuí)能獲取自己的數(shù)據(jù)擁有絕對(duì)控制權(quán)的一個(gè)關(guān)鍵機(jī)制。在10年以前,用于數(shù)據(jù)加密的相關(guān)的工具和服務(wù)的使用體驗(yàn)非常差,直到AWS開(kāi)始運(yùn)營(yíng)后的最初幾年里,我們慢慢知道了如何最好地將數(shù)據(jù)加密功能整合進(jìn)我們的服務(wù)里。
Amazon S3最初提供的是服務(wù)器端的加密。如果你想檢查我們數(shù)據(jù)中心的任何磁盤(pán),你是無(wú)法訪問(wèn)到任何數(shù)據(jù)的。后來(lái),我們陸續(xù)推出了Amazon CloudHSM 和Amazon Key Management Service,這些服務(wù)允許用戶(hù)利用自己的加密秘鑰對(duì)數(shù)據(jù)進(jìn)行加密,這樣就不需要AWS再去幫助用戶(hù)去管理他們的加密密鑰了。
如今,在AWS所有新推出的服務(wù)中,對(duì)數(shù)據(jù)加密的支持已經(jīng)在服務(wù)的原型設(shè)計(jì)階段就被整合進(jìn)去了。例如在Amazon Redshift這項(xiàng)服務(wù)里,每一個(gè)數(shù)據(jù)模塊都是通過(guò)一個(gè)隨機(jī)的密鑰進(jìn)行加密的,而所有這些隨機(jī)密鑰最后又都是由一個(gè)主密鑰進(jìn)行加密的。用戶(hù)是可以自己自主定義這個(gè)主密鑰的,這樣就保證了用戶(hù)自己是唯一能夠加密和訪問(wèn)這些關(guān)鍵業(yè)務(wù)數(shù)據(jù)或個(gè)人隱私信息的人。
數(shù)據(jù)加密在我們的業(yè)務(wù)中一直都是一個(gè)優(yōu)先級(jí)比較高的工作。我們會(huì)持續(xù)不斷地對(duì)數(shù)據(jù)加密改進(jìn),讓數(shù)據(jù)加密能夠更方便地使用,這樣用戶(hù)能更好地保護(hù)自己和自己的客戶(hù)。
9.網(wǎng)絡(luò)的重要性
AWS業(yè)務(wù)已經(jīng)支撐了很多不同種類(lèi)的負(fù)載,從大容量事務(wù)處理到大規(guī)模視頻轉(zhuǎn)碼,從高性能并行計(jì)算到巨大的網(wǎng)站流量等等,所有這些負(fù)載對(duì)網(wǎng)絡(luò)都有非常獨(dú)特的需求。
在數(shù)據(jù)中心布局和運(yùn)維的創(chuàng)新方面,AWS已經(jīng)開(kāi)發(fā)出了一種獨(dú)特的新技術(shù),這讓我們能夠提供更加靈活的網(wǎng)絡(luò)基礎(chǔ)設(shè)施去滿(mǎn)足不同用戶(hù)的不同負(fù)載的需求。我們?cè)谶@個(gè)過(guò)程總學(xué)習(xí)到,為了能夠讓用戶(hù)實(shí)現(xiàn)自身的目標(biāo),我們必須開(kāi)發(fā)自己的網(wǎng)絡(luò)硬件解決方案。這也讓我們能夠滿(mǎn)足我們一些定制化的需求,例如,為了確保最高等級(jí)的安全性,我們可以在網(wǎng)絡(luò)上將不同的用戶(hù)彼此隔離開(kāi)來(lái)。
另一個(gè)AWS通過(guò)自己設(shè)計(jì)的網(wǎng)絡(luò)硬件和軟件解決方案去進(jìn)一步幫助用戶(hù)改善性能的例子就是解決虛擬機(jī)之間的網(wǎng)絡(luò)訪問(wèn)。因?yàn)榫W(wǎng)絡(luò)訪問(wèn)是一個(gè)共享的資源,用戶(hù)之前經(jīng)常會(huì)遇到網(wǎng)路擁堵的問(wèn)題。AWS后來(lái)開(kāi)發(fā)了能夠支持單根IO虛擬化技術(shù)的NIC,它能夠讓我們給每個(gè)虛擬機(jī)虛擬出自己的NIC,這個(gè)做法有效降低了網(wǎng)絡(luò)延遲兩倍以上。
10.不設(shè)守門(mén)人
為了給用戶(hù)提供一個(gè)更加廣闊和深度的服務(wù)平臺(tái),AWS團(tuán)隊(duì)陸續(xù)開(kāi)發(fā)和提供了越來(lái)越多的服務(wù)和功能。不過(guò)AWS遠(yuǎn)不限于我們目前已經(jīng)提供過(guò)的這些功能和服務(wù),我們的很多合作伙伴基于AWS提供的服務(wù)進(jìn)一步擴(kuò)大和豐富了整個(gè)AWS生態(tài)系統(tǒng)。
比如,我們的合作伙伴Stripe利用我們的服務(wù)提供的支付服務(wù),以及Twilio利用AWS服務(wù)提供的網(wǎng)絡(luò)電話(huà)業(yè)務(wù)等。我們的很多用戶(hù)基于AWS服務(wù)開(kāi)發(fā)出自己的平臺(tái),以解決各自垂直領(lǐng)域的一些問(wèn)題。例如飛利浦開(kāi)發(fā)了用于健康數(shù)據(jù)管理的數(shù)字平臺(tái)Healthsuite Digital Platform,Ohpen在AWS基礎(chǔ)上開(kāi)發(fā)了一個(gè)零售銀行平臺(tái),Eagle Genomics開(kāi)發(fā)了基因處理平臺(tái),這樣的例子還有很多。
在AWS平臺(tái)上,我們是不設(shè)守門(mén)人(gatekeeper)的,因此我們不會(huì)告訴我們的合作伙伴他們?cè)贏WS平臺(tái)上什么可以做、什么不可以做。“沒(méi)有守門(mén)人”這一點(diǎn)能夠激發(fā)更多、更好地創(chuàng)新。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.guhuozai8.cn/
本文標(biāo)題:我在打造AWS的10年里學(xué)到的10條經(jīng)驗(yàn)
本文網(wǎng)址:http://www.guhuozai8.cn/html/news/10515519229.html