Serverless 從入門到進階:架構、原理與實踐

Serverless 從入門到進階:架構、原理與實踐

作者: 方坤丁 孫遠高
出版社: 機械工業
出版在: 2021-06-01
ISBN-13: 9787111682554
ISBN-10: 7111682556
裝訂格式: 平裝
總頁數: 292 頁





內容描述


這是一本從產品和技術兩個維度全面講解Serverless的著作,涵蓋Serverless的架構設計、技術原理、開發流程、實戰案例等4大核心主題。作者從零開始參與了騰訊雲Serverless項目的建設。
全書共15章,內容從邏輯上可分為五個部分。
第一部分(第1章) Serverless基礎
主要介紹了Serverless的概念、發展歷程、基本特點、應用場景、框架和生態,以及它為開發者、企業和雲計算帶來的作用和優勢。
第二部分(第2~4章) Serverless架構和原理
首先介紹了Serverless的整體架構,以及其中的FaaS架構和BaaS架構,然後深入分析了FaaS層和BaaS層的底層原理。
第三部分(第5~9章) Serverless開發流程
從上下游生態的視角講解瞭如何開發和部署一個完整的Serverless應用,包括開發、調試、測試、部署、CI/CD、運維等全生命周期的各個環節。
第四部分(第10~14章) Serverless實戰案例
涵蓋了Serverless的典型應用場景並提供豐富的實戰案例和最佳實踐,包括如何將傳統的Web服務遷移到Serverless架構、Serverless SSR應用場景、全棧後台管理系統和基於熱門語言TypeScript開發的短鏈接服務等。
第五部分(第15章) Serverless趨勢預測
首先介紹了當前學術界在Serverless領域的研究方向、重點以及取得的成果,然後介紹了伯克利大學對Serverless未來10年發展趨勢的預測。


目錄大綱


前 言

第1章 全面瞭解Serverless 1
1.1 什麽是Serverless 1
1.1.1 初識Serverless 1
1.1.2 Serverless特性舉例 2
1.2 Serverless的發展歷程 3
1.2.1 Serverless的產生 4
1.2.2 Serverless發展里程碑 5
1.3 Serverless的優缺點 7
1.4 Serverless的應用場景 9
1.5 Serverless框架和生態 10
1.6 本章小結 11

第2章 Serverless架構 13
2.1 Serverless架構概述 13
2.1.1 Serverless = FaaS + BaaS 13
2.1.2 傳統應用架構分析 15
2.1.3 典型Serverless應用架構 16
2.1.4 Serverless架構與傳統架構 17
2.2 FaaS架構介紹 17
2.2.1 FaaS架構組成 18
2.2.2 FaaS架構執行流程 18
2.3 BaaS服務介紹 20
2.3.1 BaaS服務的產生背景 20
2.3.2 BaaS服務的分類 20
2.4 Serverless服務構建的思維方式 21
2.5 本章小結 22

第3章 Serverless原理詳解:FaaS層 23
3.1 事件模型 23
3.1.1 FaaS事件模型 23
3.1.2 常見觸發器介紹 25
3.2 錯誤處理和重試機制 26
3.3 生命周期 27
3.4 冷啟動優化 28
3.4.1 冷啟動的產生 29
3.4.2 平臺側冷啟動的優化 31
3.4.3 用戶側冷啟動的規避 31
3.5 部署第一個Serverless實例 32
3.5.1 部署Hello World函數示例 32
3.5.2 參數定義 34
3.6 運行時和自定義運行時 34
3.6.1 運行時和自定義運行時的概念 35
3.6.2 自定義運行時示例 37
3.7 本章小結 39

第4章 Serverless原理詳解:BaaS層 41
4.1 Serverless接入層:API網關 41
4.1.1 基本概念 42
4.1.2 網關和FaaS的聯動 43
4.2 Serverless和存儲 45
4.2.1 基本概念 46
4.2.2 對象存儲 47
4.2.3 文件存儲 49
4.2.4 存儲和FaaS的聯動 52
4.3 Serverless和數據庫 61
4.3.1 基本概念 61
4.3.2 數據庫和FaaS的聯動 62
4.4 Serverless和消息隊列 67
4.4.1 基本概念 67
4.4.2 消息隊列和FaaS的聯動 69
4.5 Serverless和日誌服務 71
4.5.1 基本概念 71
4.5.2 日誌服務和FaaS的聯動 73
4.6 其他擴展能力 74
4.7 本章小結 76

第5章 Serverless開發工具及調試能力 77
5.1 Serverless Framework 78
5.1.1 YAML配置文件 79
5.1.2 什麽是Serverless Plugin 79
5.1.3 什麽是Serverless Component 80
5.1.4 Serverless Plugin與Serverless Component 81
5.1.5 安裝和使用 81
5.1.6 Serverless Component部署原理 82
5.1.7 版本對比 84
5.2 Apex 85
5.2.1 安裝使用 85
5.2.2 實時日誌 87
5.2.3 監控數據 87
5.3 Serverless雲端調試 88
5.4 本章小結 92

第6章 Serverless排障 93
6.1 Serverless監控及告警 93
6.1.1 基礎指標監控 94
6.1.2 應用級別監控 94
6.1.3 Serverless告警 99
6.2 Serverless日誌 100
6.3 本章小結 102

第7章 Serverless CI/CD 103
7.1 CI/CD概念和介紹 104
7.1.1 持續集成 104
7.1.2 持續交付 105
7.1.3 持續部署 105
7.1.4 CI/CD的優點 106
7.2 Serverless CI/CD介紹 106
7.3 CI/CD工具介紹 108
7.4 GitHub Actions 109
7.4.1 基本概念 110
7.4.2 創建第一個工作流 111
7.4.3 Workflow文件 114
7.4.4 Serverless結合GitHub Actions示例 116
7.5 Coding DevOps服務 123
7.6 AWS CodePipeline服務 126
7.7 本章小結 127

第8章 Serverless工作流 128
8.1 Serverless應用內的狀態管理 128
8.2 Serverless狀態機 130
8.2.1 狀態機簡介 130
8.2.2 AWS Step Function 131
8.2.3 典型場景 133
8.3 本章小結 136

第9章 Serverless資源管理和編排 137
9.1 AWS資源編排工具 137
9.1.1 AWS Cloud Formation 137
9.1.2 AWS SAM 140
9.2 Terraform 142
9.2.1 Terraform簡介 142
9.2.2 使用Terraform管理雲資源 143
9.3 Serverless Component 145
9.4 本章小結 147

第10章 開發Serverless Web服務:RESTful API 148
10.1 Serverless Web服務 148
10.1.1 傳統的Web服務 148
10.1.2 Web框架遷移到Serverless的原理 149
10.1.3 Express.js框架開發轉化層 150
10.1.4 Node.js HTTP服務監聽方式的選擇 152
10.1.5 轉化層代碼編寫 153
10.2 理解RESTful架構 155
10.3 RESTful API的開發 157
10.3.1 初始化項目 157
10.3.2 Express路由的使用 158
10.3.3 改造成可執行的雲函數 160
10.3.4 編寫RESTful風格的服務 162
10.3.5 如何操作雲數據庫 164
10.4 部署應用 171
10.4.1 手動打包部署 171
10.4.2 通過Serverless Framework工具部署 174
10.5 本章小結 176

第11章 Serverless後台管理系統 177
11.1 Egg.js框架簡介 178
11.2 系統框架設計 178
11.3 數據庫設計 179
11.4 創建數據庫 180
11.5 開發準備 182
11.6 開發後端服務 183
11.7 後端服務部署 195
11.7.1 準備工作 195
11.7.2 配置serverless.yml 196
11.7.3 開始部署 197
11.7.4 賬號配置(可選) 198
11.8 前端開發 199
11.8.1 刪除接口模擬 199
11.8.2 修改接口函數 200
11.8.3 修改接口工具函數 202
11.8.4 修改UI界面 205
11.9 前端部署 205
11.9.1 創建serverless.yml配置文件 205
11.9.2 執行部署 206
11.10 部署優化 207
11.10.1 改造後端YML配置 208
11.10.2 新增層配置 208
11.10.3 部署層 209
11.10.4 管理系統項目模板 210
11.11 本章小結 211

第12章 Serverless和前端的天作之合:服務端渲染SSR 212
12.1 SSR與Serverless 212
12.2 快速將SSR應用Serverless化 214
12.3 性能分析 219
12.4 方案對比分析 222
12.5 Serverless部署方案的優化 223
12.5.1 通過COS托管靜態資源 224
12.5.2 靜態資源配置CDN 227
12.5.3 靜態資源優化前後對比 229
12.5.4 基於層部署node_modules 229
12.6 本章小結 232

第13章 基於Serverless的短鏈接服務 233
13.1 什麽是短鏈接 233
13.2 短鏈接基本原理 234
13.3 創建數據庫 235
13.3.1 表結構 235
13.3.2 創建PostgreSQL數據庫 236
13.4 服務開發 241
13.4.1 TypeScript簡介 241
13.4.2 基於Express服務開發 242
13.4.3 前端頁面 251
13.4.4 服務Serverless化 255
13.5 本章小結 257

第14章 Serverless消息實時推送:結合WebSocket實現外賣點單系統 258
14.1 消息實時推送 258
14.2 基於Serverless實現WebSocket外賣點單系統 260
14.2.1 基於Serverless實現WebSocket協議 260
14.2.2 系統架構說明 262
14.3 應用開發及部署 263
14.4 本章小結 270

第15章 Serverless展望:雲計算的下個十年 271
15.1 Serverless研究趨勢 271
15.2 Serverless研究成果和亮點 273
15.2.1 Serverless和機器學習 273
15.2.2 Serverless文件系統 275
15.2.3 Serverless數據中心 277
15.3 Serverless未來的發展趨勢 278
15.4 本章小結 280


作者介紹


方坤丁
前騰訊雲Serverless高級產品經理
騰訊雲Serverless項目的早期參與者,有多年雲計算相關產品的策劃經驗,對雲計算行業有深刻理解。
在Serverless方面有豐富的經驗,是Serverless Framework/Components等開源項目活躍貢獻者,
曾負責負載均衡、消息隊列和雲函數等產品,致力於Serverless架構中解決方案的推出和落地。
熟悉Apache Kafka、Nginx等中間件。曾任2018 Kafka Meetup深圳站組織者,
2019 KubeCon Serverless專題演講嘉賓,2020 QCon+及Next.js Conf演講嘉賓。
孫遠高
騰訊雲Serverless高級研發工程師
熟悉Serverless架構和工程化實踐,專注於Serverless開源生態建設,參與從零開發和建設騰訊雲Serverless開源項目。
Serverless Framework/Components開源項目的活躍貢獻者,有豐富的Web開發實戰經驗和豐富的雲計算行業經驗。
擅長前端工程化建設、前端自動化部署。




相關書籍

Microsoft Azure Architect Technologies Study Companion: Hands-On Preparation and Practice for Exam Az-300 and Az-303

作者 Sahay Rahul

2021-06-01

史上最完整細節:Kubernetes 超應用全書

作者 龔正 吳治輝 崔秀龍 閆健勇

2021-06-01

OpenStack CI/CD:原理與實踐

作者 董文娟 尚小冬 張軍

2021-06-01