《深入淺出Serverless(技術(shù)原理與應用實踐)/云計算與虛擬化技術(shù)叢書》作者陳耿是微軟全球黑帶技術(shù)專家,曾就職于Red Hat和Oracle等知名軟件企業(yè)。
《深入淺出Serverless(技術(shù)原理與應用實踐)/云計算與虛擬化技術(shù)叢書》匯聚了他在Red卜tat和微軟等云計算公司的實踐經(jīng)驗,得到了來自阿里、騰訊、微軟等一線云計算公司技術(shù)專家的好評和推薦。
在內(nèi)容上,《深入淺出Serverless(技術(shù)原理與應用實踐)/云計算與虛擬化技術(shù)叢書》不僅詳細介紹了Serverless的技術(shù)原理、應用架構(gòu),以及與之相關(guān)的各種技術(shù)主題,而且深入講解了公有云和私有云下各種主流Serverless平臺、架構(gòu)和工具的原理、架構(gòu)和使用細節(jié)。
《深入淺出Serverless(技術(shù)原理與應用實踐)/云計算與虛擬化技術(shù)叢書》在邏輯上分為五個部分:
第一部分(第1~3章)
首先,介紹了Servetless的價值、技術(shù)特點、應用場景、技術(shù)原理、應用架構(gòu),以及局限性;其次,介紹了云計算、容器、微服務、PaaS、BaaS、FaaS、DevOps、云原生應用等技術(shù)及其與Serverless的關(guān)系;最后,介紹了Serverless與各種公有云、私有云之間的關(guān)系,以及Serverless的各種框架和工具。
第二部分(第4~5章)
詳細介紹了基于AWS Lambda和Azu reFunctions等公有云平臺的Serverless技術(shù)和服務。
第三部分(第6章)
基于Docker和Kubernetes介紹了容器的基礎(chǔ)技術(shù)。
第四部分(第7~10章)
詳細介紹了基于OpenWhisk、Kubeless、Fission及OpenFaaS等私有云平臺的Serverless技術(shù)和服務。
第五部分(第11章)
總結(jié)了Serverless的落地方法和要點,如平臺建設(shè)、應用架構(gòu)轉(zhuǎn)型,以及Serverless的未來發(fā)展趨勢。
適讀人群 :原云計算、微服務、容器等相關(guān)技術(shù)領(lǐng)域的工程師都需要了解并掌握這們技術(shù)。 1)作者是微軟全球黑帶技術(shù)專家,云方案架構(gòu)師。曾就職于Red Hat和Oracle等國內(nèi)外軟件企業(yè)
(2)阿里、騰訊、微軟、技術(shù)專家聯(lián)袂推薦
(3)詳細介紹Serverless 技術(shù)原理、應用架構(gòu),以及容器、微服務、PaaS、FaaS等與之相關(guān)的技術(shù)主題
(4)深入講解公有云和私有云下的各種主流Serverless平臺、架構(gòu)和工具的原理和使用細節(jié),如AWS Lambda、Azure Functions、OpenWhisk、Kubeless、Fission及OpenFaaS等。
容器技術(shù)是這幾年IT界的熱門話題,各行各業(yè)都在研究如何通過容器提升企業(yè)軟件開發(fā)、交付和管理的效率。Docker和Kubernetes的成功使得僅憑幾個人也可以輕易管理一個包含上千臺機器的龐大的計算集群,并且在這個龐大的集群上部署各種各樣的應用。云計算催生了容器技術(shù),而容器技術(shù)也改變了云計算。憑借在Linux和開源社區(qū)的先天優(yōu)勢,這幾年Red Hat在容器這一領(lǐng)域風光無限。我在Red Hat參與了各種類型的容器項目,見證了客戶使用容器平臺滿足其各種各樣的需求。容器技術(shù)的應用可謂百花齊放,范圍涉及微服務、DevOps到最近的人工智能和深度學習。在當前容器技術(shù)如此火熱之際,我突然想,容器會是云計算的終點嗎?答案當然是否定的。如果容器不是終點,那么什么東西會成為容器之后的又一個技術(shù)熱點呢?什么樣的技術(shù)會讓云計算更進一步,讓IT及其所服務的各個行業(yè)的生產(chǎn)效率更上一層樓呢?
我?guī)е蓡栠M行了思考和研究。經(jīng)過一系列調(diào)研以及和業(yè)界一些朋友的討論后,我認為Serverless將會是繼容器之后又一項改變云計算的技術(shù);仡櫾朴嬎惆l(fā)展的歷程,從物理機到虛擬機,從虛擬機到容器,業(yè)界的關(guān)注點其實是一點一點地向上層移動的。通過各種技術(shù)手段,我們總是努力降低花費在管理基礎(chǔ)設(shè)施上的時間和精力,以便將更多的時間放在應用和業(yè)務上。因此,過去十多年的云計算的歷程,其實是一個“去基礎(chǔ)架構(gòu)”的過程。這個過程讓用戶可以更快速、更簡單、更高效地將想法變成應用,變成在線的服務。
Serverless符合云計算發(fā)展的方向,讓用戶可以將關(guān)注點放到具體的業(yè)務功能上,而不是底層的計算資源上。Serverless特有的模式存在著潛在的巨大價值。那么,Serverless會取代容器嗎?我相信不會。雖然Serverless架構(gòu)在一些特定的領(lǐng)域會大放異彩,但是容器在未來仍然會是一種重要的應用分發(fā)和部署格式。此外容器也將成為許多Serverless平臺的基礎(chǔ)技術(shù),成為Serverless實現(xiàn)的基石。在未來,Serverless與容器將會有許多結(jié)合點。
Serverless還是一個相對較新的技術(shù)領(lǐng)域,各種新的觀點、技術(shù)和開源項目還在不斷醞釀和涌現(xiàn)。作為一名架構(gòu)師,除了要解決企業(yè)當下和近期可能面對的問題外,還需要有一定的前瞻性,掌握未來架構(gòu)可能的選項,才能對未來的架構(gòu)做出合理決策。作為一名工程師,必須要緊跟技術(shù)的腳步,讓自己在不斷變化的IT洪流中屹立不倒。本書寫作的初衷正是為希望了解Serverless領(lǐng)域現(xiàn)狀的架構(gòu)師和技術(shù)人員提供指南和參考。
本書主要內(nèi)容
本書是一本介紹Serverless技術(shù)的書籍,可以讓想了解Serverless的讀者快速了解Serverless的概念和原理。此外,書中還用大量的篇幅介紹了當前業(yè)界最新的Serverless平臺、框架和工具的原理、架構(gòu)和使用細節(jié),內(nèi)容涵蓋了公有云和私有云的Serverless平臺。
全書共分為11章,循序漸進、深入淺出地講解Serverless相關(guān)的知識和技術(shù)。
前三章重點介紹Serverless的概念和原理,為讀者構(gòu)建Serverless知識體系打下理論基礎(chǔ)。第1章介紹了Serverless的基礎(chǔ)知識,讓讀者了解Serverless的概念及其特點。Serverless的存在不能脫離這個時代,所以第2章詳細討論了Serverless涉及的云計算的各種技術(shù),如微服務、容器和DevOps等,讓讀者對Serverless的理解更加深入。在理解Serverless的基礎(chǔ)上,第3章介紹了業(yè)界目前的Serverless的各類平臺、工具和框架的實現(xiàn),讓讀者對該技術(shù)領(lǐng)域的現(xiàn)狀有更清晰的認識。
第4章和第5章詳細介紹了公有云Serverless平臺的技術(shù)細節(jié)。以AWS Lambda和微軟的Azure Functions為例,向讀者介紹了當前主流的公有云廠商在Serverless領(lǐng)域的實現(xiàn)。
第6章是容器技術(shù)的速成教程。容器技術(shù)是當下云計算重要的基礎(chǔ)技術(shù),也是許多Serverless平臺的實現(xiàn)基礎(chǔ)。通過本章讀者可以快速了解當下熱門的容器技術(shù)(Docker和Kubernetes)的原理和基本使用技巧。
第7~10章針對私有云的Serverless計算平臺,分別詳細介紹了OpenWhisk、Kubeless、Fission及OpenFaaS的系統(tǒng)架構(gòu)、核心概念以及使用技巧,幫助讀者了解各類Serverless平臺的技術(shù)特點。
第11章針對Serverless技術(shù)的落地給出了具體建議,總結(jié)了本書對Serverless技術(shù)的觀點,并對Serverless技術(shù)的未來進行了展望。
本書亮點
本書是關(guān)于Serverless與容器的原創(chuàng)著作。Serverless是當前的一個熱門話題,但是大家對Serverless概念并不了解。本書整理了業(yè)界當前對Serverless的主流觀點,梳理了Serverless技術(shù)發(fā)展的現(xiàn)狀,是一個系統(tǒng)的Serverless指南。
最新資訊。原創(chuàng)的Serverless著作,為讀者呈現(xiàn)業(yè)界最新的觀點和知識。
縱覽大局。對Serverless的介紹結(jié)合了當下云計算的背景,也結(jié)合了容器技術(shù)。
細致入微。在介紹原理和觀點的同時也講解了大量Serverless平臺的技術(shù)細節(jié)。
互動實操。提供了大量可操作的實驗步驟,讓讀者可以動手體驗,加深理解。
本書讀者對象
本書介紹了Serverless架構(gòu)的概念、原理以及當前公有云和私有云領(lǐng)域的眾多Serverless平臺的實現(xiàn),能幫助云計算、容器等領(lǐng)域的軟件架構(gòu)師和技術(shù)人員快速了解Serverless這一領(lǐng)域的發(fā)展現(xiàn)狀,為企業(yè)和組織的Serverless技術(shù)選型、轉(zhuǎn)型和落地提供參考。此外,本書涵蓋了大量
陳耿
云方案架構(gòu)師,在微軟公司全球黑帶技術(shù)團隊任職技術(shù)專家,負責開源軟件技術(shù)與解決方案的推廣與落地。專注于容器、微服務、DevOps以及Serverless等應用開發(fā)技術(shù)領(lǐng)域。
曾任職于Red Hat及Oracle等國內(nèi)外軟件企業(yè)。曾是Red Hat中國容器核心團隊技術(shù)專家。國內(nèi)*早一批參與OpenShift容器平臺推廣的技術(shù)顧問,致力于開源容器技術(shù)在國內(nèi)的推廣于普及。其先后參與國內(nèi)許多科技、金融、制造及政府行業(yè)的PaaS與容器平臺項目。 著有《開源容器云OpenShift:構(gòu)建基于Kubernetes的企業(yè)應用云平臺》一書。
工作之余,他愛好旅游和攝影,他的背包和相機已伴他走過了全球東西南北超過30個國家和地區(qū)。
前言
第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應用架構(gòu)7
1.4.1 傳統(tǒng)應用架構(gòu)7
1.4.2 Serverless應用架構(gòu)7
1.4.3 兩種架構(gòu)的比較8
1.5 Serverless的技術(shù)特點9
1.6 Serverless的應用場景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 微服務18
2.2.1 從SOA到微服務18
2.2.2 微服務的價值與挑戰(zhàn)19
2.2.3 Serverless與微服務19
2.3 容器20
2.3.1 容器技術(shù)的興起20
2.3.2 Serverless與容器21
2.4 PaaS22
2.4.1 以應用為中心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 “無服務器”與“無人運維”28
2.8 DevOps28
2.9 云原生應用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后臺服務53
3.6 本章小結(jié)54
第4章 AWS Lambda55
4.1 AWS55
4.2 AWS Serverless56
4.3 AWS Lambda概述57
4.4 第一個Serverless應用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 標簽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應用86
5.3.1 注冊Azure賬號86
5.3.2 Azure控制臺87
5.3.3 函數(shù)應用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ù)應用設(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)絡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 修改默認域124
6.5 Kubernetes實戰(zhàn)124
6.5.1 部署容器124
6.5.2 彈性擴展126
6.5.3 服務發(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 準備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 管理應用156
7.7 蛋糕管理服務156
7.7.1 開發(fā)環(huán)境157
7.7.2 準備數(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)控指標210
10.5.2 監(jiān)控面板210
10.5.3 監(jiān)控預警213
10.6 彈性擴展214
10.6.1 基于Alertmanager擴展214
10.6.2 基于HPA擴展215
10.7 函數(shù)應用市場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應用架構(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