云原生之路,漫漫而修遠,因為云在發(fā)展,應用也在發(fā)展。如何讓應用充分利用云的特性煥發(fā)全新面貌,這是每個云原生應用架構(gòu)領(lǐng)域的人應該思考的問題。
本書分為兩篇,從技術(shù)演進講起,讓讀者充分了解系統(tǒng)資源、應用架構(gòu)和軟件工程的發(fā)展歷程,從而擁有技術(shù)角度的全局視野;然后介紹云原生應用的實踐,手把手教你設計一個云原生應用。
本書適合云原生應用開發(fā)人員、架構(gòu)師、云計算從業(yè)者閱讀,部分章節(jié)對產(chǎn)品團隊、運維人員亦有一定的參考價值。
前言
談到一個應用,我們首先考慮的是運行這個應用所需要的系統(tǒng)資源。其次,關(guān)于應用自身的架構(gòu)模式也要考慮,從傳統(tǒng)的單體架構(gòu)模式到后來的微服務模式、服務網(wǎng)格,以業(yè)務功能為維度進行分拆更有利于應用的不斷演進。后,還需要從軟件工程的角度來考慮云原生應用的設計、開發(fā)、部署、運維等不同階段。
設計云原生應用需要從以上三個維度進行全方位的思考。所謂原生為云設計的應用,就是指從初便被設計為在云上以方式運行的應用,這種應用能充分發(fā)揮云平臺的各種優(yōu)勢。
架構(gòu)師是推動上述應用設計、開發(fā),真正將云原生應用落地的人。那么何為架構(gòu)師?
架構(gòu)師的基本職責是在項目早期就設計好基本的框架,這個框架既能夠確保團隊成員順利編寫代碼,滿足近期業(yè)務需求的變化,又能為進一步的發(fā)展留出空間(所謂scalability),即確定技術(shù)選型。
20多年前的經(jīng)典著作DesignPatterns中講過學習設計模式的意義,放在架構(gòu)師的定義中非常貼切:成為架構(gòu)師并不是要我們學習一種新的技術(shù)或者編程語言,而是要建立一種用于交流的共同語言和詞匯,在設計方案時方便溝通,同時也幫助我們從更抽象的層次去分析問題本質(zhì),不被一些實現(xiàn)的細枝末節(jié)所困擾。當把很多問題抽象出來之后,我們也能更深入、更好地去了解現(xiàn)有系統(tǒng)這些意義,對于今天的后端系統(tǒng)設計來說,也仍然是正確的。
總而言之,架構(gòu)設計對應用有著深遠的影響,它的好壞決定了應用的整體質(zhì)量,并且決定了開發(fā)人員開發(fā)、維護和擴展應用的難易程度。
對架構(gòu)師而言,不能為了架構(gòu)而設計架構(gòu),在選擇架構(gòu)前,要始終理解問題和需求,不要本末倒置。一方面,需要精心設計應用架構(gòu);另一方面,需要對前端UI、測試、運維、數(shù)據(jù)管理等方面都非常熟悉,從而做出正確的決定。
本書將從全棧視角出發(fā),從系統(tǒng)資源到應用架構(gòu),再到軟件工程,深入淺出地講解計算機技術(shù)的演進,給架構(gòu)師或想要成為架構(gòu)師的人一個非常好的角度來看待不同時代的技術(shù),以及其能解決的問題。本書還會介紹在現(xiàn)有的云原生技術(shù)下,如何以的形態(tài)和方式來構(gòu)建一個應用,使其能夠真正發(fā)揮云的能力,從而達到1 1>2的效果。
本書內(nèi)容
本書分為技術(shù)演進篇和實踐篇兩篇,涉及4個部分,共19章,大概的內(nèi)容分布及簡介如下。
技術(shù)演進篇
第1部分 系統(tǒng)資源(第1~5章)
基礎架構(gòu)解決的是一些通用性問題,主要涉及應用運行時所需要的系統(tǒng)資源,這些系統(tǒng)資源是設計任何類型的應用都需要重視的內(nèi)容。針對不同的系統(tǒng)資源,應用的部署、運行方式也不盡相同。這一部分將首先介紹操作系統(tǒng)、虛擬化等基本知識,然后講解云計算相關(guān)內(nèi)容,以及容器與容器編排的核心知識。
第2部分 應用架構(gòu)(第6~11章)
架構(gòu)的重要性在于實現(xiàn)應用的非功能性需求。非功能性需求往往能決定一個應用運行時的質(zhì)量,也能決定開發(fā)時的質(zhì)量。這一部分將宏觀介紹應用架構(gòu)的定義、分類、目標等,列舉主流架構(gòu)視圖,并按照技術(shù)演進過程介紹單體架構(gòu)、分布式架構(gòu)、SOA架構(gòu)、微服務架構(gòu)等內(nèi)容。
第3部分 軟件工程(第12~16章)
1968年,世界各地的計算機科學家在德國的Garmisch召開了一次國際會議,在會上正式提出了軟件工程一詞。軟件工程管理的核心目的是支撐新的演進式架構(gòu)。軟件工程的整個流程分為5個階段:應用設計、軟件開發(fā)、開發(fā)運維一體化、SRE運維、數(shù)字化運營。在這一部分中,我們將緊密圍繞以上5個技術(shù)演進階段,從軟件工程角度講解云原生應用架構(gòu)的實現(xiàn)。
實踐篇
第4部分 架構(gòu)、應用落地與中臺構(gòu)建(第17~19章)
在這一部分中,我們將詳細剖析云原生架構(gòu),介紹其定義、涉及的關(guān)鍵技術(shù),以及具體的實現(xiàn)過程。本部分還會介紹應用落地的實踐,涉及應用改造、應用拆分、API設計與治理等。此外,中臺這個概念也與云原生密不可分,本部分還會闡述云原生應用與中臺之間的關(guān)系,以及如何通過中臺使應用的云原生化更加便捷。
賀阮
攻讀博士期間的主要研究方向是云計算安全。畢業(yè)之后一直深耕于云計算領(lǐng)域,工作內(nèi)容涉及虛擬化內(nèi)核、容器、調(diào)度、安全、微服務、應用架構(gòu)、軟件設計開發(fā)等,工作崗位覆蓋科研、開發(fā)、產(chǎn)品架構(gòu)、售前解決方案、售中售后支持等。曾先后任OpenStack基金會董事、ISO/IEC JTC1/SC38和ISO/IEC JTC1/SC27標樣委員會委員、聯(lián)合國國際電信聯(lián)盟(ITU)云計算安全組副報告人,以及多個云計算學術(shù)會議、期刊編輯等職位,從各個維度見證了云計算行業(yè)的發(fā)展。
史冰迪
2015年畢業(yè)于中央財經(jīng)大學計算機科學與技術(shù)專業(yè),同年進入中國軟件與技術(shù)服務股份有限公司,從事政務信息化相關(guān)工作。先后任軟件系統(tǒng)研發(fā)工程師、需求經(jīng)理、軟件項目經(jīng)理和集成項目大項目經(jīng)理等多個職位,參與過軟件系統(tǒng)開發(fā)生命周期全流程相關(guān)工作。2020年進入中國信息通信研究院從事政務信息化項目管理工作,從另一個方向繼續(xù)在政務信息化方向發(fā)力,不斷努力將電子政務、數(shù)字政府等工作與各類新技術(shù)結(jié)合。