日期: 2016年9月10日
上一篇文章,我摘錄了《程序員的吶喊》。這本書有趣的內容太多,今天再摘錄一段。
1、
亞馬遜公司不僅是世界最大的網絡書店,還是世界最大的雲服務商。它是怎么實現從電商到雲商的轉變呢?
一切都是CEO傑夫·貝索斯促成的,他對市場有着超乎常人的理解和預見。
2、
2000年前后,貝索斯有一次在員工大會上提到,各種辦公工具、書籍、影音制品都可以數字化,所以也意味着很容易盜版。數字產品可能會利潤越來越低,很快就不再產生任何收入了。
所有的民用工業品也都很不妙,服裝和電子消費品的消費周期越來越短。連烤爐這種東西,也沒人想要去年的型號。總之,賣這些東西,看上去也不太會賺大錢。
亞馬遜未來靠什么賺錢,貝索斯不僅憂心忡忡。
3、
2002年,貝索斯突然向全公司發布了一道指令。
(1)從今天起,所有的團隊都要以服務接口的方式,提供數據和各種功能。
(2)團隊之間必須通過接口來通信。
(3)不允許任何其他形式的互操作:不允許直接鏈接,不允許直接讀其他團隊的數據,不允許共享內存,不允許任何形式的后門。唯一許可的通信方式,就是通過網絡調用服務。
(4)具體的實現技術不做規定,HTTP、Corba、PubSub、自定義協議皆可。
(5)所有的服務接口,必須從一開始就以可以公開作為設計導向,沒有例外。這就是說,在設計接口的時候,就默認這個接口可以對外部人員開放,沒有討價還價的余地。
(6)不遵守上面規定,就開除。
他意識到,亞馬遜現有的賣書送書的基礎設施,其實可以變成一個非常出色、可定制的計算平台,讓用戶付費使用。但是前提是,整個基礎設施必須改造成面向服務的架構。
4.
接下來的幾年里,亞馬遜全公司都轉向了面向服務的架構(SOA)。這個過程中,工程師們得到了大量的經驗教訓。
教訓一:SOA架構的錯誤定位,非常麻煩。
一個請求可能要經過20次服務器調用,才能找到問題的真正所在。通常,單單是問題的定位就要花費15分鍾到幾個小時,除非搭建大量的外圍監控和報警措施。
教訓二:同事也是潛在的 DOS 攻擊者。
公司內部某個小組,會突然對你的服務發起大量請求。除非每個服務都設有嚴格的用量和限量措施,否則根本無法保證可用性。
教訓三:監控和質量保障(QA)是兩回事。
監控一個服務的時候,可能會得到"一切正常"的回復。但是很有可能,整個服務唯一還正常工作的部分,就是這個回應"一切正常"的模塊。只有完整地調用服務,才能確定服務是正常的。
這意味着,真正監控一個服務,必須做到對所有的服務和數據進行完整的語意檢查,否則是看不出問題的。如果做到了這一點,本質上就是在做自動化 QA 了。
教訓四:必須有服務發現機制。
面對成百上千的服務時,沒有服務發現機制是不可想象的。這又離不開服務注冊機制,而它本身也是一個服務。亞馬遜有一套統一的服務注冊機制,可以通過編程的方式找到所有服務,包括一個服務有哪些API,目前是不是運行正常,在什么位置等。
教訓五:必須有沙箱用來調試
如果代碼中調用了他人服務,查找問題的難度要高很多,除非有統一的方式在沙箱里運行所有服務,否則幾乎不可能進行任何調試。
教訓六:不能信任任何人
團隊采用服務的方式進行合作以后,基本上就不能信任其他團隊了,正如不能信任第三方工程師一樣。
(完)