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