预购商品
书目分类
特别推荐
本書以雲原生(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 等技術如何在業務中規模化應用以提高研發和協作效率、改善用戶體驗,具有豐富的實踐經驗。
客服公告
热门活动
订阅电子报