下面的表述是否真實?1)最為可靠的系統(tǒng)是使用廉價、不可靠的組件構(gòu)建的。
2) Google為數(shù)十億用戶服務(wù)所用的技術(shù)遵循的模式,與你處理數(shù)千名用戶的系統(tǒng)所遵循的模式相同。
3)某種過程的風(fēng)險越大,你越應(yīng)該嘗試。
4)某些最重要的軟件功能是用戶從未發(fā)現(xiàn)的。
5)你應(yīng)該隨意選擇一些機器,并關(guān)閉其電源。
6) Facebook在接下來六個月中所要發(fā)布的代碼,其功能可能已經(jīng)在你的瀏覽器中出現(xiàn)了。
7)每天多次更新軟件所需要的人工很少。
8)隨時待命并不一定是一種緊張、痛苦的體驗。
9)你不應(yīng)該監(jiān)控機器是否啟動。
10)運營和管理可以通過試驗和證明的科學(xué)原理進行。
11)Google已經(jīng)對僵尸攻擊時的對策進行了演練。
這些表述都是真實的,當(dāng)你讀完本書,就會知道原因。
本書講述的是大規(guī)模云服務(wù)(數(shù)百萬甚至數(shù)十億用戶使用的基于互聯(lián)網(wǎng)的服務(wù))的構(gòu)建和運行。每天,都有越來越多的企業(yè)采用這些技術(shù),因此,本書是為所有人寫的。
本書的目標讀者是系統(tǒng)管理員和他們的經(jīng)理。你無需計算機科學(xué)的背景,但是你應(yīng)該有Unix/Linux系統(tǒng)管理、聯(lián)網(wǎng)的經(jīng)驗,以及操作系統(tǒng)的概念。
我們重點關(guān)注構(gòu)建和運營組成“云”的服務(wù),而不是指導(dǎo)云服務(wù)的使用。
云服務(wù)必須是可用的、快速的和安全的。考慮到云的規(guī)模,這將是獨特而杰出的工程成就。因此,云規(guī)模服務(wù)設(shè)計不同于典型的企業(yè)服務(wù)。可用性很重要,因為互聯(lián)網(wǎng)是7×24開放的,用戶處于各個時區(qū)。快速的重要性在于用戶會因為慢速的服務(wù)而感到沮喪,所以緩慢的服務(wù)會被更快的競爭者所取代。安全的重要性則在于,作為他人數(shù)據(jù)的托管者,我們義不容辭(而且負有法律責(zé)任)地要保護人們的數(shù)據(jù)。
這些要求是互相交織的。如果網(wǎng)站不安全,當(dāng)然也就不可能可靠。如果網(wǎng)站速度不快,可用性也就不足。如果網(wǎng)站下線,當(dāng)然就不可能快速。
最明顯的云規(guī)模服務(wù)是網(wǎng)站。但是,還有一個巨大的無形互聯(lián)網(wǎng)訪問服務(wù)生態(tài)系統(tǒng),這些服務(wù)不是通過瀏覽器訪問的。例如,智能手機應(yīng)用通過API調(diào)用訪問云服務(wù)。
在本書余下的部分中,我們傾向于使用“分布式計算”而非“云計算”。云計算是一個營銷用語,對不同的人有不同的含義。分布式計算描述了使用許多機器(而非單一機器)提供應(yīng)用程序和服務(wù)的一種架構(gòu)。
本書介紹的是不受時間影響的基本原理及方法。因此,我們不推薦使用特定的產(chǎn)品或者技術(shù)。我們可以提供前5種最流行的Web服務(wù)器、NoSQL數(shù)據(jù)庫或者持續(xù)構(gòu)建系統(tǒng)的對比,但是如果這么做,本書就會在出版的那一刻過時。相反,我們討論的是選擇這些系統(tǒng)時應(yīng)該注意的特質(zhì),提供一種工作模式。這種方法的意圖是幫助你在技術(shù)不斷變化的漫長職業(yè)生涯中始終做好準備。當(dāng)然,我們將用具體的技術(shù)和產(chǎn)品說明我們的觀點,但是不代表我們支持這些產(chǎn)品和服務(wù)。
本書有時看似理想化,這是故意為之。我們想為讀者提供事物將會如何發(fā)展、該堅持什么原則的愿景,目的是更上一層樓。
關(guān)于本書本書分為兩個部分——設(shè)計和運營。
第一部分捕捉我們在大規(guī)模、復(fù)雜、基于云的分布式計算系統(tǒng)設(shè)計上的想法。在引言之后,我們從下向上逐層介紹設(shè)計的每個要素。我們從系統(tǒng)管理員(而非計算機科學(xué)家)的角度介紹分布式系統(tǒng),要運營一個系統(tǒng)就必須理解其內(nèi)部原理。
第二部分描述如何運營這些系統(tǒng)。前面幾章介紹最基本的問題。后面幾章深入更為復(fù)雜的技術(shù)活動,然后是概要規(guī)劃和將以上要素組合起來的戰(zhàn)略。
最后是附加材料,包括運營團隊的評估系統(tǒng)、被歪曲的分布式計算歷史、正文中提及的表單模板、建議閱讀的材料以及其他參考材料。
我們滿懷興奮之情介紹本系列書籍中的一個新特征:運營評估系統(tǒng)。這個系統(tǒng)由一系列評估活動組成,你可以用它們評估自己的運營,找出需要改進的領(lǐng)域。評估問題和“搜索”建議可以在附錄A中找到。第20章是該系統(tǒng)的說明。
致謝沒有我們所在社區(qū)及來自全球的幫助及反饋,本書就不可能出版。DevOps社區(qū)慷4慨地提供了幫助。
首先,我們要感謝我們愛人和家人:Christine Polk、Mike Chalup、Eliot和Joanna Lear。
他們的愛和耐心成就了一切。
之所以我們能夠看得更遠,那是因為我們站在巨人的肩上。某些章節(jié)在很大程度上得到了下列人士的支持和建議:John Looney和Cian Synnott(第1章);Marty Abbott和Michael Fisher(第5章);Damon Edwards\ Alex Honor和Jez Humble(第9章和第10章);John Allspaw(第12章);Brent Chapman(第15章);Caskey Dickson和Theo Schlossnagle(第16章和17章);Arun Kejariwal和Bruce Yan(第18章);Benjamin Treynor Sloss(第19章);Geoff Halprin(第20章和附錄A)o感謝Gene Kim“有策略”的啟發(fā)和鼓勵。有幾十位人士幫助過我們——有些人提供奇聞軼事,有些人審核某些部分或者整本書。感謝他們所有人的公平方式是按照字母順序排列,并預(yù)先向我們遺漏的所有人道歉:Thomas Baden. George Beech. RaymondBlum. Kyle Brandt. Mark Burgess. Nick Craver. Geoff Dalgas\ Robert P.J.Day,Patrick Debois. Bill Duane. Paul Evans. David Fullerton. Tom Geller. Peter Grace.Elizabeth Hamon Reid. Jim Hickstein\ Zachary Hueras. Matt Jones. Jennifer Joy. JimmyKaplowitz. Daniel v.Klein. Steven Levine. Cory Lueninghoener. Shane Madden. JimMaurer. Stephen McHenry. Dinah McNutt. Scott Hazen Mueller\ Steve Murawski. MohitMuthanna. Lenny Rachitsky. Amy Rich. Adele Shakal\ Bart Silverstrim. Josh Simon.Joel Spolsky. Desiree Sylvester. Win Treese. Todd Underwood\ Nicole Forsgren Velasquez和Dave Zwiebacko最后(但并非不重要),感謝Addison-Wesley的所有人,特別要感謝Debra WilliamsCauley將我們引見給Addison-Wesley,并在整個過程中為我們掌舵;感謝Michael Thurston對本書初稿的編輯和改進,使之更加完美;感謝Kim Boedigheimer的協(xié)調(diào)工作以及在我們驚慌的時候幫助我們保持鎮(zhèn)靜;感謝我們的LaTeX奇才Lori Hughes;感謝產(chǎn)品經(jīng)理Julie Nahil;感謝文字編輯Jill Hobbs;還要感謝John Fuller和Mark Taub忍受我們的特殊要求!
第一部分設(shè)計:構(gòu)建系統(tǒng)第1章分布式世界中的設(shè)計概述分布式系統(tǒng)的設(shè)計。
第2章為運營而設(shè)計為了實現(xiàn)平穩(wěn)運營而應(yīng)該具備的軟件功能。
第3章選擇服務(wù)平臺物理機和虛擬機,私有云和公共云。
第4章應(yīng)用程序架構(gòu)創(chuàng)建Web和其他應(yīng)用程序的基本組件。
第5章伸縮性設(shè)計模式擴增服務(wù)所用的基本組件。
?第6章彈性設(shè)計模式
創(chuàng)建可幸免于故障的系統(tǒng)的基本組件。
第二部分運營:運行系統(tǒng)
第7章分布式世界中的運營
分布式系統(tǒng)運行方式概述。
第8章 DevOps文化
DevOps文化、歷史和實踐簡介。
第9章服務(wù)交付:構(gòu)建階段
如何構(gòu)建服務(wù)和準備投產(chǎn)。
第1 0章服務(wù)交付:部署階段
服務(wù)如何測試、批準和投產(chǎn)。
第11章升級運行中的服務(wù)
如何在不停機的情況下升級服務(wù)。
第1 2章 自動化
創(chuàng)建工具和自動化運營工作。
第1 3章設(shè)計文檔
書面交流設(shè)計和意圖。
第14章隨時待命
處理異常情況。
第1 5章災(zāi)難準備
通過規(guī)劃和實踐強化系統(tǒng)。
第1 6章監(jiān)控基礎(chǔ)知識
監(jiān)控術(shù)語和策略。
第1 7章監(jiān)控架構(gòu)與實踐
監(jiān)控組件和方法。
第1 8章容量規(guī)劃
在需要之前規(guī)劃并提供附加資源。
第19章建立KPI
通過計量和反思科學(xué)地推動行為。
第20章卓越運營
持續(xù)改善的戰(zhàn)略。
第三部分附錄
附錄A評估
?附錄B分布式計算和云的起源及未來
附錄C伸縮性術(shù)語和概念
附錄D模板和示例
附錄E推薦讀物
后記
最后的一些想法。
參考文獻
機工授權(quán)書
第一部分設(shè)計:構(gòu)建系統(tǒng)
第1章分布式世界中的設(shè)計概述分布式系統(tǒng)的設(shè)計
第2章為運營而設(shè)計為了實現(xiàn)平穩(wěn)運營而應(yīng)該具備的軟件功能
第3章選擇服務(wù)平臺物理機和虛擬機,私有云和公共云
第4章應(yīng)用程序架構(gòu)創(chuàng)建Web和其他應(yīng)用程序的基本組件
第5章伸縮性設(shè)計模式擴增服務(wù)所用的基本組件
第6章彈性設(shè)計模式
創(chuàng)建可幸免于故障的系統(tǒng)的基本組件
第二部分運營:運行系統(tǒng)
第7章分布式世界中的運營
分布式系統(tǒng)運行方式概述
第8章 DevOps文化
DevOps文化、歷史和實踐簡介
第9章服務(wù)交付:構(gòu)建階段
如何構(gòu)建服務(wù)和準備投產(chǎn)
第1 0章服務(wù)交付:部署階段
服務(wù)如何測試、批準和投產(chǎn)
第11章升級運行中的服務(wù)
如何在不停機的情況下升級服務(wù)
第1 2章 自動化
創(chuàng)建工具和自動化運營工作
第1 3章設(shè)計文檔
書面交流設(shè)計和意圖
第14章隨時待命
處理異常情況
第1 5章災(zāi)難準備
通過規(guī)劃和實踐強化系統(tǒng)
第1 6章監(jiān)控基礎(chǔ)知識
監(jiān)控術(shù)語和策略
第1 7章監(jiān)控架構(gòu)與實踐
監(jiān)控組件和方法
第1 8章容量規(guī)劃
在需要之前規(guī)劃并提供附加資源
第19章建立KPI
通過計量和反思科學(xué)地推動行為
第20章卓越運營
持續(xù)改善的戰(zhàn)略
第三部分附錄
附錄A評估
附錄B分布式計算和云的起源及未來
附錄C伸縮性術(shù)語和概念
附錄D模板和示例
附錄E推薦讀物
后記
參考文獻