Node.js 無服務器應用實戰 使用 AWS Lambda 和 Claudia.js (Serverless Applications with Node.js: Using AWS Lambda and Claudia.js)

Slobodan Stojanovic , Aleksandar Simovic 張懿 崔正大 譯

  • Node.js 無服務器應用實戰 使用 AWS Lambda 和 Claudia.js (Serverless Applications with Node.js: Using AWS Lambda and Claudia.js)-preview-1
  • Node.js 無服務器應用實戰 使用 AWS Lambda 和 Claudia.js (Serverless Applications with Node.js: Using AWS Lambda and Claudia.js)-preview-2
  • Node.js 無服務器應用實戰 使用 AWS Lambda 和 Claudia.js (Serverless Applications with Node.js: Using AWS Lambda and Claudia.js)-preview-3
Node.js 無服務器應用實戰 使用 AWS Lambda 和 Claudia.js (Serverless Applications with Node.js: Using AWS Lambda and Claudia.js)-preview-1

買這商品的人也買了...

商品描述

● 身份驗證和數據庫存儲
● 異步函數
● 現實世界中的有趣示例
● 開發無服務器微服務

作者簡介

Slobodan Stojanović和Aleksandar Simović是AWS Serverless Heroes和Claudia.js項目的核心貢獻者,
是Claudia Bot Builder的主要開發人員和維護人員,以及Node.js的無服務器應用的共同作者。

Aleksandar已經擔任高級軟件顧問和工程師超過七年,主攻但不限於JavaScript。
他還涉足Swift、Python和Rust。他在貝爾格萊德工作,是JS貝爾格萊德會議的共同組織者。

Slobodan是Cloud Horizo​​n的首席技術官,Cloud Horizo​​n是一家位於蒙特利爾的軟件開發工作室。
他在貝爾格萊德工作,是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
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 HotDelivery 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 單元測試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叔叔的出租車應用23
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