亞馬遜1萬億市值背後的架構經驗

關於做者

原文做者Werner Vogels做爲亞馬遜首席技術官(CTO)和副總裁,是AWS的靈魂人物,也是雲計算領域響噹噹的頂級專家。Werner Vogel擁有計算機博士學位,主要負責驅動亞馬遜的技術創新,Werner還曾是康奈爾大學計算機系的研究科學家,主要研究高可靠高可擴展的企業系統。2004年加入亞馬遜擔任系統研究總監,2005年1月被任命爲CTO和副總裁至今。Werner Vogels也是殊榮多多,因其在雲計算的教育和推廣方面的貢獻,被信息週刊(InformationWeek)評爲「2008年度CTO/CIO」;2010年被ReadWriteWeb讀者投票評爲「最具影響力的雲計算高管」。html

 

亞馬遜在2006年3月14日發佈AWS,到如今差很少10年了。回首過去的10年裏,咱們在構建 安全,高可用性,可擴展性,低成本的服務方面積累了幾百條經驗與教訓。 因爲AWS是建設並在全球運營這些服務的先驅,這些教訓對咱們的業務相當重要。正如咱們之前屢次說, 「沒有壓縮經驗的算法」,每個月有超過百萬的活躍客戶,這些客戶服務幾個億的用戶,在這個過程咱們不乏機會積累經驗並持續優化從而爲客戶提供更好的服務。算法

我選擇了下面這些經驗教訓,與你們分享,但願它們對大家有用。安全

1. 構建不斷進化的系統

幾乎從第一天開始,咱們知道本身開發的軟件在一年後將不會繼續運行。咱們須要從新審視和改進架構,以確保咱們能夠解決訂單規模增加一到二個數量級所帶來的問題。 可是咱們不能採起停電檢修這種舊方法升級系統,這是由於遍及世界各地的許多業務須要依靠咱們的平臺提供的7*24小時高可用性服務。咱們須要創建這樣架構:可以在不中止服務的狀況下引入新的組件。Marvin Theimer,亞馬遜傑出工程師,曾開玩笑地說,亞馬遜S3的演變能夠描述爲從當初的單引擎飛機,隨着時間的推移飛機不斷升級,先是升級到737,而後一組747的,如今成了3805的空中艦隊。在此期間,咱們在飛行過程當中完成加油,而客戶甚至沒有覺察到這一點。服務器

2. 視異常爲常態

異常老是會發生的,隨着時間的推移,一切都將會出現異常:從路由器到硬盤,從操做系統到內存單元,從瞬態錯誤到永久性故障。不管你使用的是最高品質的硬件或最低成本的硬件,這些老是會發生的。在大規模系統中更是如此,例如,在S3中處理和存儲的萬億級交易,任何異常,即便是最小的可能性也將成爲現實。部分這樣的異常能夠事先預見的,但更多的異常卻在設計和開發過程當中未能被發現。網絡

咱們須要開發一個視異常爲常態的系統,即便咱們不知道會有什麼樣的異常。即便「房子着火了」,系統也須要保持運行。重要的是在整個系統在不宕機的狀況下可以處理這些異常。咱們掌握隔離異常與控制異常的影響範圍的方法從而使整個系統可以正常運行。架構

3. 提供基元而不是框架

咱們很快意識到,客戶的需求是不斷變化的。當客戶擺脫傳統的IT硬件和數據中心的限制,他們開始使用感興趣卻沒有使用過的模式搭建系統。所以,咱們努力作到超級敏捷以確保知足客戶的需求。框架

其中一個最重要的策略是向客戶提供的基元和工具,讓客戶從中選擇最適合他們的集合,而不是隻提供一個框架,迫使他們不得不使用。這種作法使咱們的客戶取得了成功,隨後的AWS服務也一樣利用這些客戶已經熟悉的基礎服務。less

一樣重要的是咱們不知道客戶下一個關心問題是什麼,直到他們開始使用咱們的服務。這就是爲何咱們常常用最少的功能集提供新的服務,讓咱們的客戶可以幫助推進產品路線圖規劃與新功能的開發。工具

4. 自動化是關鍵

提供雲計算服務不一樣於開發並交付軟件,管理大規模系統須要不一樣的思惟方式,以確保知足用戶的高可用性,高性能和可擴展性的需求。性能

這其中關鍵的一點是儘量地實現自動化管理以免容易出錯的手動操做。要作到這一點,咱們須要實現管理API從而管理咱們的業務的關鍵功能。AWS能夠幫助客戶作到這一點。經過爲應用程序的每個分解組件提供管理API,從而應用自動化的規則來保證可靠性和預期的性能。

若是你須要SSH到一個服務器或一個實例,那麼你仍然須要更多的自動化,這是一個衡量自動化水平的好方法。

5. API是一成不變的

這是咱們從亞馬遜零售業務經驗中吸收的教訓,它的重要性甚至超過了AWS中那些以API爲中心的業務。 一旦客戶開始使用咱們的API構建他們的應用程序和系統,修改這些API是不可能,因咱們修改這些API,會影響客戶的業務運營。咱們只有一次機會定義API,因此設計API是一個很是重要的工做。

6. 監控資源

當構建一個服務,必定要有服務及其運營成本的數據以肯定相應的計費方式,尤爲是對於運行高營業額-低利潤率的業務。AWS理所應當關注服務的成本,這樣咱們在爲客戶的提供服務的同時可以明確在哪些地方能夠提升運營效率,以進一步削減成本,以更低的價格回饋客戶。

在創業初期,咱們不知道S3服務應該採用哪一種計費方式:咱們曾認爲應該對存儲和帶寬資源計費;通過一段時間,咱們認識到請求的數量也應當計費。若是客戶有許多微小的文件,即便他們上百萬次數請求服務,消耗的存儲和帶寬都不會很高。咱們不得不針對資源使用各個維度調整計費方式使AWS成爲是一個可持續發展的業務。

7. 從一開始集成安全

保護你的客戶應該永遠是你的首選,對於AWS來講亦是如此。無論運營的角度,仍是策略方面,這將永遠是咱們投入的頭號領域。

咱們很快地發現只有在一開始就把安全考慮進去才能提供安全的服務。安全團隊的工做不是服務開發完成以後進行驗證,他們必須在服務設計的第一天確認安全已經落實,且穩如泰山。總之對於安全,沒有任何妥協。

8. 加密是一等公民

加密是爲確保客戶能控制誰有權訪問他們的數據一個關鍵機制。十年前,加密工具和服務很難使用,直到幾年前咱們學會更好地將加密集成到咱們的服務當中。最先的加密是從S3服務端開始的。若是您想檢查咱們的數據中心的任何磁盤,任何數據都不可訪問的。但隨着亞馬遜推出CloudHSM(硬件安全模塊)和Amazon Key Management Service(密鑰管理服務),客戶能夠加密本身的密鑰,從而再也不須要AWS來管理鑰匙。一段時間以來,每一個新服務均支持加密。例如,Amazon Redshift的每一個數據塊默認以隨機密鑰加密,隨後這些隨機密鑰被私鑰再加密。私鑰由客戶提供,確保他們是惟一能夠解密和訪問他們的關鍵業務數據或我的身份信息。 加密仍然是咱們業務的重點。咱們將繼續爲咱們的客戶提供更加便捷的加密方式,使他們可以更好地保護自身及其客戶的數據。

9. 網絡很重要

AWS已經支持許多不一樣類型業務:大規模的事務處理,大規模網站流量,視頻轉碼,高性能並行計算。其中每一個業務具備獨特的要求,但都涉及到網絡。 利用AWS特有的數據中心技術,咱們實現了彈性網絡以知足客戶的各類不一樣網絡負載。隨着時間的推移,咱們確信本身開發的硬件解決方案可以幫助客戶實現他們的目標。這使咱們可以知足很是具體的要求,好比實現不一樣AWS用戶在網絡方面達到最高級別的安全(也就是實現不一樣租戶之間的網絡隔離)。

AWS設計的網絡硬件和軟件是如何進一步提升咱們的客戶性能的另外一個成功的例子是解決虛擬機的虛擬網絡訪問的問題。因爲網絡接入是不一樣客戶共享的,致使客戶的網絡訪問時常有明顯的抖動。開發一個支持SRIOV網卡讓每一個虛擬機擁有自身的虛擬網卡,從而使延遲時間下降2倍以上,並在延遲網絡環境的改善超過10倍。

10. 保持開放

隨着時間的推移,AWS團隊經過提供多種服務和功能已經爲客戶創造了很是普遍且深厚的平臺。AWS上現有服務數量遠遠超過咱們開發的服務數量:經過咱們的合做夥伴,該平臺不斷擴展新的方向,已經成爲一個豐富的生態系統。

例如,咱們合做夥伴Stripe在AWS上爲Twilio提供支付服務。還有許多客戶基於AWS構建本身的平臺服務於特定垂直需求:飛利浦正在建設本身的Healthsuite數字平臺來管理醫療數據,Ohpen已經創建了AWS零售銀行業務的平臺,Eagle Genomics已經創建了一個基因處理平臺,還有不少。最重要的是,目前在AWS平臺上沒有條條框框告訴咱們的合做夥伴,他們能夠作什麼和不能作什麼。 沒有條條框框的限制解放了創新,從而誕生了許多意想不到的發明,這是必定要遵循的原則。

 

原文:https://www.allthingsdistributed.com/2016/03/10-lessons-from-10-years-of-aws.html

相關文章
相關標籤/搜索