《深入淺出Serverless(技術(shù)原理與應(yīng)用實踐)/云計算與虛擬化技術(shù)叢書》作者陳耿是微軟全球黑帶技術(shù)專家,曾就職于Red Hat和Oracle等知名軟件企業(yè)。
《深入淺出Serverless(技術(shù)原理與應(yīng)用實踐)/云計算與虛擬化技術(shù)叢書》匯聚了他在Red卜tat和微軟等云計算公司的實踐經(jīng)驗,得到了來自阿里、騰訊、微軟等一線云計算公司技術(shù)專家的好評和推薦。
在內(nèi)容上,《深入淺出Serverless(技術(shù)原理與應(yīng)用實踐)/云計算與虛擬化技術(shù)叢書》不僅詳細(xì)介紹了Serverless的技術(shù)原理、應(yīng)用架構(gòu),以及與之相關(guān)的各種技術(shù)主題,而且深入講解了公有云和私有云下各種主流Serverless平臺、架構(gòu)和工具的原理、架構(gòu)和使用細(xì)節(jié)。
《深入淺出Serverless(技術(shù)原理與應(yīng)用實踐)/云計算與虛擬化技術(shù)叢書》在邏輯上分為五個部分:
第一部分(第1~3章)
首先,介紹了Servetless的價值、技術(shù)特點、應(yīng)用場景、技術(shù)原理、應(yīng)用架構(gòu),以及局限性;其次,介紹了云計算、容器、微服務(wù)、PaaS、BaaS、FaaS、DevOps、云原生應(yīng)用等技術(shù)及其與Serverless的關(guān)系;最后,介紹了Serverless與各種公有云、私有云之間的關(guān)系,以及Serverless的各種框架和工具。
第二部分(第4~5章)
詳細(xì)介紹了基于AWS Lambda和Azu reFunctions等公有云平臺的Serverless技術(shù)和服務(wù)。
第三部分(第6章)
基于Docker和Kubernetes介紹了容器的基礎(chǔ)技術(shù)。
第四部分(第7~10章)
詳細(xì)介紹了基于OpenWhisk、Kubeless、Fission及OpenFaaS等私有云平臺的Serverless技術(shù)和服務(wù)。
第五部分(第11章)
總結(jié)了Serverless的落地方法和要點,如平臺建設(shè)、應(yīng)用架構(gòu)轉(zhuǎn)型,以及Serverless的未來發(fā)展趨勢。
容器技術(shù)是這幾年IT界的熱門話題,各行各業(yè)都在研究如何通過容器提升企業(yè)軟件開發(fā)、交付和管理的效率。Docker和Kubernetes的成功使得僅憑幾個人也可以輕易管理一個包含上千臺機器的龐大的計算集群,并且在這個龐大的集群上部署各種各樣的應(yīng)用。云計算催生了容器技術(shù),而容器技術(shù)也改變了云計算。憑借在Linux和開源社區(qū)的先天優(yōu)勢,這幾年Red Hat在容器這一領(lǐng)域風(fēng)光無限。我在Red Hat參與了各種類型的容器項目,見證了客戶使用容器平臺滿足其各種各樣的需求。容器技術(shù)的應(yīng)用可謂百花齊放,范圍涉及微服務(wù)、DevOps到最近的人工智能和深度學(xué)習(xí)。在當(dāng)前容器技術(shù)如此火熱之際,我突然想,容器會是云計算的終點嗎?答案當(dāng)然是否定的。如果容器不是終點,那么什么東西會成為容器之后的又一個技術(shù)熱點呢?什么樣的技術(shù)會讓云計算更進一步,讓IT及其所服務(wù)的各個行業(yè)的生產(chǎn)效率更上一層樓呢?
我?guī)е蓡栠M行了思考和研究。經(jīng)過一系列調(diào)研以及和業(yè)界一些朋友的討論后,我認(rèn)為Serverless將會是繼容器之后又一項改變云計算的技術(shù);仡櫾朴嬎惆l(fā)展的歷程,從物理機到虛擬機,從虛擬機到容器,業(yè)界的關(guān)注點其實是一點一點地向上層移動的。通過各種技術(shù)手段,我們總是努力降低花費在管理基礎(chǔ)設(shè)施上的時間和精力,以便將更多的時間放在應(yīng)用和業(yè)務(wù)上。因此,過去十多年的云計算的歷程,其實是一個“去基礎(chǔ)架構(gòu)”的過程。這個過程讓用戶可以更快速、更簡單、更高效地將想法變成應(yīng)用,變成在線的服務(wù)。
Serverless符合云計算發(fā)展的方向,讓用戶可以將關(guān)注點放到具體的業(yè)務(wù)功能上,而不是底層的計算資源上。Serverless特有的模式存在著潛在的巨大價值。那么,Serverless會取代容器嗎?我相信不會。雖然Serverless架構(gòu)在一些特定的領(lǐng)域會大放異彩,但是容器在未來仍然會是一種重要的應(yīng)用分發(fā)和部署格式。此外容器也將成為許多Serverless平臺的基礎(chǔ)技術(shù),成為Serverless實現(xiàn)的基石。在未來,Serverless與容器將會有許多結(jié)合點。
Serverless還是一個相對較新的技術(shù)領(lǐng)域,各種新的觀點、技術(shù)和開源項目還在不斷醞釀和涌現(xiàn)。作為一名架構(gòu)師,除了要解決企業(yè)當(dāng)下和近期可能面對的問題外,還需要有一定的前瞻性,掌握未來架構(gòu)可能的選項,才能對未來的架構(gòu)做出合理決策。作為一名工程師,必須要緊跟技術(shù)的腳步,讓自己在不斷變化的IT洪流中屹立不倒。本書寫作的初衷正是為希望了解Serverless領(lǐng)域現(xiàn)狀的架構(gòu)師和技術(shù)人員提供指南和參考。
本書主要內(nèi)容
本書是一本介紹Serverless技術(shù)的書籍,可以讓想了解Serverless的讀者快速了解Serverless的概念和原理。此外,書中還用大量的篇幅介紹了當(dāng)前業(yè)界最新的Serverless平臺、框架和工具的原理、架構(gòu)和使用細(xì)節(jié),內(nèi)容涵蓋了公有云和私有云的Serverless平臺。
全書共分為11章,循序漸進、深入淺出地講解Serverless相關(guān)的知識和技術(shù)。
前三章重點介紹Serverless的概念和原理,為讀者構(gòu)建Serverless知識體系打下理論基礎(chǔ)。第1章介紹了Serverless的基礎(chǔ)知識,讓讀者了解Serverless的概念及其特點。Serverless的存在不能脫離這個時代,所以第2章詳細(xì)討論了Serverless涉及的云計算的各種技術(shù),如微服務(wù)、容器和DevOps等,讓讀者對Serverless的理解更加深入。在理解Serverless的基礎(chǔ)上,第3章介紹了業(yè)界目前的Serverless的各類平臺、工具和框架的實現(xiàn),讓讀者對該技術(shù)領(lǐng)域的現(xiàn)狀有更清晰的認(rèn)識。
第4章和第5章詳細(xì)介紹了公有云Serverless平臺的技術(shù)細(xì)節(jié)。以AWS Lambda和微軟的Azure Functions為例,向讀者介紹了當(dāng)前主流的公有云廠商在Serverless領(lǐng)域的實現(xiàn)。
第6章是容器技術(shù)的速成教程。容器技術(shù)是當(dāng)下云計算重要的基礎(chǔ)技術(shù),也是許多Serverless平臺的實現(xiàn)基礎(chǔ)。通過本章讀者可以快速了解當(dāng)下熱門的容器技術(shù)(Docker和Kubernetes)的原理和基本使用技巧。
第7~10章針對私有云的Serverless計算平臺,分別詳細(xì)介紹了OpenWhisk、Kubeless、Fission及OpenFaaS的系統(tǒng)架構(gòu)、核心概念以及使用技巧,幫助讀者了解各類Serverless平臺的技術(shù)特點。
第11章針對Serverless技術(shù)的落地給出了具體建議,總結(jié)了本書對Serverless技術(shù)的觀點,并對Serverless技術(shù)的未來進行了展望。
本書亮點
本書是關(guān)于Serverless與容器的原創(chuàng)著作。Serverless是當(dāng)前的一個熱門話題,但是大家對Serverless概念并不了解。本書整理了業(yè)界當(dāng)前對Serverless的主流觀點,梳理了Serverless技術(shù)發(fā)展的現(xiàn)狀,是一個系統(tǒng)的Serverless指南。
最新資訊。原創(chuàng)的Serverless著作,為讀者呈現(xiàn)業(yè)界最新的觀點和知識。
縱覽大局。對Serverless的介紹結(jié)合了當(dāng)下云計算的背景,也結(jié)合了容器技術(shù)。
細(xì)致入微。在介紹原理和觀點的同時也講解了大量Serverless平臺的技術(shù)細(xì)節(jié)。
互動實操。提供了大量可操作的實驗步驟,讓讀者可以動手體驗,加深理解。
本書讀者對象
本書介紹了Serverless架構(gòu)的概念、原理以及當(dāng)前公有云和私有云領(lǐng)域的眾多Serverless平臺的實現(xiàn),能幫助云計算、容器等領(lǐng)域的軟件架構(gòu)師和技術(shù)人員快速了解Serverless這一領(lǐng)域的發(fā)展現(xiàn)狀,為企業(yè)和組織的Serverless技術(shù)選型、轉(zhuǎn)型和落地提供參考。此外,本書涵蓋了大量
前言
第1章 Serverless基礎(chǔ)1
1.1 什么是Serverless1
1.2 Serverless帶來的價值3
1.3 Serverless的技術(shù)實現(xiàn)4
1.3.1 理念與實現(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ù)特點9
1.6 Serverless的應(yīng)用場景11
1.7 Serverless的局限12
1.8 本章小結(jié)13
第2章 Serverless與相關(guān)技術(shù)15
2.1 云計算15
2.1.1 從私有數(shù)據(jù)中心到云15
2.1.2 IaaS、PaaS與SaaS16
2.1.3 Serverless與云計算17
2.2 微服務(wù)18
2.2.1 從SOA到微服務(wù)18
2.2.2 微服務(wù)的價值與挑戰(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實現(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的價值26
2.6.2 廣義的Serverless27
2.7 NoOps27
2.7.1 無人運維嗎27
2.7.2 “無服務(wù)器”與“無人運維”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的實現(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后臺服務(wù)53
3.6 本章小結(jié)54
第4章 AWS Lambda55
4.1 AWS55
4.2 AWS Serverless56
4.3 AWS Lambda概述57
4.4 第一個Serverless應(yīng)用58
4.4.1 獲取AWS賬號58
4.4.2 AWS Lambda控制面板59
4.4.3 創(chuàng)建函數(shù)61
4.4.4 編輯函數(shù)62
4.4.5 測試函數(shù)63
4.4.6 外部訪問63
4.4.7 運維監(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 代碼開發(fā)69
4.6.2 Handler70
4.6.3 執(zhí)行上下文70
4.6.4 日志輸出71
4.6.5 異常處理72
4.6.6 無狀態(tài)72
4.7 事件驅(qū)動73
4.7.1 事件源73
4.7.2 觸發(fā)模式74
4.8 日志監(jiān)控75
4.9 開發(fā)輔助77
4.9.1 環(huán)境變量77
4.9.2 標(biāo)簽77
4.9.3 版本控制78
4.10 運行限制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 注冊Azure賬號86
5.3.2 Azure控制臺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 測試本地函數(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 鏡像倉庫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 運行容器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 啟動Vagrant Box123
6.4.2 修改默認(rèn)域124
6.5 Kubernetes實戰(zhàn)124
6.5.1 部署容器124
6.5.2 彈性擴展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項目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)建訪問入口149
7.5.4 部署組件149
7.5.5 加載系統(tǒng)配置153
7.5.6 測試集群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 開發(fā)環(huán)境157
7.7.2 準(zhǔn)備數(shù)據(jù)庫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項目163
8.1.1 系統(tǒng)架構(gòu)164
8.1.2 運行時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 自動擴展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項目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項目199
10.1.1 OpenFaaS社區(qū)200
10.1.2 系統(tǒng)架構(gòu)200
10.2 初識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 彈性擴展214
10.6.1 基于Alertmanager擴展214
10.6.2 基于HPA擴展215
10.7 函數(shù)應(yīng)用市場215
10.8 本章小結(jié)217
第11章 Serverless的落地與展望218
11.1 Serverless的落地218
11.2 Serverless平臺建設(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 開發(fā)模式223
11.3.2 設(shè)計原則225
11.3.3 遷移與重構(gòu)226
11.4 Serverless的未來227
11.4.1 建立行業(yè)規(guī)范228
11.4.2 完善工具鏈229
11.4.3 深入結(jié)合容器229
11.5 本章小結(jié)230
后記232