架構(gòu)真經(jīng) : 互聯(lián)網(wǎng)技術(shù)架構(gòu)的設(shè)
前言
感謝你對本書第2版感興趣!作為一本入門、進修和輕量級的參考手冊,本書旨在幫助工程師、架構(gòu)師和管理者研發(fā)及維護可擴展的互聯(lián)網(wǎng)產(chǎn)品。本書給出了一系列規(guī)則,每個規(guī)則圍繞著不同的主題展開討論。大部分的規(guī)則聚焦在技術(shù)上,少數(shù)規(guī)則涉及一些關(guān)鍵的思維或流程問題,每個規(guī)則對構(gòu)建可擴展的產(chǎn)品都是至關(guān)重要的。這些規(guī)則在深度和焦點上都有所不同。有些規(guī)則是高級的,例如定義一個可以應(yīng)用于幾乎任何可擴展性問題的模型;其他的則比較具體,可能用來解釋一種技術(shù),例如怎么修改HTTP頭來最大化內(nèi)容緩存。在本版中,我們增加了成功的互聯(lián)網(wǎng)產(chǎn)品公司中首席技術(shù)官和企業(yè)家的故事,這里涉及的公司既包括初創(chuàng)企業(yè)也有財富500強公司。這些故事有助于說明規(guī)則是如何形成的,以及它們?yōu)槭裁丛诤A渴聞?wù)處理環(huán)境中顯得如此重要。沒有什么其他故事可以比亞馬遜更能說明在互聯(lián)網(wǎng)上急速擴展所遇到的需求和挑戰(zhàn)。里克·...
前言
感謝你對本書第2版感興趣!作為一本入門、進修和輕量級的參考手冊,本書旨在幫助工程師、架構(gòu)師和管理者研發(fā)及維護可擴展的互聯(lián)網(wǎng)產(chǎn)品。本書給出了一系列規(guī)則,每個規(guī)則圍繞著不同的主題展開討論。大部分的規(guī)則聚焦在技術(shù)上,少數(shù)規(guī)則涉及一些關(guān)鍵的思維或流程問題,每個規(guī)則對構(gòu)建可擴展的產(chǎn)品都是至關(guān)重要的。這些規(guī)則在深度和焦點上都有所不同。有些規(guī)則是高級的,例如定義一個可以應(yīng)用于幾乎任何可擴展性問題的模型;其他的則比較具體,可能用來解釋一種技術(shù),例如怎么修改HTTP頭來最大化內(nèi)容緩存。在本版中,我們增加了成功的互聯(lián)網(wǎng)產(chǎn)品公司中首席技術(shù)官和企業(yè)家的故事,這里涉及的公司既包括初創(chuàng)企業(yè)也有財富500強公司。這些故事有助于說明規(guī)則是如何形成的,以及它們?yōu)槭裁丛诤A渴聞?wù)處理環(huán)境中顯得如此重要。沒有什么其他故事可以比亞馬遜更能說明在互聯(lián)網(wǎng)上急速擴展所遇到的需求和挑戰(zhàn)。里克·達爾澤爾是亞馬遜的第一位首席技術(shù)官,在本書中他用自己的故事闡述了幾個規(guī)則。
馴服互聯(lián)網(wǎng)的狂野西部
從創(chuàng)新和行業(yè)破壞的角度來看,很少有像亞馬遜這樣成功的公司。自1994年成立以來,亞馬遜所做出的貢獻已經(jīng)重新定義了至少三個行業(yè):消費者商務(wù)、印刷出版和服務(wù)器托管。亞馬遜的所作所為已經(jīng)遠遠超出了行業(yè)破壞;他們一直是面向服務(wù)架構(gòu)、研發(fā)團隊建設(shè)和無數(shù)其他工程方法的思想領(lǐng)袖。亞馬遜的規(guī)模和全維度的業(yè)務(wù)擴展令人難以置信;該公司以傳統(tǒng)實體企業(yè)難以想象的速度不斷成長。自1998年以來,亞馬遜從年收入6億美元(根本就不是小企業(yè))增長到2015年驚人的1070億美元[1]。2015年世界上最大的零售商是沃爾瑪,其年銷售額為4857億美元[2]。但是沃爾瑪自1962年以來就一直存在,它花了35年的時間使銷售額攀升到1000億美元,而亞馬遜卻只用了21年。如果沒有一個或幾個出自亞馬遜的故事,那些自稱編纂的是來自于首席技術(shù)官口中并由他們創(chuàng)造的可擴展性規(guī)則的書將是不完整的。
杰夫·貝佐斯于1994年7月建立了亞馬遜(原名Cadabra),并在1995年推出Amazon.com作為在線圖書商。1997年,貝佐斯聘請了時任沃爾瑪信息技術(shù)副總裁的里克·達爾澤爾。里克領(lǐng)導(dǎo)亞馬遜研發(fā)團隊長達十年。讓我們和里克一起回顧他在亞馬遜職業(yè)生涯中的故事:
“當我在沃爾瑪時,我們有一個世界上最大的關(guān)系型數(shù)據(jù)庫支撐著公司的業(yè)務(wù)。但是亞馬遜團隊很快就明白了,那個巨大的單體數(shù)據(jù)庫根本就不適用于亞馬遜。即使在那個時候,亞馬遜系統(tǒng)在一個星期內(nèi)處理的交易比沃爾瑪系統(tǒng)在一個月內(nèi)要處理的交易量還要大。如果再綜合考慮不可思議的增長,那么很明顯單體的系統(tǒng)根本就跟不上節(jié)奏。有一天,杰夫[貝佐斯]帶我去吃午飯,我告訴他,我們需要把現(xiàn)在的單體系統(tǒng)拆分成服務(wù)。他說,“這很好,但是我們需要在這個業(yè)務(wù)的周圍建造一條護城河,以獲得1400萬客戶。”我解釋說,如果現(xiàn)在還不開始這些拆分工作,那么我們有可能撐不過圣誕節(jié)?!?/p>
里克接著說,“請記住,這是20世紀90年代中后期。研發(fā)分布式事務(wù)處理系統(tǒng)的公司鳳毛麟角。如果出現(xiàn)事務(wù)處理系統(tǒng)的交易量同比增長超過三倍,沒有幾個地方可以幫你提出如何解決擴展問題的方案。沒有任何規(guī)則手冊,也沒有任何專家曾經(jīng)做過或者經(jīng)歷過。這是一個嶄新的戰(zhàn)地前沿——一個完全荒涼的西部。但我們很清楚,要成功就必須把這些交易分散下去。與我在沃爾瑪成功所做的事情相反,如果我們要保障解決方案和組織可以擴展,那么就需要把解決方案和底層數(shù)據(jù)庫拆分成數(shù)個服務(wù)?!保ㄌ嵝炎x者注意,本書的第2章專門講解這類拆分。)
“我們開始著手將電子商務(wù)引擎和商店引擎從后端的訂單處理系統(tǒng)中拆分出來。這是亞馬遜所謂的面向服務(wù)架構(gòu)旅程的真正起點。各種各樣的事情都因此而發(fā)生,其中包括亞馬遜的團隊獨立性和API合同。最終,這項工作創(chuàng)造了一個新的行業(yè)[基礎(chǔ)設(shè)施即服務(wù)],并為亞馬遜網(wǎng)絡(luò)服務(wù)帶來了一個新的業(yè)務(wù)——那是另外一段故事。這項工作并不簡單;之前單體數(shù)據(jù)庫中的一些組成部分,諸如客戶數(shù)據(jù)——我們稱之為亞馬遜客戶數(shù)據(jù)庫或ACB——花了我們幾年的時間才搞清楚應(yīng)該怎么拆分。我們從交易量高的服務(wù)開始,并且可以對軟件和數(shù)據(jù)快速拆分,如前面描述的前端和后端系統(tǒng)。每做一個拆分都進一步分散系統(tǒng),從而獲得更大的擴展空間。最后,我們重新解決ACB這個老大難問題,終于在2004年左右完成了拆分?!?/p>
“團隊聰明得令人難以相信,但是偶然我們也有些幸運。我們并不是從來都沒有失敗過,但是一旦犯了錯,我們會迅速改正并且弄清楚該怎樣解決相關(guān)的問題。幸運的是,我們發(fā)生過的事故沒有像其他那些也在同一條道路上掙扎的公司損失那么嚴重,影響那么大。在建立這些分布式服務(wù)的過程中有一些重要經(jīng)驗來自于這些拆分,學(xué)習(xí)和掌握了諸如需要限制會話和狀態(tài)、遠離分布式的兩階段事務(wù)提交、通信盡可能保持異步等。事實上,對發(fā)布-訂閱模式的消息總線異步通信我并沒有強烈的偏好,沒有它的支撐,我不知道是否還可以拆分和擴展。我們還學(xué)習(xí)到,如果可能盡量讓事務(wù)在最終一致,除了支付以外,這具有廣泛的適用性。實時一致性的成本很高,如果人們意識不到這個差別,可讓事情暫時處于模糊狀態(tài),在后期同步。當然,也有一些人員或者團隊方面的學(xué)習(xí)經(jīng)驗,例如保持團隊規(guī)模足夠?。?],在團隊之間發(fā)生的服務(wù)調(diào)用需要簽訂特別的合約等?!?/p>
里克關(guān)于如何在10年時間內(nèi)領(lǐng)導(dǎo)亞馬遜可擴展性研發(fā)團隊的故事非常有價值。我們可以從他的見解吸取一些教訓(xùn),這些教訓(xùn)可以避免很多面臨可擴展性挑戰(zhàn)的公司走彎路。我們將引用里克和其他幾位著名的首席技術(shù)官及成功的互聯(lián)網(wǎng)產(chǎn)品公司企業(yè)家的故事(這些公司既包括初創(chuàng)企業(yè)也包括財富500強公司),來說明本書討論的規(guī)則對海量交易環(huán)境擴展的重要性。
快速入門指南
經(jīng)驗豐富的工程師、架構(gòu)師和經(jīng)理可以閱讀所有規(guī)則的概要部分,包含規(guī)則名稱、內(nèi)容、場景、用法、原因和要點。你可以瀏覽每章各個規(guī)則的概要部分,也可以直接跳到第13章,該章匯集了所有規(guī)則的概要部分。讀完這些規(guī)則的概要后,你可以選擇性地閱讀覺得有趣或有新鮮感的章節(jié)。
對于經(jīng)驗不足的讀者,我們明白,掌握50條規(guī)則負擔(dān)太重。我們確信最終你會熟悉所有的規(guī)則,但我們也了解你需要協(xié)調(diào)自己的時間。考慮到這一點,我們?yōu)榻?jīng)理選擇了5章,為軟件研發(fā)人員選擇了5章,為技術(shù)運維人員選擇了5章,我們推薦你搶先閱讀本書,以免落后于其他人。
經(jīng)理可以選擇閱讀以下幾章:
第1章大道至簡
第2章分而治之
第4章先利其器
第7章前車之鑒
第12章意猶未盡
軟件研發(fā)人員可以選擇閱讀以下幾章:
. 第1章大道至簡
第2章分而治之
第5章畫龍點睛
第10章超然物外
第11章異步通信
技術(shù)運維人員可以選擇閱讀以下幾章:
第2章分而治之
第3章水平擴展
第6章緩存為王
第8章重中之重
第9章有備無患
不管你是什么職位,如果有時間,建議你通讀本書以掌握本書中的規(guī)則和概念。本書很短,你可以在短途的飛行中完成閱讀。
讀過第一遍后,本書可以作為參考書。如果你正在計劃修復(fù)或重新架構(gòu)現(xiàn)有產(chǎn)品,第13章提供了針對現(xiàn)有平臺基于成本和預(yù)期收益應(yīng)用規(guī)則的方法。如果你已經(jīng)有了自己的優(yōu)先級管理機制,我們不建議你替換,除非你更喜歡我們的方法。如果你沒有現(xiàn)成的優(yōu)先級管理機制,我們的方法應(yīng)有助于你思考首先應(yīng)該應(yīng)用哪些規(guī)則。
如果你剛剛開始研發(fā)一個新產(chǎn)品,這些規(guī)則可以幫助你了解關(guān)于擴展的最佳實踐。在這種情況下,最好把第13章討論的優(yōu)先級管理方法作為指南,了解在設(shè)計中最需要考慮哪些東西。你應(yīng)該查看最有可能滿足當下和長期擴展需要的規(guī)則,然后有計劃地實施。
對于所有組織,這些規(guī)則可以幫助你建立一套架構(gòu)原則來推動未來的研發(fā)。選擇5、10或15個有助于產(chǎn)品最佳擴展的規(guī)則,并將它們用作對現(xiàn)有設(shè)計評審標準的補充。工程師和架構(gòu)師可以提出與每個可擴展性規(guī)則相關(guān)的問題,并確保任何新的重要設(shè)計都符合可擴展性標準。雖然這些規(guī)則定義盡可能具體和固定,但是根據(jù)系統(tǒng)的特定情況仍有修改的余地。如果你或你的團隊具有相當?shù)目蓴U展性經(jīng)驗,可以因地制宜根據(jù)需要調(diào)整這些規(guī)則。如果你和你的團隊缺乏大型系統(tǒng)的可擴展性經(jīng)驗,那就按部就班地使用這些規(guī)則,看看它對你的擴展實踐有多么大的幫助。
最后,本書旨在作為參考書和手冊。第13章總結(jié)了本書的50條規(guī)則,有助于讀者快速參考。無論是遇到了問題,還是只希望設(shè)計一個更具可擴展性的解決方案,第13章都可以作為快速參考指南,其中的規(guī)則可以幫助你最快地走出困境或幫助你在新的征程中確定最佳路徑。除了把本書作為案頭參考之外,還可以考慮通過一些手段將其整合到組織中,例如,每周選取一個或兩個規(guī)則在技術(shù)全員大會上討論。
為什么會出第2版
本書的第1版是第一本以規(guī)則為脈絡(luò)講述可擴展性的書,因簡潔、易用和方便深受客戶的喜歡。但是不斷有來自于我們公司(即AKF合作伙伴的讀者和客戶)要求我們講述這些規(guī)則背后的故事。因為把客戶的需要放在首位使我們感到自豪,所以我們在編輯時把隱藏在這些規(guī)則后面的故事也加了進來。
除了講述多位首席技術(shù)官和成功企業(yè)家的故事之外,編輯本書第2版允許我們及時更新內(nèi)容以確保符合行業(yè)的最佳實踐。再版也給了我們讓技術(shù)同行對本書內(nèi)容進行另一輪評審的機會。所有這一切使第2版更容易閱讀、更容易理解、更容易應(yīng)用。
本書與《架構(gòu)即未來》有什么不同
《架構(gòu)即未來》第2版是我們第一本關(guān)于可擴展性主題的書,它專注于人、過程和技術(shù),而本書則主要是專注于技術(shù)。不要誤解,我們?nèi)匀幌嘈湃撕瓦^程是構(gòu)建可擴展性解決方案最重要的組成部分。畢竟,正是公司(包括個人貢獻者和管理層)在構(gòu)建可擴展的解決方案的過程中有成有敗。無法擴展不是技術(shù)的錯誤,而是人錯誤地構(gòu)建、選擇或者集成了技術(shù)。我們相信《架構(gòu)即未來》已經(jīng)充分論述了人和過程在可擴展性方面的問題,本書會更深入地探討可擴展性的技術(shù)方面。
本書擴展了《架構(gòu)即未來》中的第三部分(技術(shù))。與《架構(gòu)即未來》相比,本書中的內(nèi)容要么是新的,要么是更偏重技術(shù)層面。正如亞馬遜的一些評論者指出的那樣,如果本書單獨作為一本書有其獨立的價值,當然它也可以作為《架構(gòu)即未來》的姊妹篇。
注釋
1.“Net Sales Revenue of Amazon from 2004 to 2015,”www.statista.com/statistics/
266282/annual-net-revenue-of-amazoncom/.
2.Walmart, Corporate and Financial Facts,http://corporate.walmart.com/_news_/news-
archive/investors/2015/02/19/walmart-announces-q4-underlying-eps-of-161-and-additional-strategic-investments-in-people-e-commerce-walmart-us-comp-sales-increased-15-percent.
3.作者注:著名的亞馬遜之兩個披薩餅規(guī)則——團隊規(guī)模不能大過兩張披薩餅可以喂飽的人數(shù)。
致謝
本書所包含的規(guī)則并不是我們的合作伙伴單獨總結(jié)出來的,而是與客戶、同事和合作伙伴(涉及差不多400家公司、部門和機構(gòu))近70年合作的智慧結(jié)晶。每個人對本書中的部分或所有規(guī)則都有不同程度的貢獻。因此,我們感謝在過去數(shù)十年里共事過的朋友、合作伙伴、客戶、同事和老板對本書的貢獻。通過包括里克·達爾澤爾、克里斯·拉隆德、詹姆斯·巴雷斯、朗·班德、布拉德·彼得森、格蘭特·克洛普、杰里米·金、湯姆·凱文、泰洛·斯坦斯伯里、克里斯·施賴納、查克·蓋革在內(nèi)的首席技術(shù)官的故事說明這50條規(guī)則的必要性,這種幫助對本書來說是無價的。我們感謝他們每個人在講述自己故事時所付出的時間和精力。
我們還要感謝對本書提供指導(dǎo)、讀者反饋意見和項目管理的編輯。第1版和第2版的技術(shù)編輯包括杰弗里·韋伯、克里斯·拉隆德、卡米爾·富尼耶、杰里米·懷特、馬克·烏爾邁克和羅伯特·吉爾德,他們分享了已積累數(shù)十年的技術(shù)經(jīng)驗,并為本書提供了寶貴的建議。感謝來自Addison-Wesley出版社的編輯邱松林、勞拉·萊溫、奧利維亞·培生和蒂娜·麥克唐納德,他們提供了一貫的支持并在本項目的每一步給予了修辭方面的指導(dǎo)。感謝幫助過該項目的所有人!
最后一點也很重要,我們要感謝家人和朋友,他們體諒了我們因為需要坐在電腦前寫作而無法參加社交活動的行為。這種規(guī)模的工作不是我們單槍匹馬就可以完成的,沒有家人和朋友們的理解與支持,這將是一個更加艱巨的旅程。
馬丁·阿伯特是研究增長和可擴展的咨詢公司AKF的創(chuàng)始合伙人。馬丁曾任Quigo的首席運營官,Quigo是一家從事廣告業(yè)務(wù)的初創(chuàng)公司,后來被AOL收購。在AOL,他負責(zé)產(chǎn)品策略、產(chǎn)品管理、技術(shù)研發(fā)和客戶服務(wù)。馬丁曾在eBay工作了6年,先后擔(dān)任高級技術(shù)副總裁、首席技術(shù)官和高管人員。加入eBay前,馬丁在Gateway和Motorola公司擔(dān)任美國國內(nèi)和國際的工程、管理及行政職務(wù)。他還曾在幾個私人和上市公司里擔(dān)任董事。馬丁從美國軍事學(xué)院獲得計算機學(xué)士學(xué)位,擁有佛羅里達大學(xué)計算機工程碩士學(xué)位,是哈佛商學(xué)院執(zhí)行人員教育項目的畢業(yè)生,同時擁有凱斯威斯頓儲備大學(xué)的管理學(xué)博士學(xué)位。
邁克爾·費舍爾是研究增長和可擴展的咨詢公司AKF的創(chuàng)始合伙人。在共同創(chuàng)建AKF公司之前,邁克爾曾任Quigo的首席技術(shù)官。加入Quigo之前,邁克爾曾在eBay的子公司PayPal擔(dān)任...
馬丁·阿伯特是研究增長和可擴展的咨詢公司AKF的創(chuàng)始合伙人。馬丁曾任Quigo的首席運營官,Quigo是一家從事廣告業(yè)務(wù)的初創(chuàng)公司,后來被AOL收購。在AOL,他負責(zé)產(chǎn)品策略、產(chǎn)品管理、技術(shù)研發(fā)和客戶服務(wù)。馬丁曾在eBay工作了6年,先后擔(dān)任高級技術(shù)副總裁、首席技術(shù)官和高管人員。加入eBay前,馬丁在Gateway和Motorola公司擔(dān)任美國國內(nèi)和國際的工程、管理及行政職務(wù)。他還曾在幾個私人和上市公司里擔(dān)任董事。馬丁從美國軍事學(xué)院獲得計算機學(xué)士學(xué)位,擁有佛羅里達大學(xué)計算機工程碩士學(xué)位,是哈佛商學(xué)院執(zhí)行人員教育項目的畢業(yè)生,同時擁有凱斯威斯頓儲備大學(xué)的管理學(xué)博士學(xué)位。
邁克爾·費舍爾是研究增長和可擴展的咨詢公司AKF的創(chuàng)始合伙人。在共同創(chuàng)建AKF公司之前,邁克爾曾任Quigo的首席技術(shù)官。加入Quigo之前,邁克爾曾在eBay的子公司PayPal擔(dān)任負責(zé)工程和架構(gòu)的副總裁。在加入PayPal前,邁克爾曾經(jīng)在通用電氣工作了7年,負責(zé)制訂公司的技術(shù)發(fā)展戰(zhàn)略,在此期間,他獲得了六西格瑪黑帶大師的榮譽。邁克爾作為飛行員和上尉在美國陸軍服役6年,從凱斯威斯頓儲備大學(xué)管理學(xué)院獲得了MBA和博士學(xué)位,從夏威夷太平洋大學(xué)取得信息系統(tǒng)碩士學(xué)位,從美國軍事學(xué)院(西點軍校)取得計算機學(xué)士學(xué)位。邁克爾在凱斯威斯頓儲備大學(xué)管理學(xué)院的設(shè)計與創(chuàng)新系擔(dān)任兼職教授。
