對話亞馬遜CTO:自治的小型團隊,運營着亞馬遜

對話亞馬遜CTO:自治的小型團隊,運營着亞馬遜
2018年8月9日,Amazon.com CTO Werner Vogels(沃納·威格爾)來到了AWS技術峯會北京站上。筆者有機會與Werner Vogels進行了一對一對話,瞭解了亞馬遜網站和AWS的技術思想,以及那些不爲人所熟知的故事。

很多人都知道,2006年亞馬遜發佈了S3存儲服務,併發布了Amazon Web Services(即AWS)這個品牌;但可能很多人都不知道,亞馬遜早在2002年的時候,就已經發布了AWS服務,當時發佈都是電商類相關的網絡服務,包括搜索、產品目錄和購物車等。2006年相當於重新發布了AWS品牌,但這次發佈的S3已經是雲服務的範疇,由此拉開了全球公有云的大時代。

而AWS的技術思想,其實是爲了解決早年亞馬遜網站在擴展方面遇到的技術挑戰。早年的亞馬遜網站是一個整體的軟件包,數據庫在後臺運行;爲了實現整個網站架構的可持續擴展,亞馬遜在很早的時候就自創了類似後來的SOA面向服務的架構,而當面向服務的架構中的每一個“服務”也膨脹到巨大規模後,又再次自創了類似後來的微服務架構。可以說,整個亞馬遜的技術史,就是永遠比其它公司早5-10年遇到新的技術挑戰,在解決擴展性問題的過程中,衍生全新的技術架構和體系,而這些新的技術架構和體系後來都應用到了AWS上。

無論對於亞馬遜網站還是AWS雲業務,都是由一個一個小而自治的團隊負責新功能的開發、上下線及運營。對於亞馬遜網站來說,快速行動比追求技術連貫性更重要,在亞馬遜網站內部也允許技術上的重複或冗餘。不過對於AWS業務來說,由於是針對外部用戶,因此會保持對外接口的一致性。小型而自治的團隊,是整個亞馬遜與AWS的技術組織模式。

對於亞馬遜網站來說,並沒有IT團隊與業務團隊之分,IT人員與業務人員組成一個一個小型而自治的團隊,自行根據用戶的需求而做出技術和業務決策。之所以這樣,是因爲亞馬遜認爲技術人員必須深入到業務中,才能真正獲得業務知識並與業務團隊一起快速響應客戶需求。這樣一個新型的企業組織模式,正是當前的數字化轉型過程中,傳統企業所期望的敏捷模式。

數字化轉型是關於人而非技術。隨着以AWS爲代表的雲計算技術平臺的普及,技術的差異化競爭優勢正在消失,甚至亞馬遜的競爭對手也可以在AWS的平臺上,展開與亞馬遜的競爭。因此,更爲關鍵的是,如何爲客戶真正創造獨特的能力與價值?

且看Werner Vogels的精彩觀點。

問:首先,我想知道爲什麼你這兩年來經常來中國,特別是今年。

Werner Vogels:中國是一個重要的市場,我們在中國設立了第二個區域,這對許多客戶來說非常重要。而且我很喜歡去客戶所在的地方,我也很喜歡這裏,我們的客戶在這裏,他們是否面臨特殊的挑戰,這都就是我們要爲他們解決的問題。

許多客戶都是全球性運營,不僅僅是在中國地區,也在中國以外的地區運營。我們可以幫助這些客戶解決支付、合同等問題,也可以幫助解決客戶的任何問題。我們通過客戶的反饋,來尋找能夠幫助到客戶的機會。

問:談到全球運營,您如何看待雲計算與數據中心外包之間的關係?

Werner Vogels:需要在兩個層面看數據中心外包:一個是許多企業正在使用的傳統方式,爲客戶提供計算能力,爲使用的虛擬私有服務器時間而支付費用;另一個層面是爲管理服務。我認爲計算資源外包與AWS非常相關,很多外包服務的客戶向AWS遷移,這是可以互相轉換的。而對於管理服務而言,卻是完全不同的事情,現在這些客戶也正在轉向AWS,在AWS那裏有更實惠的價格。

在美國有一個很好的例子,這就是RackSpace。RackSpace曾經基本上爲客戶提供數據中心外包服務,也提供了一定程度的管理服務(managed service)。現在RackSpace是在AWS上運行的好夥伴,他們還有一些外包數據中心,更多的則運行在AWS上。RackSpace業務中,有很重要的一部分是爲客戶提供管理服務,包括CRM和ERP等。除了RackSpace之外,還有其它的外包數據中心合作伙伴,也在AWS之上建立了管理服務業務。

問:您認爲現在客戶更需要數據中心外包,還是在AWS之上的託管雲服務?

Werner Vogels:這取決於客戶本身的成熟程度和技術運營的成熟度。有許多企業將所有IT都外包出去後,很難將這些業務帶回企業內部,因爲他們已經沒有相應的專業知識了,因此他們需要基於AWS的管理服務供應商。如果企業內部具有這些專業的技術知識,那麼他們就可以輕鬆地在AWS之上管理應用程序,而無需管理服務合作伙伴。

數據中心外包與雲計算有很大不同。傳統的數據中心外包需要非常長期的合同、受限制的環境、沒有計算彈性,無論客戶是否使用都需要爲合同付費,而且虛擬機可能是唯一可行的業務。

問:怎麼看SOA面向服務的架構?亞馬遜2010年財報中曾提及,SOA是AWS的架構基礎。

Werner Vogels:我們在SOA被髮明之前就已經開始使用“服務”的方式了,甚至在AWS之前就已經開始了。

對於亞馬遜的零售業務,我們在1990年代編寫了當時的應用程序,那時的亞馬遜軟件架構無法進一步擴展。當時的亞馬遜網站就是一個巨大無比的應用,數據庫運行在後臺,而這樣架構確實無法再擴展了,必須找到一種新的可擴展的方式,這就是現在稱之爲“服務”的方法。我們大約在2000年左右發明了這樣一種軟件編寫的方式,賦予一小段代碼以邏輯、數據和API接口,必須通過API獲取數據、與代碼交互,這樣就可以將整個電子商務應用切割成更小的構建模塊,每個構建模塊都可以成爲“服務”。

我們在“服務”方面獲得了很多經驗。隨着時間的推移,亞馬遜開始添加基礎設施服務,包括如何管理計算、如何管理數據庫、如何管理存儲,這其中的大部分也能成爲服務。爲什麼?因爲我們希望讓業務邏輯來負責和管理計算的擴展,而不是由人工來管理。我們把這樣的技術和技術思想也應用到了AWS,從頭開始構建AWS,這樣可以滿足最高的安全要求。

對於AWS來說,亞馬遜網站也是一個客戶,但它對安全的要求則與其他客戶完全不同。我們希望確保以最佳方式保護我們的客戶,所以我們從頭開始構建了AWS的所有軟件,但是以“服務”的方式,因爲這樣可以達到最高水平的競爭力。任何人都可以通過使用這些服務來訪問我們的軟件或功能。我相信無論在亞馬遜內部或AWS,這種軟件服務的方式都取得了巨大的成功,在亞馬遜內部現有1000多種不同的服務,AWS則提供了125種不同的服務。

在另一方面,我不認爲SOA是一種技術,它更像是一種架構原則。當我們在最開始構建了這些服務後,就進入了另一個階段,因爲我們後來發現這些服務變化得非常快、也變得越來越龐大,需要將它們進一步分解成更小的構建模塊,現在稱之爲微服務。如果在那時有類似ECS或Kubernetes這樣的容器技術,我們肯定會用,但這些技術在那時還不存在。在亞馬遜的身上會持續出現這樣的現象,我們遇到挑戰可能要比其它公司早5-10年,這是因爲整個亞馬遜的規模所致。因此,一旦我們構建了AWS,就可以爲客戶提供別人以前從未構建過的技術。

問:怎麼看微服務?AWS與微服務的關係是什麼?

Werner Vogels:微服務是一種獨立組件,可以進行獨立擴展的技術。例如,登錄組件是所有頁面都要用到獨立組件,而地址簿組件只有在支付頁面纔用到,因此這兩個服務有着不同的擴展要求。如果它們都位於同一軟件包中,則地址簿服務必須與登錄服務進行相同級別的擴展。而通過分解它們,可以允許登錄服務隨着特定需求而變大或變小,而地址簿服務則可以獨立於登錄服務而擴展。

這就是我所說的微服務方法,但這與AWS的方式無關。例如AWS提供DynamoDB,你無需關心它到底是如何擴展的。SNS或SQS等服務,用戶都不必考慮具體是如何實現的,而只要知道它們可用、可靠、安全、跨多個可用區、性能可預期,就夠了。AWS不是微服務,因爲客戶在使用AWS服務,而微服務是用於開發的。

問:AWS服務最初是在2002年開始的,對吧?在2006年重新發布了AWS。

Werner Vogels:略有不同。在2002年的時候,我們開發了很多流行的零售服務,包括爲了幫助商家開設電商門店,就需要產品目錄和搜索服務、購物車服務等。當時開發的服務,多是電商相關的服務,主要是與亞馬遜電商基礎設施對接。這些都納入了後來的亞馬遜合作伙伴計劃。當我們在2006年發佈S3的時候,覺得還是要延用AWS這個名字。

問:最近聽說亞馬遜決定在2020年將Oracle從其核心業務中完全去除?

Werner Vogels:我們的很多客戶都喜歡在AWS之上使用Oracle,我們可以爲客戶運行Oracle,這絕對沒問題。我無法評論有各種各樣關於Oracle的傳言,但這個故事可以分享:2004年的時候,我們(亞馬遜網站)在一年中最繁忙的一天,發生了重大的擴展事故,這要追溯到Oracle數據庫,這個事故讓整個電子商務服務宕機了一整天。這時我們開始意識到我們正在以非常不同的規模使用數據庫技術,所以我們決定要深入研究是否可以解決這個問題。

我們深入瞭解了我們是如何使用這些數據庫,結果發現70%的操作與關係型數據庫無關,都是Key-value查詢。例如購物卡,沒有人關心購物卡內的內容,也不需要搜索這些內容,而是只需要識別卡,並把這張購物卡交給客戶就可以了。從來沒有一個諸如“給我所有的含有Harry Portter的購物卡”的查詢,這種情況從未發生過。因此我們70%的數據庫操作與關係型數據庫無關,我們意識到可以自己構建數據庫技術,有針對性解決特定問題。

這是DynamoDB的起源,之前被稱爲Dynamo,是爲永續業務而構建的,完全專注於構建可靠的可跨多數據中心的Key-Value數據庫。由此,我們緩慢但堅定地逐漸消除了對關係型數據庫的依賴,主要是因爲我們認爲每個特定的現代應用都需要不同類型的數據庫存儲,包括Key-Value、文檔、圖或關係。對於我們的許多客戶來說,會利用所有這些數據庫技術,這就是AWS提供這麼多種數據庫的原因。而且,我們的許多客戶也開始要求或需要比高端關係數據庫更好的數據庫,而且是雲原生的數據庫。

爲此我們構建了一個真正的雲原生數據庫Amazon Aurora。要知道,大多數商業關係型數據庫都是20世紀90年代的技術,這些關係型數據庫的核心架構方面後來並沒有更多的發展。另一方面,Aurora是一個完全雲原生的數據庫,真正利用多個數據中心的所有功能,用戶不再需要擔心擴縮容問題,Aurora是一個真正的雲原生數據庫。我們相信,考慮到Aurora的優勢,亞馬遜最終肯定會繼續使用Aurora,並看它能帶我們到哪裏吧。

問:亞馬遜和AWS是如何管理技術團隊的?

Werner Vogels:我並不管理任何團隊,我不是亞馬遜的工程VP(VP of Engineering)。可以分享的是,不論是亞馬遜還是AWS,我都不直接負責技術決策,我可以參與評估。技術團隊是自治的,他們可以自己做出技術決策,而不需要我的管理。比如DynamoDB可以自己做出技術路線規劃,因爲他們離用戶最近,從用戶那直接獲得反饋。95%的AWS功能和服務都是客戶直接要求的,這比什麼都重要。

問:如何確保技術架構的一致性?

Werner Vogels:看一下亞馬遜的零售業務,快速行動要比架構連貫性更重要。每個團隊都可以採用自己的技術,從而爲用戶提供最好的服務。這不應該是自上而下的管理,我們不會要求團隊採用Java,而是由團隊自行決定;如果他們覺得Ruby是更好的選擇,那麼就可以使用Ruby而不用要求獲得批准。

當然,我們希望確保我們的工程師能夠獲得正確工具以完成任務。但是每一個團隊都是自治的,他們可以自己做決定。對於整個亞馬遜網站來說,如果一個地方需要用到某種技術,可能在另一個地方也會用到類似的技術,我們允許重複或冗餘。因爲我們更相信自治和快速行動,而不是自上而下、讓團隊窒息的控制。

AWS是另一回事。AWS面向的客戶與亞馬遜電商不同,因此AWS是要求技術架構的一致性,我們希望爲AWS客戶提供一致的接口,對於API的開發也是這樣。除此之外,到底是如何實現這些服務的,這取決於團隊自身。

問:對於亞馬遜來說,IT團隊是自治的小型團隊?

Werner Vogels:請記住亞馬遜是一家技術公司,它不是零售商,因此亞馬遜沒有IT部門。IT部門所做的工作涉及電子郵件和其他一些服務,但電子商務領域的運營已深深融入到亞馬遜業務中。比如推薦鞋子的技術團隊與鞋子業務部門一起工作,技術要與業務團隊深深融合。爲什麼?因爲鞋子的推薦引擎與書籍的推薦引擎相比,非常不同。在鞋子推薦中,希望最大限度地減少退貨次數,並且希望確保人們的選擇與實際需求的尺寸或顏色完全匹配。推薦鞋子是一種非常不同的方法,特別是因爲鞋子的尺寸很難選擇,如果選擇9.5號,也可以試試9號,因爲這兩個尺寸的鞋子可能都適合。無論如何,亞馬遜沒有IT部門、沒有開發部門,技術團隊與實際的鞋子銷售員關係密切,因爲他們需要非常具體的關於鞋子的業務知識。

問:現在有很多傳統公司希望引進亞馬遜的方法,他們希望將IT嵌入到業務中,只是不知道怎麼做。

Werner Vogels:我們的客戶正經歷數字化轉型的挑戰,而數字化轉型是關於人而非技術。正如你所提到的,如果外包所有的IT,是不能突然把IT帶回到公司內部的,因爲已經沒有相應的專業知識了。或者如果曾經僱用的人都非常保守,只想運行SAP ERP系統,而不想成爲一個風險承擔者,也不能責怪他們不能在第二天就突然變得非常迅速,應該爲數字化轉型聘請不同的人。所以我認爲許多公司進行數字化轉型所面臨的最大挑戰是人員管理,如何讓合適的團隊做正確的事情。例如AWS認證培訓總是滿員,我們已經無法更快速的培訓了,而是需要與許多培訓公司一起工作,培養更多的培訓師,才能培訓更多的AWS人員。

我們聽到的許多客戶都是人員的問題,遠超過技術問題。如果使用雲,就能更快的行動,但如何做到這一點?如何找到人去落實?我們的許多客戶發現這很有挑戰性,AWS專業服務開發了一個完整的場景手冊,圍繞着我們所看到的那些成功公司的實踐,比如改變組織結構等。我們試圖盡力幫助我們的客戶,但這些公司應該僱用合適的人,找到新的組織結構,以便能夠快速行動。

問:聽說在一開始的時候,亞馬遜在一棟樓,AWS在相鄰的另一棟樓,方便AWS說服亞馬遜使用AWS。

Werner Vogels:這我不知道,他們總是在一棟樓裏工作,那些時候還有點混亂。早期的時候,我們研究不同的技術,EC2是一支在南非的AWS團隊所開發的,S3是在西雅圖開發的。我記得早期設計S3的時候,並未想到它會變成多大,但我們添加了兩個零以確保安全。我們在前三個月繪製了藍圖,並且我們很幸運地採用了非常好的軟件開發方法。我們知道軟件必須隨着時間而發展,基本上每上一個新規模的時候,可能就不得不重新架構。我們非常幸運能夠提前做出非常好的決定,以確保能夠構建我們的系統,並能夠隨着時間的推移不斷髮展這個系統,而不讓客戶受到影響。

問:你能告訴我任何關於AWS早期如何說服亞馬遜團隊的故事嗎?

Werner Vogels:服務需要有選擇性,不需要“你應該在AWS上運行”這樣自上而下的命令,沒有必要。如果技術足夠好,能夠以更輕鬆的方式完成工作,那麼自然會用它。亞馬遜的大部分已經遷移到AWS,爲什麼?因爲它讓工程師的生活變得很簡單。亞馬遜是非常苛刻的客戶,實際上亞馬遜可能不是最大的客戶,但亞馬遜對於AWS來說並沒有特殊性,任何人從AWS上都能獲得同樣的技術服務,甚至可以在AWS平臺上與亞馬遜競爭。

問:經過這些年,能否總結一下AWS成功的祕訣?

Werner Vogels:以客戶爲中心。當我們啓動AWS時,我認爲IT的一次重大革命已經發生了,但卻採用了一種截然不同的經濟模式。在過去,降低成本的唯一方法是與IT提供商簽訂長期合同。但作爲客戶,其實從來沒有掌握IT,總是技術供應商在負責。當我們開始構建AWS時,不僅希望建立真正偉大的新型可擴展技術,以幫助公司實現互聯網規模,還希望成爲地球上最以客戶爲中心的IT提供商。這意味着我們需要從根本上重寫經濟模式,只需爲所使用服務而付費,而無需提前付費。這非常關鍵,從根本上改寫整個IT行業。當我們建立AWS時,我們真的想要一個非常不同的經濟模式,實現真正的以客戶爲中心。

問:說到客戶,AWS怎麼看大企業?

Werner Vogels:以美國新聞集團爲例,這是全球性的大型公司,他們建立了64個數據中心,然後關閉了60個數據中心,將所有轉移到AWS;通用電氣的60個數據中心轉移到 AWS。即使是曾經的初創公司,Airbnb使用AWS的規模要比大多數大企業還要多,Uber或Twitter等都在雲環境中成長,雲對他們來說非常重要。

Slack這樣的新互聯網規模企業,都是100%在AWS上運行,而它們如果沒有AWS的話,甚至無法啓動。世界上最大的企業正在使用AWS,包括中國的小米,以及一些年輕的企業如獵豹移動、musical.ly等,所有這些年輕企業以及這些初創企業,我們稱之爲互聯網規模公司,他們就在互聯網上成長,他們的用雲量遠超傳統企業。

如果你回到15年前會發現有一篇很好的文章,叫做“IT並不重要”,該文的大意是IT將不再是企業差異化競爭力所在。真正讓公司與衆不同的,是公司爲客戶構建獨特的能力。因此最好的工程師應該去做與衆不同的事情,而不是做每個人都必須做的事情。(文/寧川)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章