![](http://img3m2.ddimg.cn/91/35/28558522-1_u_5.jpg)
開本:16開 紙張:膠版紙 包裝:平裝-膠訂 是否套裝:否 國際標準書號ISBN:9787302551874 作者:[塞爾維?]斯洛博丹·斯托揚諾維奇(Slobodan 出版社:清華大學出版社 出版時間:2020年05月 
" 編輯推薦 雲托管無服務器Web應用的優勢是不可否認的:與傳統的服務器相關設計相比,復雜性更低,上市時間更短,可擴展性更強。 緣於AWS Lambda中的JavaScript支持和強大的無服務器API工具(如Claudia.js庫),可以在不學習新語言的情況下端到端地構建和部署無服務器應用。 將教你使用JavaScript、Node和Claudia.js在AWS上設計和構建無服務器Web應用。 你將掌握編寫AWS Lambda函數的基礎知識,以及API Gateway等核心的無服務器模式。 你可通過使用Amazon Alexa構建聊天機器人和語音助手來練習新技能。 你還將學習一些將現有應用遷移到無服務器平臺的技術。 內容簡介 ●身份驗證和數據庫存儲
●異步函數
●現實世界中的有趣示例
●開發無服務器微服務 作者簡介 Slobodan Stojanovi?和Aleksandar Simovi?是AWS Serverless Heroes和Claudia.js項目的核心貢獻者,是Claudia Bot Builder的主要開發人員和維護人員,以及Node.js的無服務器應用的共同作者。
Aleksandar已經擔任高級軟件顧問和工程師超過七年,主攻但不限於JavaScript。他還涉足Swift、Python和Rust。他在貝爾格萊德工作,是JS貝爾格萊德會議的共同組織者。
Slobodan是Cloud Horizon的首席技術官,Cloud Horizon是一家位於蒙特利爾的軟件開發工作室。他在貝爾格萊德工作,是JS貝爾格萊德會議的共同組織者。 目錄 第Ⅰ部分 無服務器比薩店 第1章 使用Claudia的無服務器架構介紹 3 1.1 服務器和洗衣機 4 1.2 核心概念 4 1.3 無服務器的工作方式 6 1.4 無服務器實踐 6 1.4.1 Maria姨媽的無服務器比薩店應用 7 1.4.2 一種常見的方法 7 1.4.3 無服務器方法 9 1.5 無服務器基礎設施——AWS 10 1.6 什麼是Claudia,應如何配置 14 1.7 何時以及在何處使用無服務器 16 1.8 本章小結 17 第2章 構建你的個無服務器API 18第Ⅰ部分 無服務器比薩店 第1章 使用Claudia的無服務器架構介紹 3 1.1 服務器和洗衣機 4 1.2 核心概念 4 1.3 無服務器的工作方式 6 1.4 無服務器實踐 6 1.4.1 Maria姨媽的無服務器比薩店應用 7 1.4.2 一種常見的方法 7 1.4.3 無服務器方法 9 1.5 無服務器基礎設施——AWS 10 1.6 什麼是Claudia,應如何配置 14 1.7 何時以及在何處使用無服務器 16 1.8 本章小結 17 第2章 構建你的個無服務器API 18 2.1 制作比薩原料: 構建API 18 2.1.1 能買到哪種比薩 20 2.1.2 構建你的API 24 2.1.3 創建比薩訂單 28 2.2 Claudia如何部署 你的API 32 2.3 流量控制:API Gateway 的工作原理 34 2.4 當無服務器API不是解決 方案時 35 2.5 試一試 35 2.5.1 練習 35 2.5.2 解決方案 36 2.6 本章小結 40 第3章 實現異步工作很容易,我們有.promise()方法 41 3.1 存儲訂單 41 3.2 承諾在30分鐘內交付 46 3.3 試用你的API 49 3.4 從數據庫獲取訂單 54 3.5 試一試 56 3.5.1 練習 56 3.5.2 解決方案 57 3.6 本章小結 60 第4章 比薩遞送:外部連接 61 4.1 連接外部服務 61 4.2 連接到遞送API 62 4.2.1 Some Like It Hot Delivery API 63 4.2.2 創建個交付請求 64 4.3 異步通信的潛在問題 70 4.3.1 忘記返回Promise 71 4.3.2 不傳遞Promise的值 72 4.3.3 不將外部服務包裝在Promise中 72 4.3.4 長異步操作的超時問題 73 4.4 試一試 75 4.4.1 練習 75 4.4.2 解決方案 75 4.5 本章小結 77 第5章 程序出錯 79 5.1 調試無服務器應用 79 5.2 調試Lambda函數 81 5.3 剖析應用 84 5.4 試一試 87 5.4.1 練習 88 5.4.2 解決方案 88 5.5 本章小結 88 第6章 升級你的API 89 6.1 無服務器認證和授權 89 6.2 創建用戶池和標識池 93 6.3 試一試 99 6.3.1 練習 99 6.3.2 解決方案 100 6.4 本章小結 102 第7章 處理文件 103 7.1 在無服務器應用中存儲靜態文件 103 7.2 生成縮略圖 107 7.3 試一試 114 7.3.1 練習 115 7.3.2 解決方案 115 7.4 本書第Ⅰ部分結束:特殊練習 117 7.5 本章小結 117 第Ⅱ部分 來聊天吧 第8章 訂購比薩隻需要一條信息:聊天機器人 121 8.1 瀏覽器之外的比薩訂購 121 8.2 來自Facebook Messenger的問候 122 8.3 你們有什麼比薩 125 8.4 加快部署速度 128 8.5 Messenger模板 129 8.6 Claudia Bot Builder的工作方式 132 8.7 試一試 133 8.7.1 練習 134 8.7.2 解決方案 134 8.8 本章小結 134 第9章 異步和延遲響應 135 9.1 使聊天機器人具有交互性 135 9.2 增強聊天機器人結構的可擴展性 141 9.3 將聊天機器人連接到DynamoDB數據庫 146 9.4 從聊天機器人獲取用戶位置 149 9.5 安排交付 153 9.6 集成簡單的NLP 158 9.7 試一試 159 9.7.1 練習 159 9.7.2 解決方案 159 9.7.3 高級練習 161 9.8 本章小結 162 第10章 Jarvis,我的意思是Alexa,請幫我點一份比薩 163 10.1 現在不能說話:用Twilio發送SMS短信 164 10.1.1 SMS比薩列表 165 10.1.2 訂購比薩 167 10.2 使用Alexa 172 10.2.1 準備skill 176 10.2.2 使用Alexa點比薩 180 10.3 試一試 183 10.3.1 練習 183 10.3.2 解決方案 184 10.4 第Ⅱ部分結束:特殊練習 184 10.5 本章小結 185 第Ⅲ部分 下一步 第11章 測試 189 11.1 測試服務器托管應用和無服務器應用 189 11.2 如何測試無服務器應用 191 11.3 前期準備 192 11.4 &nbs測試 195 11.5 模擬無服務器函數 199 11.6 集成測試 205 11.7 其他類型的自動化測試 209 11.8 更進一步:編寫可測試的無服務器函數 210 11.9 試一試 214 11.9.1 練習 214 11.9.2 解決方案 215 11.10 本章小結 216 第12章 為比薩付款 217 12.1 付款交易 217 12.2 實現支付服務 222 12.3 有人能攻擊支付服務嗎 228 12.3.1 標準 229 12.3.2 權限 230 12.4 試一試 230 12.4.1 練習 230 12.4.2 解決方案 230 12.5 本章小結 232 第13章 將現有的Express.js應用程序遷移到AWS Lambda 233 13.1 Roberto叔叔的出租車應用 234 13.2 在AWS Lambda中運行Express.js應用 234 13.2.1 代理集成 237 13.2.2 serverless-express模塊的工作方式 238 13.3 提供靜態內容 239 13.4 連接到MongoDB 241 13.5 無服務器Express.js應用的限制 245 13.6 試一試 246 13.6.1 練習 247 13.6.2 解決方案 247 13.7 本章小結 248 第14章 遷移到無服務器 249 14.1 分析當前的無服務器應用 249 14.2 將現有應用遷移到無服務器 251 14.3 擁抱平臺 253 14.3.1 提供靜態文件 254 14.3.2 存儲狀態 254 14.3.3 日志 255 14.3.4 持續集成 256 14.3.5 管理環境:生產和開發 257 14.3.6 分享機密 258 14.3.7 VPC(虛擬私有雲) 260 14.4 優化應用 261 14.4.1 捆綁或單用途功能 261 14.4.2 為Lambda函數選擇合適的內存大小 261 14.5 面對挑戰 262 14.5.1 處理超時 262 14.5.2 冷啟動 263 14.5.3 DDoS攻擊 264 14.5.4 廠商綁定 265 14.6 試一試 266 14.7 本章小結 266 第15章 實際案例研究 267 15.1 CodePen 267 15.1.1 無服務器之前 268 15.1.2 無服務器遷移 269 15.1.3 基礎設施成本 271 15.1.4 測試與挑戰 272 15.2 MindMup 272 15.2.1 無服務器之前 273 15.2.2 無服務器遷移 275 15.2.3 基礎設施成本 277 15.2.4 測試、日志和挑戰 277 15.3 本章小結 279 附錄A 安裝和配置 281 附錄B 配置Facebook Messenger、Twilio和Alexa 287 附錄C 設置Stripe和MongoDB 309 前言 我們成為開發人員已經超過10年了。從20世紀90年代的臺計算機開始,我們就自己開發了個用Pascal和BASIC編寫的函數,甚至還參加了編程競賽。但是當網絡出現時,一切都改變了。我們立即著手構建個使用靜態HTML和CSS的Web應用及網頁。當JavaScript和jQuery成為新標準時我們幾乎立即轉向它們(即使有人還在使用Flash和ActionScript)。隨著Node.js的出現,我們正在使用的語言(如Python和C#)被它替換是理所應當的。即使我們有時仍然使用這些語言編寫一些函數,但我們轉向Node.js是必然的。 大約三年前,我們將注意力轉向無服務器架構。Gojko Adzic通過他初使用Claudia.js作為部署工具完成的工作向我們介紹了AWS Lambda。我們驚訝於開發和部署無服務器架構應用的速度和容易程度,以及擴展它們是那麼簡單,我們開始與他一起創建Claudia Bot Builder。 日復一日,我們對構建和維護Web應用的觀點完全被無服務器架構改變。後端服務被無服務器函數取代,而不需要編寫bash腳本、登錄服務器以及規劃容量,我們不再關注這些問題,而是更多地關注業務邏輯和應用價值。我們成為開發人員已經超過10年了。從20世紀90年代的臺計算機開始,我們就自己開發了個用Pascal和BASIC編寫的函數,甚至還參加了編程競賽。但是當網絡出現時,一切都改變了。我們立即著手構建個使用靜態HTML和CSS的Web應用及網頁。當JavaScript和jQuery成為新標準時我們幾乎立即轉向它們(即使有人還在使用Flash和ActionScript)。隨著Node.js的出現,我們正在使用的語言(如Python和C#)被它替換是理所應當的。即使我們有時仍然使用這些語言編寫一些函數,但我們轉向Node.js是必然的。 大約三年前,我們將注意力轉向無服務器架構。Gojko Adzic通過他初使用Claudia.js作為部署工具完成的工作向我們介紹了AWS Lambda。我們驚訝於開發和部署無服務器架構應用的速度和容易程度,以及擴展它們是那麼簡單,我們開始與他一起創建Claudia Bot Builder。 日復一日,我們對構建和維護Web應用的觀點完全被無服務器架構改變。後端服務被無服務器函數取代,而不需要編寫bash腳本、登錄服務器以及規劃容量,我們不再關注這些問題,而是更多地關注業務邏輯和應用價值。 我們將個無服務器架構Web應用發布到生產環境中,並開發了數百個聊天機器人。我們的產量增加了近五倍。這太不可思議了。花幾個月時間學習如何使用bash、ssh、rsync等配置和維護應用服務器已經不再重要了。一切都變了。從我們的出發點看,無服務器架構生態走了很長的一段路——無服務器架構提供商現在更容易使用,而且每年有越來越多的無服務器架構應用組件可用(Amazon re:Invent)。 無服務器架構在近幾年內日新月異——我們已經把它作為自己的事業。我們開始討論無服務器架構,舉辦研討會和提供無服務器架構業務咨詢。我們嘗試總結經驗和知識,結合多個其他來源,並以易於學習和理解的方式將它們組合在一起。
![](http://img3m2.ddimg.cn/91/35/28558522-2_u_5.jpg) ![](http://img3m2.ddimg.cn/91/35/28558522-3_u_5.jpg) ![](http://img3m2.ddimg.cn/91/35/28558522-4_u_5.jpg) ![](http://img3m2.ddimg.cn/91/35/28558522-5_u_5.jpg) ![](http://img3m2.ddimg.cn/91/35/28558522-6_u_5.jpg) ![](http://img3m2.ddimg.cn/91/35/28558522-7_u_5.jpg) ![](http://img3m2.ddimg.cn/91/35/28558522-8_u_5.jpg) |