前端 Serverless:面向全棧的無服務器架構實戰

前端 Serverless:面向全棧的無服務器架構實戰

作者: 楊凱
出版社: 電子工業
出版在: 2021-05-01
ISBN-13: 9787121409813
ISBN-10: 712140981X
裝訂格式: 平裝
總頁數: 248 頁





內容描述


本書以雲原生(Cloud Native)技術為背景,講述了 Serverless 的基本原理與實戰應用。書中首先探討 Serverless 與當前雲計算技術和前端技術的關系,隨後分別從 Serverless 的兩大能力(FaaS 和 BaaS)展開,探討了它們的歷史由來和底層原理,並且結合實際應用場景,有針對性地提供了操作指南。本書從手動構建一套基於進程的 FaaS 架構開始,之後深入剖析雲計算服務的內核,闡述其背後的原理和思想,從而讓讀者理解下一代軟件架構的本質。本書主要從前端研發人員的視角介紹 Serverless 的原理及應用。相信無論是希望更多瞭解服務端技術的前端研發人員,還是已經涉足後端但希望更多瞭解雲原生技術的全棧工程師,或是希望通過 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


作者介紹


楊凱(亞頓),具有10年以上前後端全棧研發經驗,曾為阿里巴巴天貓精靈前端負責人,參與了天貓精靈從0到1的建設過程。
專注於前端架構及用戶體驗,對BFF、微前端、Serverless 等技術如何在業務中規模化應用以提高研發和協作效率、改善用戶體驗,具有豐富的實踐經驗。




相關書籍

Exam Ref Az-500 Microsoft Azure Security Technologies

作者 Diogenes Yuri Thomas Orin

2021-05-01

每天 5分鐘玩轉 OpenStack

作者 CloudMan

2021-05-01

大規模組織 DevOps 實踐

作者 陳能技

2021-05-01