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
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 单元测试 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