3dwoo大學簡體電腦書店
深入淺出Serverless:技術原理與應用實踐
( 簡體 字)
作者:陳耿類別:1. -> 程式設計 -> 綜合
出版社:機械工業出版社深入淺出Serverless:技術原理與應用實踐 3dWoo書號: 50314
詢問書籍請說出此書號!
有庫存
NT售價: 345
出版日:11/1/2018
頁數:225
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787111613473 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
前言
第1章 Serverless基礎1
1.1 什么是Serverless1
1.2 Serverless帶來的價值3
1.3 Serverless的技術實現4
1.3.1 理念與實現4
1.3.2 FaaS與BaaS5
1.4 Serverless應用架構7
1.4.1 傳統應用架構7
1.4.2 Serverless應用架構7
1.4.3 兩種架構的比較8
1.5 Serverless的技術特點9
1.6 Serverless的應用場景11
1.7 Serverless的局限12
1.8 本章小結13
第2章 Serverless與相關技術15
2.1 云計算15
2.1.1 從私有數據中心到云15
2.1.2 IaaS、PaaS與SaaS16
2.1.3 Serverless與云計算17
2.2 微服務18
2.2.1 從SOA到微服務18
2.2.2 微服務的價值與挑戰19
2.2.3 Serverless與微服務19
2.3 容器20
2.3.1 容器技術的興起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實現的基礎24
2.5.2 FaaS的架構24
2.5.3 函數的生命周期25
2.5.4 函數工作流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 本章小結30
第3章 Serverless的實現31
3.1 Serverless技術的發展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 小結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 小結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 小結53
3.5 Serverless后臺服務53
3.6 本章小結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 創建函數61
4.4.4 編輯函數62
4.4.5 測試函數63
4.4.6 外部訪問63
4.4.7 運維監控66
4.4.8 回顧66
4.5 權限控制66
4.5.1 IAM67
4.5.2 策略68
4.5.3 角色68
4.6 編程模型69
4.6.1 代碼開發69
4.6.2 Handler70
4.6.3 執行上下文70
4.6.4 日志輸出71
4.6.5 異常處理72
4.6.6 無狀態72
4.7 事件驅動73
4.7.1 事件源73
4.7.2 觸發模式74
4.8 日志監控75
4.9 開發輔助77
4.9.1 環境變量77
4.9.2 標簽77
4.9.3 版本控制78
4.10 運行限制78
4.10.1 資源限制79
4.10.2 并發控制79
4.11 配置與部署79
4.12 本章小結81
第5章 Azure Functions83
5.1 Microsoft Azure83
5.2 Azure Functions概述85
5.3 創建Azure Serverless應用86
5.3.1 注冊Azure賬號86
5.3.2 Azure控制臺87
5.3.3 函數應用88
5.3.4 創建函數90
5.3.5 調用函數92
5.3.6 日志與監控93
5.4 Azure Functions命令行95
5.4.1 安裝命令行95
5.4.2 創建本地函數96
5.4.3 測試本地函數97
5.4.4 發布至公有云98
5.5 深入了解Azure Functions99
5.5.1 函數應用設置99
5.5.2 Trigger與Bindings101
5.5.3 函數代理103
5.5.4 Slot104
5.6 私有云部署105
5.7 本章小結107
第6章 容器技術基礎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 構建容器鏡像116
6.2.6 分享鏡像117
6.3 Kubernetes基礎118
6.3.1 命名空間120
6.3.2 Pod120
6.3.3 Service120
6.3.4 Deployment120
6.3.5 ReplicaSet121
6.3.6 網絡121
6.3.7 Ingress121
6.3.8 交互工具122
6.4 構建Kubernetes環境122
6.4.1 啟動Vagrant Box123
6.4.2 修改默認域124
6.5 Kubernetes實戰124
6.5.1 部署容器124
6.5.2 彈性擴展126
6.5.3 服務發現127
6.5.4 資源組織128
6.5.5 容器調度129
6.6 本章小結131
第7章 OpenWhisk132
7.1 OpenWhisk項目132
7.2 Hello Whisk133
7.3 邏輯架構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 系統架構143
7.5 Kubernetes部署146
7.5.1 準備Kubernetes集群146
7.5.2 集群基礎設置146
7.5.3 創建訪問入口149
7.5.4 部署組件149
7.5.5 加載系統配置153
7.5.6 測試集群153
7.5.7 刪除集群154
7.6 Helm部署155
7.6.1 安裝Helm155
7.6.2 環境配置155
7.6.3 部署Chart156
7.6.4 管理應用156
7.7 蛋糕管理服務156
7.7.1 開發環境157
7.7.2 準備數據庫157
7.7.3 定義Action157
7.7.4 創建Package159
7.7.5 部署Action160
7.7.6 發布API161
7.8 本章小結162
第8章 Kubeless163
8.1 Kubeless項目163
8.1.1 系統架構164
8.1.2 運行時165
8.2 Kubeless概述165
8.2.1 部署Kubeless165
8.2.2 配置客戶端166
8.2.3 部署函數167
8.2.4 Kubeless UI168
8.3 Function169
8.3.1 函數部署170
8.3.2 函數調用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 本章小結179
第9章 Fission180
9.1 Fission項目180
9.1.1 邏輯架構180
9.1.2 系統架構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 執行模式192
9.4.1 Pool-based模式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 本章小結197
第10章 OpenFaaS199
10.1 OpenFaaS項目199
10.1.1 OpenFaaS社區200
10.1.2 系統架構200
10.2 初識OpenFaaS200
10.2.1 部署組件201
10.2.2 命令行工具202
10.2.3 創建函數202
10.2.4 圖形界面203
10.3 OpenFaaS函數203
10.3.1 抽象方式203
10.3.2 函數模板204
10.3.3 創建函數205
10.3.4 構建函數206
10.3.5 推送鏡像207
10.3.6 部署函數207
10.4 Watchdog208
10.4.1 工作原理208
10.4.2 配置Watchdog209
10.4.3 of-watchdog210
10.5 監控210
10.5.1 監控指標210
10.5.2 監控面板210
10.5.3 監控預警213
10.6 彈性擴展214
10.6.1 基于Alertmanager擴展214
10.6.2 基于HPA擴展215
10.7 函數應用市場215
10.8 本章小結217
第11章 Serverless的落地與展望218
11.1 Serverless的落地218
11.2 Serverless平臺建設219
11.2.1 公有云219
11.2.2 私有云220
11.2.3 混合云220
11.3 Serverless應用架構轉型223
11.3.1 開發模式223
11.3.2 設計原則225
11.3.3 遷移與重構226
11.4 Serverless的未來227
11.4.1 建立行業規范228
11.4.2 完善工具鏈229
11.4.3 深入結合容器229
11.5 本章小結230
后記232
本書作者是微軟全球黑帶技術專家,曾就職于Red Hat和Oracle等知名軟件企業。本書匯聚了他在Red Hat和微軟等云計算公司的實踐經驗,得到了來自阿里、騰訊、微軟和亞馬遜等一線云計算公司技術專家的好評和推薦。

在內容上,本書不僅詳細介紹了Serverless的技術原理、應用架構,以及與之相關的各種技術主題,而且深入講解了公有云和私有云下各種主流Serverless平臺、架構和工具的原理、架構和使用細節。

全書在邏輯上分為五個部分:

第一部分(第1~3章)

首先,介紹了Serverless的價值、技術特點、應用場景、技術原理、應用架構,以及局限性;其次,介紹了云計算、容器、微服務、PaaS、BaaS、FaaS、DevOps、云原生應用等技術及其與Serverless的關系;最后,介紹了Serverless與各種公有云、私有云之間的關系,以及Serverless的各種框架和工具。

第二部分(第4~5章)

詳細介紹了基于AWS Lambda和Azure Functions等公有云平臺的Serverless技術和服務。

第三部分(第6章)

基于Docker和Kubernetes介紹了容器的基礎技術。

第四部分(第7~10章)

詳細介紹了基于OpenWhisk、Kubeless、Fission及OpenFaaS等私有云平臺的Serverless技術和服務。

第五部分(第11章)

總結了Serverless的落地方法和要點,如平臺建設、應用架構轉型,以及Serverless的未來發展趨勢。
容器技術是這幾年IT界的熱門話題,各行各業都在研究如何通過容器提升企業軟件開發、交付和管理的效率。Docker和Kubernetes的成功使得僅憑幾個人也可以輕易管理一個包含上千臺機器的龐大的計算集群,并且在這個龐大的集群上部署各種各樣的應用。云計算催生了容器技術,而容器技術也改變了云計算。憑借在Linux和開源社區的先天優勢,這幾年Red Hat在容器這一領域風光無限。我在Red Hat參與了各種類型的容器項目,見證了客戶使用容器平臺滿足其各種各樣的需求。容器技術的應用可謂百花齊放,范圍涉及微服務、DevOps到最近的人工智能和深度學習。在當前容器技術如此火熱之際,我突然想,容器會是云計算的終點嗎?答案當然是否定的。如果容器不是終點,那么什么東西會成為容器之后的又一個技術熱點呢?什么樣的技術會讓云計算更進一步,讓IT及其所服務的各個行業的生產效率更上一層樓呢?

我帶著疑問進行了思考和研究。經過一系列調研以及和業界一些朋友的討論后,我認為Serverless將會是繼容器之后又一項改變云計算的技術。回顧云計算發展的歷程,從物理機到虛擬機,從虛擬機到容器,業界的關注點其實是一點一點地向上層移動的。通過各種技術手段,我們總是努力降低花費在管理基礎設施上的時間和精力,以便將更多的時間放在應用和業務上。因此,過去十多年的云計算的歷程,其實是一個“去基礎架構”的過程。這個過程讓用戶可以更快速、更簡單、更高效地將想法變成應用,變成在線的服務。

Serverless符合云計算發展的方向,讓用戶可以將關注點放到具體的業務功能上,而不是底層的計算資源上。Serverless特有的模式存在著潛在的巨大價值。那么,Serverless會取代容器嗎?我相信不會。雖然Serverless架構在一些特定的領域會大放異彩,但是容器在未來仍然會是一種重要的應用分發和部署格式。此外容器也將成為許多Serverless平臺的基礎技術,成為Serverless實現的基石。在未來,Serverless與容器將會有許多結合點。

Serverless還是一個相對較新的技術領域,各種新的觀點、技術和開源項目還在不斷醞釀和涌現。作為一名架構師,除了要解決企業當下和近期可能面對的問題外,還需要有一定的前瞻性,掌握未來架構可能的選項,才能對未來的架構做出合理決策。作為一名工程師,必須要緊跟技術的腳步,讓自己在不斷變化的IT洪流中屹立不倒。本書寫作的初衷正是為希望了解Serverless領域現狀的架構師和技術人員提供指南和參考。

本書主要內容

本書是一本介紹Serverless技術的書籍,可以讓想了解Serverless的讀者快速了解Serverless的概念和原理。此外,書中還用大量的篇幅介紹了當前業界最新的Serverless平臺、框架和工具的原理、架構和使用細節,內容涵蓋了公有云和私有云的Serverless平臺。

全書共分為11章,循序漸進、深入淺出地講解Serverless相關的知識和技術。

前三章重點介紹Serverless的概念和原理,為讀者構建Serverless知識體系打下理論基礎。第1章介紹了Serverless的基礎知識,讓讀者了解Serverless的概念及其特點。Serverless的存在不能脫離這個時代,所以第2章詳細討論了Serverless涉及的云計算的各種技術,如微服務、容器和DevOps等,讓讀者對Serverless的理解更加深入。在理解Serverless的基礎上,第3章介紹了業界目前的Serverless的各類平臺、工具和框架的實現,讓讀者對該技術領域的現狀有更清晰的認識。

第4章和第5章詳細介紹了公有云Serverless平臺的技術細節。以AWS Lambda和微軟的Azure Functions為例,向讀者介紹了當前主流的公有云廠商在Serverless領域的實現。

第6章是容器技術的速成教程。容器技術是當下云計算重要的基礎技術,也是許多Serverless平臺的實現基礎。通過本章讀者可以快速了解當下熱門的容器技術(Docker和Kubernetes)的原理和基本使用技巧。

第7~10章針對私有云的Serverless計算平臺,分別詳細介紹了OpenWhisk、Kubeless、Fission及OpenFaaS的系統架構、核心概念以及使用技巧,幫助讀者了解各類Serverless平臺的技術特點。

第11章針對Serverless技術的落地給出了具體建議,總結了本書對Serverless技術的觀點,并對Serverless技術的未來進行了展望。

本書亮點

本書是關于Serverless與容器的原創著作。Serverless是當前的一個熱門話題,但是大家對Serverless概念并不了解。本書整理了業界當前對Serverless的主流觀點,梳理了Serverless技術發展的現狀,是一個系統的Serverless指南。

最新資訊。原創的Serverless著作,為讀者呈現業界最新的觀點和知識。

縱覽大局。對Serverless的介紹結合了當下云計算的背景,也結合了容器技術。

細致入微。在介紹原理和觀點的同時也講解了大量Serverless平臺的技術細節。

互動實操。提供了大量可操作的實驗步驟,讓讀者可以動手體驗,加深理解。

本書讀者對象

本書介紹了Serverless架構的概念、原理以及當前公有云和私有云領域的眾多Serverless平臺的實現,能幫助云計算、容器等領域的軟件架構師和技術人員快速了解Serverless這一領域的發展現狀,為企業和組織的Serverless技術選型、轉型和落地提供參考。此外,本書涵蓋了大量關于當前云計算、容器和Serverless領域的觀點和話題,因此,也適合作為技術愛好者開闊眼界、增長見聞的指南。

如何閱讀本書

如果讀者是初次接觸Serverless的相關知識,推薦按順序閱讀本書的各個章節。通過本書既定的章節順序,可以循序漸進地了解Serverless的相關原理和實現。如果讀者對Serverless領域已有一定的研究,則可以按需直接閱讀感興趣的章節。

本書引入了大量與Serverless、云計算、容器和開源軟件相關的話題,并針對相關話題給出了相應的參考資料。筆者希望本書是讀者研究Serverless和云計算相關技術的一張地圖,希望通過本書幫助讀者找到更多對自身有價值的開源項目和技術。

關于勘誤

本書花費了編輯和筆者大量的時間和精力,書中的文字和圖表都經過細心斟酌和校對,所有示例的命令和代碼都經過筆者親自驗證。但是由于水平有限,且時間倉促,書中難免存在一些瑕疵和需要改進的地方,歡迎讀者將對本書的意見和建議發送至筆者的郵箱(nicosoftware@msn.com)進行交流討論。讀者也可以關注筆者的微信公眾號“云來有道”,獲取關于本書最新的信息和勘誤。

致謝

本書的出版得到了許多朋友的幫助。衷心感謝機械工業出版社華章公司的楊福川老師和李藝老師對本書的策劃和編審。兩位編輯老師為本書的出版花費了大量心血。此外,也感謝我的妻子麗金。她是本書的第一位讀者,為本書提供了許多有益的建議,并幫助審校了書中的所有文字。本書的創作占用了我大量的業余時間,感謝她的支持和包容。

謹以此書獻給我的妻子和兩個寶貝。
pagetop