《前端Serverless:面向全棧的無伺服器架構實戰》是2021年電子工業出版社出版書籍,作者是楊凱。
基本介紹
- 中文名:前端Serverless:面向全棧的無伺服器架構實戰
- 作者:楊凱
- 出版社:電子工業出版社
- 出版時間:2021年5月
- 頁數:248 頁
- 定價:89 元
- 開本:16 開
- ISBN:9787121409813
內容簡介,圖書目錄,
內容簡介
本書以雲原生(Cloud Native)技術為背景,講述了 Serverless 的基本原理與實戰套用。書中首先探討 Serverless 與當前雲計算技術和前端技術的關係,隨後分別從 Serverless 的兩大能力(FaaS 和 BaaS)展開,探討了它們的歷史由來和底層原理,並且結合實際套用場景,有針對性地提供了操作指南。本書從手動構建一套基於進程的 FaaS 架構開始,之後深入剖析雲計算服務的核心,闡述其背後的原理和思想,從而讓讀者理解下一代軟體架構的本質。本書主要從前端研發人員的視角介紹 Serverless 的原理及套用。
圖書目錄
第一部分 Serverless 綜述
第 1 章 什麼是 Serverless .............................................................................................. 2
1.1 Serverless 的價值 .................................................................................................. 3
1.2 Serverless 是一種理念 .......................................................................................... 5
1.3 Serverless 一詞的誕生 .......................................................................................... 8
1.4 CNCF Serverless 白皮書 ..................................................................................... 10
1.5 Serverless 與前端架構 ......................................................................................... 12
1.6 從前端到全棧 ...................................................................................................... 18
本章小結 ....................................................................................................................... 19
第 2 章 何時套用 Serverless ........................................................................................ 20
2.1 Serverless 的優勢與劣勢 ..................................................................................... 20
2.2 服務端的套用場景 .............................................................................................. 22
2.2.1 多媒體處理 .............................................................................................. 23
2.2.2 資料庫變更捕獲 ...................................................................................... 24
2.2.3 處理 IoT 請求 ........................................................................................ 25
2.2.4 聊天機器人 .............................................................................................. 26
2.2.5 計畫任務 .................................................................................................. 27
2.2.6 通用後端服務 .......................................................................................... 27
2.3 前端的套用場景 .................................................................................................. 28
2.3.1 Web 套用 ................................................................................................. 29
2.3.2 SSR 套用 ................................................................................................. 29
2.3.3 移動客戶端套用 ...................................................................................... 31
2.3.4 小程式 ...................................................................................................... 31
本章小結 ....................................................................................................................... 31
第 3 章 Serverless 與服務端技術 .................................................................................. 32
3.1 套用分層架構 ...................................................................................................... 32
3.2 微服務架構 .......................................................................................................... 34
3.3 雲計算 .................................................................................................................. 37
3.4 容器化 .................................................................................................................. 39
3.5 NoOps ................................................................................................................... 40
本章小結 ....................................................................................................................... 42
第 4 章 Serverless 與前端技術 ..................................................................................... 43
4.1 Backend For Frontend .......................................................................................... 43
4.2 Node.js .................................................................................................................. 44
4.3 TypeScript ............................................................................................................. 45
4.4 GraphQL ............................................................................................................... 46
4.5 NoBackend ........................................................................................................... 47
本章小結 ....................................................................................................................... 47
第二部分 FaaS 技術
第 5 章 理解 FaaS ......................................................................................................... 50
5.1 FaaS 的特性 ........................................................................................................ 50
5.1.1 函式由事件驅動 ...................................................................................... 50
5.1.2 無狀態的函式 .......................................................................................... 51
5.1.3 函式應當足夠簡單 .................................................................................. 51
5.2 FaaS 的優點 ........................................................................................................ 52
5.2.1 更高的研發效率 ...................................................................................... 52
5.2.2 更低的部署成本 ...................................................................................... 53
5.2.3 更低的運維成本 ...................................................................................... 54
5.2.4 更低的學習成本 ...................................................................................... 54
5.2.5 更低的伺服器費用 .................................................................................. 55
5.2.6 更靈活的部署方案 .................................................................................. 56
5.2.7 更高的系統安全性 .................................................................................. 56
5.3 FaaS 的缺點 ........................................................................................................ 57
5.3.1 存在平台學習成本 .................................................................................. 57
5.3.2 較高的調試成本 ...................................................................................... 58
5.3.3 潛在的性能問題 ...................................................................................... 58
5.3.4 供應商鎖定問題 ...................................................................................... 59
本章小結 ....................................................................................................................... 60
第 6 章 第一個函式 ....................................................................................................... 61
6.1 從控制台創建 ...................................................................................................... 61
6.1.1 開通產品 .................................................................................................. 61
6.1.2 創建一個函式 .......................................................................................... 62
6.1.3 調用函式 .................................................................................................. 64
6.2 基於命令行工具 .................................................................................................. 64
6.2.1 安裝命令行工具 ...................................................................................... 64
6.2.2 身份認證配置 .......................................................................................... 65
6.2.3 初始化 FaaS 項目 .................................................................................. 66
6.2.4 本地調試 .................................................................................................. 67
6.2.5 發布項目 .................................................................................................. 69
6.3 Serverless Framework........................................................................................... 70
6.3.1 初始化命令行工具 .................................................................................. 70
6.3.2 阿里雲授權 .............................................................................................. 71
6.3.3 開通配套服務 .......................................................................................... 71
6.3.4 創建項目 .................................................................................................. 72
6.3.5 發布部署 .................................................................................................. 72
6.3.6 遠程調用 .................................................................................................. 73
本章小結 ....................................................................................................................... 73
第 7 章 函式的生命周期 ................................................................................................ 74
7.1 函式的定義 .......................................................................................................... 74
7.1.1 函式名 ...................................................................................................... 74
7.1.2 參數 .......................................................................................................... 75
7.2 函式的調試 .......................................................................................................... 76
7.2.1 本地調用 .................................................................................................. 76
7.2.2 線上調用 .................................................................................................. 77
7.3 函式的發布 .......................................................................................................... 77
7.3.1 配置 .......................................................................................................... 77
7.3.2 編譯 .......................................................................................................... 78
7.3.3 部署 .......................................................................................................... 78
7.4 函式的更新 .......................................................................................................... 78
7.4.1 測試與發布 .............................................................................................. 78
7.4.2 灰度與 A/B 測試 ..................................................................................... 80
本章小結 ....................................................................................................................... 81
第 8 章 理解函式運行時 ................................................................................................ 82
8.1 函式的觸發 .......................................................................................................... 82
8.1.1 客戶端觸發器 .......................................................................................... 83
8.1.2 實踐:通過 Web API 調用函式 ............................................................ 83
8.1.3 訊息觸發器 .............................................................................................. 88
8.1.4 實踐:通過訊息觸發函式 ...................................................................... 89
8.1.5 存儲觸發器 .............................................................................................. 92
8.1.6 實踐:生成上傳圖片的縮略圖 .............................................................. 93
8.1.7 其他觸發器 .............................................................................................. 98
8.2 函式的執行 .......................................................................................................... 98
8.2.1 入口方法 .................................................................................................. 98
8.2.2 運行時 ...................................................................................................... 99
8.2.3 日誌輸出 ................................................................................................ 100
8.2.4 實踐:查詢函式調用日誌 .................................................................... 100
本章小結 ..................................................................................................................... 101
第 9 章 自建簡易 FaaS ............................................................................................... 102
9.1 基礎能力 ............................................................................................................ 102
9.1.1 基於進程隔離運行函式 ........................................................................ 103
9.1.2 標準函式的執行能力 ............................................................................ 105
9.1.3 更安全的執行環境 ................................................................................ 106
9.1.4 增加 HTTP 服務 .................................................................................. 111
9.2 進階挑戰 ............................................................................................................ 114
9.2.1 提升性能:通過進程池管理子進程的生命周期 ................................ 115
9.2.2 增強安全性:限制函式的執行時間 .................................................... 119
9.2.3 確保穩定性:對函式資源進行限制 .................................................... 122
9.2.4 提高效率:內置前端常用服務 ............................................................ 128
本章小結 ..................................................................................................................... 130
第三部分 BaaS 技術
第 10 章 BaaS 的由來 ................................................................................................. 132
10.1 傳統的 IT 時代:原始部落的刀耕火種 ....................................................... 132
10.2 雲計算時代:現代城市的集中供應 ............................................................... 133
10.3 新一代基礎設施:CaaS .................................................................................. 134
10.4 PaaS 的演進:BaaS ........................................................................................ 136
10.5 Google Firebase ................................................................................................ 137
10.6 BaaS 的優勢和價值 ......................................................................................... 142
本章小結 ..................................................................................................................... 144
第 11 章 初始化 BaaS 套用 ......................................................................................... 145
11.1 註冊小程式的賬號........................................................................................... 145
11.2 配置雲服務 ...................................................................................................... 146
11.3 初始化代碼 ...................................................................................................... 148
11.4 添加 BaaS SDK ............................................................................................... 150
本章小結 ..................................................................................................................... 151
第 12 章 數據的持久化 ................................................................................................ 152
12.1 資料庫設計原則 .............................................................................................. 154
12.1.1 BSON 與數據類型 ............................................................................. 154
12.1.2 三大範式與 NoSQL 資料庫 .............................................................. 155
12.1.3 引用方式:規範數據模型 .................................................................. 156
12.1.4 內嵌方式:高效數據模型 .................................................................. 158
12.2 使用數據存儲服務 .......................................................................................... 159
12.2.1 通過控制台管理集合 .......................................................................... 159
12.2.2 通過客戶端查詢數據 .......................................................................... 162
12.2.3 在雲函式中調用 .................................................................................. 162
12.2.4 數據許可權管理 ...................................................................................... 165
12.2.5 實踐:數據的 CURD ......................................................................... 165
本章小結 ..................................................................................................................... 167
第 13 章 檔案的存儲與分發 ......................................................................................... 168
13.1 內容分發網路(CDN) .................................................................................. 168
13.1.1 性能最佳化的利器 .................................................................................. 168
13.1.2 CDN 加速的基本原理 ........................................................................ 169
13.1.3 檔案存儲與 CDN ................................................................................ 170
13.2 使用檔案存儲服務 .......................................................................................... 172
13.2.1 通過控制台管理檔案 .......................................................................... 172
13.2.2 檔案的許可權管理 .................................................................................. 173
13.2.3 使用 SDK 上傳 .................................................................................. 174
13.2.4 實踐:實現圖片的上傳和展示 .......................................................... 174
本章小結 ..................................................................................................................... 180
第 14 章 用戶身份識別與授權 ..................................................................................... 181
14.1 認證的演進 ...................................................................................................... 181
14.1.1 統一身份認證:OpenID ..................................................................... 182
14.1.2 第三方授權登錄:OAuth ................................................................... 185
14.1.3 進一步完善:OIDC ............................................................................ 189
14.2 身份認證即服務:Auth0 ................................................................................ 191
14.2.1 註冊並創建租戶 .................................................................................. 191
14.2.2 控制中心概覽 ...................................................................................... 192
14.3 實踐:實現基於 Auth0 的身份認證 ............................................................. 195
14.3.1 創建並配置套用 .................................................................................. 195
14.3.2 創建登錄頁面 ...................................................................................... 196
14.3.3 啟動 Web 服務 ................................................................................... 198
14.3.4 實現登錄與註銷 .................................................................................. 198
14.3.5 用戶體驗改進 ...................................................................................... 202
14.4 實踐:實現 GitHub 賬號授權 ....................................................................... 206
14.4.1 開通 GitHub OAuth ............................................................................ 206
14.4.2 配置第三方登錄 .................................................................................. 208
14.4.3 測試與認證 .......................................................................................... 209
14.5 擴展:詳解 JWT ............................................................................................. 209
14.5.1 令牌的類型 .......................................................................................... 210
14.5.2 構造一個令牌 ...................................................................................... 211
14.5.3 深入理解 JWT 原理 .......................................................................... 213
14.5.4 JWT 的優勢/劣勢與套用場景 ........................................................... 218
本章小結 ..................................................................................................................... 223