關(guān)于我們
書單推薦
新書推薦
|
云原生模式(博文視點出品) 擁抱“云”,更多指的是如何設(shè)計你的應(yīng)用程序,而不是你在哪里部署它們。本書是一本架構(gòu)指南,指導(dǎo)你如何讓應(yīng)用程序在動態(tài)的、分布式的、虛擬的云世界中茁壯成長。本書介紹了云原生應(yīng)用程序的多種思維模型,以及支持其構(gòu)建的模式、實踐和工具,同時提供了一些實際案例和專家建議,幫助你更好地開發(fā)和使用應(yīng)用程序、數(shù)據(jù)、服務(wù)、路由等。本書分為兩部分。第 1 部分定義了云原生的上下文環(huán)境,并展示了軟件部署環(huán)境的特點。第2 部分深入探討了云原生模式,包括請求 / 響應(yīng)、事件驅(qū)動、斷路器等。無論你是否有云原生的開發(fā)經(jīng)驗,通過本書提供的眾多模式,一定可以更好地理解和掌握云原生開發(fā)。 適讀人群 :那些需要Java或類似語言的中級編程技能的,或是需要一些服務(wù)器端開發(fā)經(jīng)驗的人。 云平臺帶來了強大的功能:幾乎不存在停機時間、無限的可伸縮性、反饋周期短、高容錯性及成本可控。但是如何使用這些功能呢?通過采用云原生設(shè)計,開發(fā)人員可以構(gòu)建具有彈性、高可適應(yīng)性的大規(guī)模分布式應(yīng)用程序,從而處理大量的用戶流量和數(shù)據(jù)負載。通過學習這些基本模式和實踐,你可以在動態(tài)的、分布式的、虛擬的云計算世界中茁壯成長。 Comelia Davis擁有三十年相關(guān)開發(fā)經(jīng)驗,她將向你介紹云原生應(yīng)用程序獨特的實踐方式和應(yīng)用模式。通過介紹應(yīng)用程序、數(shù)據(jù)、服務(wù)、路由等問題的實際案例和專家建議,她會向你展示如何在現(xiàn)代云平臺上設(shè)計和構(gòu)建運行良好的軟件。當你閱讀本書時,你將開始意識到,云原生計算更多是關(guān)于如何做和為什么這樣做的,而不是在哪里進行計算。本書包括: · 云原生應(yīng)用程序的生命周期 · 云計算的配置管理 · 零停機時間升級、版本化服務(wù)和并行部署 · 服務(wù)發(fā)現(xiàn)和動態(tài)路由 · 如何管理服務(wù)之間的交互,包括重試和斷路器 譯者序 當我們討論云原生時,究竟在討論什么?這些年來我一直在思索這個問題,大家的觀點可能不盡相同。三年前從我翻譯了第一本云原生領(lǐng)域的圖書開始,陸續(xù)參與翻譯和創(chuàng)作了一系列云原生作品,同時通過對云原生領(lǐng)域的開源項目、社區(qū)、基金會、應(yīng)用云化過程的參與和觀察,我得出了下面的結(jié)論 :云原生是一種行為方式和設(shè)計理念,究其本質(zhì),凡是能夠提高云上資源利用率和應(yīng)用交付效率的行為或方式都是云原生的。云計算的發(fā)展史就是一部云原生化的歷史。云原生是云計算適應(yīng)社會分工的必然結(jié)果,將系統(tǒng)資源、底層基礎(chǔ)設(shè)施和應(yīng)用編排交由云平臺管理,讓 開發(fā)者專注于業(yè)務(wù)邏輯,這不正是云計算長久以來孜孜以求的嗎?云原生應(yīng)用追求的是快速構(gòu)建高容錯性、彈性的分布式應(yīng)用,追求極致的研發(fā)效率和友好的上線與運維體驗,隨之云原生的理念應(yīng)運而生,它們天生適合部署在云上,可以最大限度地利用云計算帶來的紅利。 在此之前我曾翻譯過幾本云原生主題的圖書,其中 Cloud Native Go 的作者 Kevin Hoffman,《云原生 Java》的作者 Josh Long,他們都來自 Pivotal 或曾在Pivotal 工作多年,當看到此書時,我驚奇地發(fā)現(xiàn),作者 Cornelia Davis 同樣來自這家公司,Pivotal 真可謂是云原生的“黃埔軍!。此書的內(nèi)容跟以往的云原生圖書有所不同,對于模式的梳理標新立異,因此我立即聯(lián)系了電子工業(yè)出版社的張春雨編輯。經(jīng)他了解到張若飛正在翻譯此書,此前我與他合作翻譯了《云原生 Java》,本書算是我跟他的第二次合作,他翻譯圖書的精準和高效著實讓我佩服,我們各自 翻譯了本書一半的內(nèi)容。 人人都在討論云原生,但是究竟如何實現(xiàn)卻莫衷一是。本書主要關(guān)注的是云原生應(yīng)用的數(shù)據(jù)、服務(wù)與交互,即應(yīng)用層面的設(shè)計模式,這些模式穿插于本書第 2 部分的各個章節(jié)中,基本覆蓋了云原生應(yīng)用的各個方面,并將理論與實踐結(jié)合,帶領(lǐng)讀者使用 Java 實現(xiàn)了一個云原生應(yīng)用。 同時還要感謝 ServiceMesher 社區(qū)、云原生社區(qū)的成員及志愿者們對于云原生在中國的發(fā)展做出的貢獻,你們的鼓勵和支持是我在云原生領(lǐng)域不斷努力和探索的動力。本書的翻譯難免有一些紕漏,還望讀者指正。 宋凈超 2020 年 7 月 4 日于北京 序 六年來,我有幸與 Nicole Forsgren 和 Jez Humble 合作編寫了《DevOps 現(xiàn)狀報告》(State of DevOps Report),該報告收集了來自三萬多名受訪者的數(shù)據(jù)。這份報告給我的最大啟示之一就是軟件架構(gòu)的重要性 :高效能團隊的架構(gòu)能夠使開發(fā)人員快速、獨立、安全、可靠地開發(fā)、測試和部署軟件,從而為客戶不斷創(chuàng)造價值。 幾十年前,我們可以開玩笑地說,軟件架構(gòu)師只擅長使用 Visio、繪制 UML 圖表以及制作沒人看的 PowerPoint 幻燈片,但今非昔比,大量企業(yè)在市場上的成敗取決于它們所開發(fā)的軟件。應(yīng)該說,沒有什么比它們每天必須使用的架構(gòu)更能影響開發(fā)人員的日常工作了。 本書填補了理論與實踐之間的一段空白。事實上,我認為只有少數(shù)人可以將它寫出來。Cornelia Davis 是極其合適的人選,她曾在攻讀博士學位時學習了編程語言,對函數(shù)式編程和不可變性產(chǎn)生了濃厚的興趣,擁有數(shù)十年大型軟件系統(tǒng)的開發(fā)經(jīng)驗,并且?guī)椭笮蛙浖髽I(yè)獲得過巨大的成功。 在過去的五年中,我多次聯(lián)系她尋求幫助和建議,我們經(jīng)常討論有關(guān)諸如CQRS 和事件源模式、LISP 和 Clojure 語言(我最喜歡的編程語言)、命令式編程和狀態(tài)的危險性,甚至像遞歸這樣簡單的事情。 本書的亮點在于 Cornelia 不僅僅從模式入手。她從模式的基本理論開始,然后通過論證(有時通過邏輯或者流程圖)來證明它們的有效性。除了理論本身,她還通過 Java Spring 框架一個一個地實現(xiàn)了這些模式,以便讓你更好地理解這些知識。 我發(fā)現(xiàn),這本書兼具娛樂性和教育性,并且使我對大量以前只是略知皮毛的知識有了更深入的了解。我現(xiàn)在致力于通過 Clojure 語言來實現(xiàn)她的示例,以證明我可以將這些知識付諸實踐。 本書可能會讓你聯(lián)系起一些令人感到興奮甚至驚訝的概念。對我而言,其中一個概念就是無論是面向切面的編程(AOP)、Kubernetes 的挎斗(sidecar)模式,還是 Spring Retry 注入,都是為了統(tǒng)一處理橫切關(guān)注點(cross-cutting concerns)。 希望你能像我一樣喜歡這本書! — Gene Kim,研究員以及 The Phoenix Project、The Devops Handbook 和 Accelerate 的聯(lián)合作者 前言 我的職業(yè)生涯始于圖像處理。我曾在休斯飛機公司(Hughes Aircraft)的導(dǎo)彈系統(tǒng)部工作,研究紅外圖像處理,處理邊緣檢測和幀與幀之間的關(guān)聯(lián)。(這些功能在如今的手機應(yīng)用上無處不見,這都要歸功于 20 世紀 80 年代的研究。 我們在圖像處理中常用的計算之一是標準差。我從來不羞怯于提出問題,而我早年經(jīng)常問的一個問題就是關(guān)于標準差的。我的一個同事總是會寫下標準差的公式。真見鬼,三個月過去了,這個公式我大概已經(jīng)寫了六遍。 我真正想問的是 :“在這種情況下,標準差究竟意味著什么?”實際上,標準差是用來定義什么是“正常的”,這樣我們可以尋找離群值。如果我正在計算標準差,然后發(fā)現(xiàn)了超出正常值范圍的情況,那么是否表示我的傳感器可能出現(xiàn)了故障,并且我需要舍棄這一幀圖像,還是表示它暴露了潛在敵人的行動? 所有這些與云原生有什么關(guān)系?沒有。但這一切與模式有關(guān)。正如你所見,我雖然知道這個模式(標準差計算),但是由于當時缺乏經(jīng)驗,所以不知道何時以及為什么要使用它。 在本書中,我將向你介紹云原生應(yīng)用程序的多種架構(gòu)模式,是的,我將向你展示許多的“公式”,但是為了說明何時及為何使用這些模式,我會在介紹上下文環(huán)境上花費更多的時間。實際上,模式通常并不那么困難(例如,第 9 章介紹的請求重試模式很容易實現(xiàn)),困難的是決定何時應(yīng)用某個模式,以及如何正確地應(yīng)用該模式。 在應(yīng)用這些模式時,你需要了解很多的上下文環(huán)境,并且坦率地說,這些環(huán)境有可能很復(fù)雜。 那么上下文環(huán)境是什么呢?從根本上來說,它是一個分布式系統(tǒng)。當我三十多年前開始工作時,并不認識很多從事分布式系統(tǒng)工作的人,在大學也沒有學過分布式系統(tǒng)的課程。沒錯,雖然人們在這個領(lǐng)域中工作,但說實話,這是一個非常小的領(lǐng)域。 如今,絕大多數(shù)軟件都是分布式系統(tǒng)。軟件的某些部分在瀏覽器中運行,而另一些部分在服務(wù)器上運行,或者我敢說,在一大堆服務(wù)器上運行。這些服務(wù)器可能在你公司的數(shù)據(jù)中心運行,也可能在俄勒岡州普萊恩維爾的一個數(shù)據(jù)中心運行,或者同時在兩地運行。所有這些都是通過網(wǎng)絡(luò)(可能是互聯(lián)網(wǎng))進行通信的,而且軟件的數(shù)據(jù)也很可能是分布式的。簡單地說,云原生軟件是一個分布式的系統(tǒng)。此外,事情在不斷變化 — 服務(wù)器正在不斷下架,網(wǎng)絡(luò)經(jīng)常中斷(即便是非常短暫的中斷),存儲設(shè)備可能會在沒有任何警告的情況下崩潰 — 即使是這樣,我們依然希望軟件能夠繼續(xù)正常運行。這是一個非常具有挑戰(zhàn)性的環(huán)境。 但是這完全是可控制的!本書的目的就是幫助你理解這種上下文環(huán)境,并為你提供一些工具,讓你成為一名精通云原生的架構(gòu)師和開發(fā)人員。 我從來沒有像現(xiàn)在這樣感受到如此劇烈的腦力激蕩。這在很大程度上是因為技術(shù)領(lǐng)域正在發(fā)生重大變化,而云原生就是這個變化的核心。我絕對熱愛我所從事的工作,我希望每個人,尤其是你,也能像我一樣喜歡編寫軟件。這就是我編寫這本書的原因 :我想與你分享整個行業(yè)正在面臨的那些瘋狂而又酷炫的問題,幫助你踏上解決這些問題的旅程。我很榮幸有機會與你一起踏上云原生之旅,哪怕是在其中扮演一個小小的配角。 我的云原生之旅始于 2012 年,當時我的老板 Tom Maguire 讓我開始研究 PaaS(平臺即服務(wù))。作為 EMC CTO 辦公室架構(gòu)組的一員,關(guān)注新興技術(shù)對我們來說并不新鮮 — 但是,這一次終于成功了!我將永遠感激 Tom 給了我探索的動力和空間。 到 2013 年年初,我已經(jīng)學到了足夠多的東西,預(yù)見到未來我會在這個領(lǐng)域工作,而隨著 Pivotal Software 公司的創(chuàng)立,我有了一個工作的地方。首先,我要感謝 Elisabeth Hendrickson,感謝她在我還在 EMC 的時候就邀請我參加 Cloud Foundry會議,感謝她把我介紹給 James Watters。我經(jīng)常說,我做過的最好的職業(yè)選擇是為James 工作。我感謝他給了我很多機會,感謝他的信任讓我全身心投入工作,感謝與他大量的深度對話讓彼此共同理解了什么是云原生,以及感謝我們之間六年的深厚友誼。 我很感恩自從 Pivotal 公司成立我就加入了公司,和這么多聰明、敬業(yè)、善良的同事一起學習。我要感謝 Elisabeth Hendrickson、Joshua McKenty、Andrew Clay-Shafer、Scott Yara、Ferran Rodenas、Matt Stine、Ragvender Arni,以及其他許多人(如果我漏掉了任何人,請原諒)幫助我學習,并與我一起度過我人生中最美好的六年! 我還要特別感謝 Pivotal 公司,特別是 Ian Andrews 和 Kelly Hall,感謝他們贊助了《云原生基礎(chǔ)》(Cloud-Native Foundations)迷你書。 我從許多同行那里學到了很多知識,無法一一列舉,但是感謝每一個人。我特別想感謝 Gene Kim。我還記得我們見面的那天晚上(再次感謝 Elisabeth Hendrickson,感謝她促成了我們那次會面),我立刻意識到,我們將合作很長一段時間。我感謝Gene 給了我在 DevOps 企業(yè)峰會(DevOps Enterprise Summit)上與他共事的機會,通過那次峰會,我認識了許多在不同公司工作的創(chuàng)新 Cornelia Davis 是 Pivotal 公司的技術(shù)副總裁,她負責為 Pivotal 公司和 Pivotal 公司的客戶制定技術(shù)戰(zhàn)略。目前,她正在研究如何將各種云計算模型(基礎(chǔ)設(shè)施即服務(wù)、應(yīng)用程序即服務(wù)、容器即服務(wù)和函數(shù)即服務(wù) ) 整合到一個全面的產(chǎn)品中,使 IT 組織能夠在**層面上運行。Cornelia 在圖像處理、科學可視化、分布式系統(tǒng)和 web 應(yīng)用程序架構(gòu),以及云原生平臺方面有超過 30 年的經(jīng)驗。Cornelia 擁有加州州立大學北嶺分校的計算機科學本科和碩士學位,并在印第安納大學進一步研究了計算機原理和編程語言。因為內(nèi)心一直想當一名老師,所以 Cornelia 在過去的 30 年里,一直致力于開發(fā)更好的軟件,以及培養(yǎng)更好的軟件開發(fā)人員?臻e的時候,Cornelia 更喜歡瑜伽鍛煉和烹飪。 張若飛,曾任多家互聯(lián)網(wǎng)金融公司CTO,在宜人貸、雅虎北研、金山云等知名公司擔任架構(gòu)師。十余年互聯(lián)網(wǎng)研發(fā)及技術(shù)管理經(jīng)驗,對搭建海量數(shù)據(jù)、大型分布式系統(tǒng)有豐富經(jīng)驗。著有十余本技術(shù)譯著,包括《Grails權(quán)威指南》《給大忙人看的JavaSE 8》《代碼不朽:編寫可維護軟件的十大原則》《面向可伸縮架構(gòu)》《云原生Java》等書,總計400余萬字。 第1部分 云原生上下文
你還可能感興趣
我要評論
|