《深入淺出Serverless(技術(shù)原理與應(yīng)用實(shí)踐)/云計(jì)算與虛擬化技術(shù)叢書(shū)》作者陳耿是微軟全球黑帶技術(shù)專(zhuān)家,曾就職于Red Hat和Oracle等知名軟件企業(yè)。
《深入淺出Serverless(技術(shù)原理與應(yīng)用實(shí)踐)/云計(jì)算與虛擬化技術(shù)叢書(shū)》匯聚了他在Red卜tat和微軟等云計(jì)算公司的實(shí)踐經(jīng)驗(yàn),得到了來(lái)自阿里、騰訊、微軟等一線云計(jì)算公司技術(shù)專(zhuān)家的好評(píng)和推薦。
在內(nèi)容上,《深入淺出Serverless(技術(shù)原理與應(yīng)用實(shí)踐)/云計(jì)算與虛擬化技術(shù)叢書(shū)》不僅詳細(xì)介紹了Serverless的技術(shù)原理、應(yīng)用架構(gòu),以及與之相關(guān)的各種技術(shù)主題,而且深入講解了公有云和私有云下各種主流Serverless平臺(tái)、架構(gòu)和工具的原理、架構(gòu)和使用細(xì)節(jié)。
《深入淺出Serverless(技術(shù)原理與應(yīng)用實(shí)踐)/云計(jì)算與虛擬化技術(shù)叢書(shū)》在邏輯上分為五個(gè)部分:
第一部分(第1~3章)
首先,介紹了Servetless的價(jià)值、技術(shù)特點(diǎn)、應(yīng)用場(chǎng)景、技術(shù)原理、應(yīng)用架構(gòu),以及局限性;其次,介紹了云計(jì)算、容器、微服務(wù)、PaaS、BaaS、FaaS、DevOps、云原生應(yīng)用等技術(shù)及其與Serverless的關(guān)系;最后,介紹了Serverless與各種公有云、私有云之間的關(guān)系,以及Serverless的各種框架和工具。
第二部分(第4~5章)
詳細(xì)介紹了基于AWS Lambda和Azu reFunctions等公有云平臺(tái)的Serverless技術(shù)和服務(wù)。
第三部分(第6章)
基于Docker和Kubernetes介紹了容器的基礎(chǔ)技術(shù)。
第四部分(第7~10章)
詳細(xì)介紹了基于OpenWhisk、Kubeless、Fission及OpenFaaS等私有云平臺(tái)的Serverless技術(shù)和服務(wù)。
第五部分(第11章)
總結(jié)了Serverless的落地方法和要點(diǎn),如平臺(tái)建設(shè)、應(yīng)用架構(gòu)轉(zhuǎn)型,以及Serverless的未來(lái)發(fā)展趨勢(shì)。
容器技術(shù)是這幾年IT界的熱門(mén)話題,各行各業(yè)都在研究如何通過(guò)容器提升企業(yè)軟件開(kāi)發(fā)、交付和管理的效率。Docker和Kubernetes的成功使得僅憑幾個(gè)人也可以輕易管理一個(gè)包含上千臺(tái)機(jī)器的龐大的計(jì)算集群,并且在這個(gè)龐大的集群上部署各種各樣的應(yīng)用。云計(jì)算催生了容器技術(shù),而容器技術(shù)也改變了云計(jì)算。憑借在Linux和開(kāi)源社區(qū)的先天優(yōu)勢(shì),這幾年Red Hat在容器這一領(lǐng)域風(fēng)光無(wú)限。我在Red Hat參與了各種類(lèi)型的容器項(xiàng)目,見(jiàn)證了客戶使用容器平臺(tái)滿足其各種各樣的需求。容器技術(shù)的應(yīng)用可謂百花齊放,范圍涉及微服務(wù)、DevOps到最近的人工智能和深度學(xué)習(xí)。在當(dāng)前容器技術(shù)如此火熱之際,我突然想,容器會(huì)是云計(jì)算的終點(diǎn)嗎?答案當(dāng)然是否定的。如果容器不是終點(diǎn),那么什么東西會(huì)成為容器之后的又一個(gè)技術(shù)熱點(diǎn)呢?什么樣的技術(shù)會(huì)讓云計(jì)算更進(jìn)一步,讓IT及其所服務(wù)的各個(gè)行業(yè)的生產(chǎn)效率更上一層樓呢?
我?guī)е蓡?wèn)進(jìn)行了思考和研究。經(jīng)過(guò)一系列調(diào)研以及和業(yè)界一些朋友的討論后,我認(rèn)為Serverless將會(huì)是繼容器之后又一項(xiàng)改變?cè)朴?jì)算的技術(shù)。回顧云計(jì)算發(fā)展的歷程,從物理機(jī)到虛擬機(jī),從虛擬機(jī)到容器,業(yè)界的關(guān)注點(diǎn)其實(shí)是一點(diǎn)一點(diǎn)地向上層移動(dòng)的。通過(guò)各種技術(shù)手段,我們總是努力降低花費(fèi)在管理基礎(chǔ)設(shè)施上的時(shí)間和精力,以便將更多的時(shí)間放在應(yīng)用和業(yè)務(wù)上。因此,過(guò)去十多年的云計(jì)算的歷程,其實(shí)是一個(gè)“去基礎(chǔ)架構(gòu)”的過(guò)程。這個(gè)過(guò)程讓用戶可以更快速、更簡(jiǎn)單、更高效地將想法變成應(yīng)用,變成在線的服務(wù)。
Serverless符合云計(jì)算發(fā)展的方向,讓用戶可以將關(guān)注點(diǎn)放到具體的業(yè)務(wù)功能上,而不是底層的計(jì)算資源上。Serverless特有的模式存在著潛在的巨大價(jià)值。那么,Serverless會(huì)取代容器嗎?我相信不會(huì)。雖然Serverless架構(gòu)在一些特定的領(lǐng)域會(huì)大放異彩,但是容器在未來(lái)仍然會(huì)是一種重要的應(yīng)用分發(fā)和部署格式。此外容器也將成為許多Serverless平臺(tái)的基礎(chǔ)技術(shù),成為Serverless實(shí)現(xiàn)的基石。在未來(lái),Serverless與容器將會(huì)有許多結(jié)合點(diǎn)。
Serverless還是一個(gè)相對(duì)較新的技術(shù)領(lǐng)域,各種新的觀點(diǎn)、技術(shù)和開(kāi)源項(xiàng)目還在不斷醞釀和涌現(xiàn)。作為一名架構(gòu)師,除了要解決企業(yè)當(dāng)下和近期可能面對(duì)的問(wèn)題外,還需要有一定的前瞻性,掌握未來(lái)架構(gòu)可能的選項(xiàng),才能對(duì)未來(lái)的架構(gòu)做出合理決策。作為一名工程師,必須要緊跟技術(shù)的腳步,讓自己在不斷變化的IT洪流中屹立不倒。本書(shū)寫(xiě)作的初衷正是為希望了解Serverless領(lǐng)域現(xiàn)狀的架構(gòu)師和技術(shù)人員提供指南和參考。
本書(shū)主要內(nèi)容
本書(shū)是一本介紹Serverless技術(shù)的書(shū)籍,可以讓想了解Serverless的讀者快速了解Serverless的概念和原理。此外,書(shū)中還用大量的篇幅介紹了當(dāng)前業(yè)界最新的Serverless平臺(tái)、框架和工具的原理、架構(gòu)和使用細(xì)節(jié),內(nèi)容涵蓋了公有云和私有云的Serverless平臺(tái)。
全書(shū)共分為11章,循序漸進(jìn)、深入淺出地講解Serverless相關(guān)的知識(shí)和技術(shù)。
前三章重點(diǎn)介紹Serverless的概念和原理,為讀者構(gòu)建Serverless知識(shí)體系打下理論基礎(chǔ)。第1章介紹了Serverless的基礎(chǔ)知識(shí),讓讀者了解Serverless的概念及其特點(diǎn)。Serverless的存在不能脫離這個(gè)時(shí)代,所以第2章詳細(xì)討論了Serverless涉及的云計(jì)算的各種技術(shù),如微服務(wù)、容器和DevOps等,讓讀者對(duì)Serverless的理解更加深入。在理解Serverless的基礎(chǔ)上,第3章介紹了業(yè)界目前的Serverless的各類(lèi)平臺(tái)、工具和框架的實(shí)現(xiàn),讓讀者對(duì)該技術(shù)領(lǐng)域的現(xiàn)狀有更清晰的認(rèn)識(shí)。
第4章和第5章詳細(xì)介紹了公有云Serverless平臺(tái)的技術(shù)細(xì)節(jié)。以AWS Lambda和微軟的Azure Functions為例,向讀者介紹了當(dāng)前主流的公有云廠商在Serverless領(lǐng)域的實(shí)現(xiàn)。
第6章是容器技術(shù)的速成教程。容器技術(shù)是當(dāng)下云計(jì)算重要的基礎(chǔ)技術(shù),也是許多Serverless平臺(tái)的實(shí)現(xiàn)基礎(chǔ)。通過(guò)本章讀者可以快速了解當(dāng)下熱門(mén)的容器技術(shù)(Docker和Kubernetes)的原理和基本使用技巧。
第7~10章針對(duì)私有云的Serverless計(jì)算平臺(tái),分別詳細(xì)介紹了OpenWhisk、Kubeless、Fission及OpenFaaS的系統(tǒng)架構(gòu)、核心概念以及使用技巧,幫助讀者了解各類(lèi)Serverless平臺(tái)的技術(shù)特點(diǎn)。
第11章針對(duì)Serverless技術(shù)的落地給出了具體建議,總結(jié)了本書(shū)對(duì)Serverless技術(shù)的觀點(diǎn),并對(duì)Serverless技術(shù)的未來(lái)進(jìn)行了展望。
本書(shū)亮點(diǎn)
本書(shū)是關(guān)于Serverless與容器的原創(chuàng)著作。Serverless是當(dāng)前的一個(gè)熱門(mén)話題,但是大家對(duì)Serverless概念并不了解。本書(shū)整理了業(yè)界當(dāng)前對(duì)Serverless的主流觀點(diǎn),梳理了Serverless技術(shù)發(fā)展的現(xiàn)狀,是一個(gè)系統(tǒng)的Serverless指南。
最新資訊。原創(chuàng)的Serverless著作,為讀者呈現(xiàn)業(yè)界最新的觀點(diǎn)和知識(shí)。
縱覽大局。對(duì)Serverless的介紹結(jié)合了當(dāng)下云計(jì)算的背景,也結(jié)合了容器技術(shù)。
細(xì)致入微。在介紹原理和觀點(diǎn)的同時(shí)也講解了大量Serverless平臺(tái)的技術(shù)細(xì)節(jié)。
互動(dòng)實(shí)操。提供了大量可操作的實(shí)驗(yàn)步驟,讓讀者可以動(dòng)手體驗(yàn),加深理解。
本書(shū)讀者對(duì)象
本書(shū)介紹了Serverless架構(gòu)的概念、原理以及當(dāng)前公有云和私有云領(lǐng)域的眾多Serverless平臺(tái)的實(shí)現(xiàn),能幫助云計(jì)算、容器等領(lǐng)域的軟件架構(gòu)師和技術(shù)人員快速了解Serverless這一領(lǐng)域的發(fā)展現(xiàn)狀,為企業(yè)和組織的Serverless技術(shù)選型、轉(zhuǎn)型和落地提供參考。此外,本書(shū)涵蓋了大量
前言
第1章 Serverless基礎(chǔ)1
1.1 什么是Serverless1
1.2 Serverless帶來(lái)的價(jià)值3
1.3 Serverless的技術(shù)實(shí)現(xiàn)4
1.3.1 理念與實(shí)現(xiàn)4
1.3.2 FaaS與BaaS5
1.4 Serverless應(yīng)用架構(gòu)7
1.4.1 傳統(tǒng)應(yīng)用架構(gòu)7
1.4.2 Serverless應(yīng)用架構(gòu)7
1.4.3 兩種架構(gòu)的比較8
1.5 Serverless的技術(shù)特點(diǎn)9
1.6 Serverless的應(yīng)用場(chǎng)景11
1.7 Serverless的局限12
1.8 本章小結(jié)13
第2章 Serverless與相關(guān)技術(shù)15
2.1 云計(jì)算15
2.1.1 從私有數(shù)據(jù)中心到云15
2.1.2 IaaS、PaaS與SaaS16
2.1.3 Serverless與云計(jì)算17
2.2 微服務(wù)18
2.2.1 從SOA到微服務(wù)18
2.2.2 微服務(wù)的價(jià)值與挑戰(zhàn)19
2.2.3 Serverless與微服務(wù)19
2.3 容器20
2.3.1 容器技術(shù)的興起20
2.3.2 Serverless與容器21
2.4 PaaS22
2.4.1 以應(yīng)用為中心22
2.4.2 Serverless與PaaS23
2.5 FaaS24
2.5.1 Serverless實(shí)現(xiàn)的基礎(chǔ)24
2.5.2 FaaS的架構(gòu)24
2.5.3 函數(shù)的生命周期25
2.5.4 函數(shù)工作流26
2.6 BaaS26
2.6.1 BaaS的價(jià)值26
2.6.2 廣義的Serverless27
2.7 NoOps27
2.7.1 無(wú)人運(yùn)維嗎27
2.7.2 “無(wú)服務(wù)器”與“無(wú)人運(yùn)維”28
2.8 DevOps28
2.9 云原生應(yīng)用29
2.9.1 因云而生29
2.9.2 Serverless與Cloud Native29
2.10 本章小結(jié)30
第3章 Serverless的實(shí)現(xiàn)31
3.1 Serverless技術(shù)的發(fā)展31
3.2 Serverless與公有云33
3.2.1 Amazon Web Services34
3.2.2 Microsoft Azure36
3.2.3 Google Cloud Platform38
3.2.4 Webtask39
3.2.5 Hyper.sh39
3.2.6 阿里云40
3.2.7 騰訊云42
3.2.8 小結(jié)43
3.3 Serverless與私有化部署43
3.3.1 OpenWhisk43
3.3.2 Fission44
3.3.3 Kubeless45
3.3.4 OpenFaaS45
3.3.5 Fn47
3.3.6 小結(jié)48
3.4 Serverless框架和工具49
3.4.1 Serverless Framework49
3.4.2 Chalice50
3.4.3 Claudia.js50
3.4.4 Apex51
3.4.5 Spring Cloud Function51
3.4.6 AWS SAM52
3.4.7 小結(jié)53
3.5 Serverless后臺(tái)服務(wù)53
3.6 本章小結(jié)54
第4章 AWS Lambda55
4.1 AWS55
4.2 AWS Serverless56
4.3 AWS Lambda概述57
4.4 第一個(gè)Serverless應(yīng)用58
4.4.1 獲取AWS賬號(hào)58
4.4.2 AWS Lambda控制面板59
4.4.3 創(chuàng)建函數(shù)61
4.4.4 編輯函數(shù)62
4.4.5 測(cè)試函數(shù)63
4.4.6 外部訪問(wèn)63
4.4.7 運(yùn)維監(jiān)控66
4.4.8 回顧66
4.5 權(quán)限控制66
4.5.1 IAM67
4.5.2 策略68
4.5.3 角色68
4.6 編程模型69
4.6.1 代碼開(kāi)發(fā)69
4.6.2 Handler70
4.6.3 執(zhí)行上下文70
4.6.4 日志輸出71
4.6.5 異常處理72
4.6.6 無(wú)狀態(tài)72
4.7 事件驅(qū)動(dòng)73
4.7.1 事件源73
4.7.2 觸發(fā)模式74
4.8 日志監(jiān)控75
4.9 開(kāi)發(fā)輔助77
4.9.1 環(huán)境變量77
4.9.2 標(biāo)簽77
4.9.3 版本控制78
4.10 運(yùn)行限制78
4.10.1 資源限制79
4.10.2 并發(fā)控制79
4.11 配置與部署79
4.12 本章小結(jié)81
第5章 Azure Functions83
5.1 Microsoft Azure83
5.2 Azure Functions概述85
5.3 創(chuàng)建Azure Serverless應(yīng)用86
5.3.1 注冊(cè)Azure賬號(hào)86
5.3.2 Azure控制臺(tái)87
5.3.3 函數(shù)應(yīng)用88
5.3.4 創(chuàng)建函數(shù)90
5.3.5 調(diào)用函數(shù)92
5.3.6 日志與監(jiān)控93
5.4 Azure Functions命令行95
5.4.1 安裝命令行95
5.4.2 創(chuàng)建本地函數(shù)96
5.4.3 測(cè)試本地函數(shù)97
5.4.4 發(fā)布至公有云98
5.5 深入了解Azure Functions99
5.5.1 函數(shù)應(yīng)用設(shè)置99
5.5.2 Trigger與Bindings101
5.5.3 函數(shù)代理103
5.5.4 Slot104
5.6 私有云部署105
5.7 本章小結(jié)107
第6章 容器技術(shù)基礎(chǔ)108
6.1 什么是容器108
6.1.1 容器109
6.1.2 容器鏡像110
6.1.3 鏡像倉(cāng)庫(kù)110
6.1.4 容器編排111
6.1.5 容器與Serverless111
6.2 Docker111
6.2.1 Vagrant111
6.2.2 VirtualBox112
6.2.3 安裝Docker113
6.2.4 運(yùn)行容器114
6.2.5 構(gòu)建容器鏡像116
6.2.6 分享鏡像117
6.3 Kubernetes基礎(chǔ)118
6.3.1 命名空間120
6.3.2 Pod120
6.3.3 Service120
6.3.4 Deployment120
6.3.5 ReplicaSet121
6.3.6 網(wǎng)絡(luò)121
6.3.7 Ingress121
6.3.8 交互工具122
6.4 構(gòu)建Kubernetes環(huán)境122
6.4.1 啟動(dòng)Vagrant Box123
6.4.2 修改默認(rèn)域124
6.5 Kubernetes實(shí)戰(zhàn)124
6.5.1 部署容器124
6.5.2 彈性擴(kuò)展126
6.5.3 服務(wù)發(fā)現(xiàn)127
6.5.4 資源組織128
6.5.5 容器調(diào)度129
6.6 本章小結(jié)131
第7章 OpenWhisk132
7.1 OpenWhisk項(xiàng)目132
7.2 Hello Whisk133
7.3 邏輯架構(gòu)135
7.3.1 Namespace136
7.3.2 Package136
7.3.3 Action137
7.3.4 Feed141
7.3.5 Trigger141
7.3.6 Rule142
7.4 系統(tǒng)架構(gòu)143
7.5 Kubernetes部署146
7.5.1 準(zhǔn)備Kubernetes集群146
7.5.2 集群基礎(chǔ)設(shè)置146
7.5.3 創(chuàng)建訪問(wèn)入口149
7.5.4 部署組件149
7.5.5 加載系統(tǒng)配置153
7.5.6 測(cè)試集群153
7.5.7 刪除集群154
7.6 Helm部署155
7.6.1 安裝Helm155
7.6.2 環(huán)境配置155
7.6.3 部署Chart156
7.6.4 管理應(yīng)用156
7.7 蛋糕管理服務(wù)156
7.7.1 開(kāi)發(fā)環(huán)境157
7.7.2 準(zhǔn)備數(shù)據(jù)庫(kù)157
7.7.3 定義Action157
7.7.4 創(chuàng)建Package159
7.7.5 部署Action160
7.7.6 發(fā)布API161
7.8 本章小結(jié)162
第8章 Kubeless163
8.1 Kubeless項(xiàng)目163
8.1.1 系統(tǒng)架構(gòu)164
8.1.2 運(yùn)行時(shí)165
8.2 Kubeless概述165
8.2.1 部署Kubeless165
8.2.2 配置客戶端166
8.2.3 部署函數(shù)167
8.2.4 Kubeless UI168
8.3 Function169
8.3.1 函數(shù)部署170
8.3.2 函數(shù)調(diào)用172
8.3.3 資源限制172
8.3.4 自動(dòng)擴(kuò)展173
8.4 Trigger173
8.4.1 HTTP Trigger173
8.4.2 Cronjob Trigger175
8.4.3 Kafka Trigger175
8.4.4 NATS Trigger178
8.5 本章小結(jié)179
第9章 Fission180
9.1 Fission項(xiàng)目180
9.1.1 邏輯架構(gòu)180
9.1.2 系統(tǒng)架構(gòu)181
9.2 部署Fission182
9.2.1 安裝Helm182
9.2.2 部署Fission Chart182
9.2.3 命令行工具183
9.2.4 Hello Fission183
9.3 深入探討Fission184
9.3.1 Environment185
9.3.2 Function187
9.3.3 Package188
9.3.4 Trigger191
9.4 執(zhí)行模式192
9.4.1 Poolbased模式192
9.4.2 New Deploy模式193
9.5 Workflows194
9.5.1 Workflows定義194
9.5.2 配置Workflows195
9.5.3 Fortune Whale195
9.6 本章小結(jié)197
第10章 OpenFaaS199
10.1 OpenFaaS項(xiàng)目199
10.1.1 OpenFaaS社區(qū)200
10.1.2 系統(tǒng)架構(gòu)200
10.2 初識(shí)OpenFaaS200
10.2.1 部署組件201
10.2.2 命令行工具202
10.2.3 創(chuàng)建函數(shù)202
10.2.4 圖形界面203
10.3 OpenFaaS函數(shù)203
10.3.1 抽象方式203
10.3.2 函數(shù)模板204
10.3.3 創(chuàng)建函數(shù)205
10.3.4 構(gòu)建函數(shù)206
10.3.5 推送鏡像207
10.3.6 部署函數(shù)207
10.4 Watchdog208
10.4.1 工作原理208
10.4.2 配置Watchdog209
10.4.3 ofwatchdog210
10.5 監(jiān)控210
10.5.1 監(jiān)控指標(biāo)210
10.5.2 監(jiān)控面板210
10.5.3 監(jiān)控預(yù)警213
10.6 彈性擴(kuò)展214
10.6.1 基于Alertmanager擴(kuò)展214
10.6.2 基于HPA擴(kuò)展215
10.7 函數(shù)應(yīng)用市場(chǎng)215
10.8 本章小結(jié)217
第11章 Serverless的落地與展望218
11.1 Serverless的落地218
11.2 Serverless平臺(tái)建設(shè)219
11.2.1 公有云219
11.2.2 私有云220
11.2.3 混合云220
11.3 Serverless應(yīng)用架構(gòu)轉(zhuǎn)型223
11.3.1 開(kāi)發(fā)模式223
11.3.2 設(shè)計(jì)原則225
11.3.3 遷移與重構(gòu)226
11.4 Serverless的未來(lái)227
11.4.1 建立行業(yè)規(guī)范228
11.4.2 完善工具鏈229
11.4.3 深入結(jié)合容器229
11.5 本章小結(jié)230
后記232