Serverless学习手册
Jason Katzer
孙立超 译
出版时间:2023年04月
页数:234
“在这本书中,Jason介绍了Serverless体系结构的每个重要方面。简单地说,如果你正在从事Serverless相关的工作,这就是为你创作的书。”
——Erez Berkner
Lumigo首席执行官

无论你的公司是在考虑Serverless计算,还是已经决定采用这个模型,这本实用的书对你都是非常合适。本书作者向处于职业初中期的开发人员展示了使用这个模型构建和发布可维护和可扩展的服务所需要的知识。
有了这本书,你将学习如何通过Serverless计算的视野,在云计算中构建一个现代的生产系统。你将发现Serverless如何将你从生产中设置和维护系统的繁琐任务中解脱出来。你还将探索新的方法来提升你的职业生涯,并充满自信地进行设计、开发和部署。
这本书分为三个部分,包括:
● 生产路径:检查分布式系统、微服务、接口和Serverless体系结构和模式的进出情况。
● 工具:深入研究监控、可监控性和警报、日志记录、流水线、自动化和部署。
● 概念:学习如何设计安全性和隐私性,如何通过测试和模拟系统来管理质量,以及如何为失败做计划。
  1. 前言
  2. 第0章 Serverless介绍
  3. 0.1 什么是Serverless?
  4. 0.1.1 Serverless的历史
  5. 0.1.2 云服务提供商概况
  6. 0.1.3 可靠性,可用性,灾难恢复
  7. 0.2 Serverless的优势
  8. 0.2.1 增加的可伸缩性、安全性和可靠性
  9. 0.2.2 只支付你使用的东西
  10. 0.2.3 节省管理服务器的时间和金钱
  11. 0.2.4 提高开发人员的生产力
  12. 0.2.5 降低管理职责
  13. 0.2.6 集成的便利
  14. 0.3 Serverless的弱点
  15. 0.3.1 冷(启动)战
  16. 0.3.2 计算时间
  17. 0.3.3 VPC/网络问题
  18. 0.3.4 应用程序的大小
  19. 0.3.5 可能会更贵
  20. 0.3.6 厂商锁定
  21. 0.3.7 复杂的调试
  22. 0.4 什么时候使用Serverless有意义?
  23. 0.5 Serverless的计算机什么时候不适合你?
  24. 0.6 让我们开始
  25. 第一部分 生产之路
  26. 第1章 分布式系统
  27. 1.1 什么是分布式系统?
  28. 1.2 为什么我们需要一个分布式系统?
  29. 1.3 分布式系统的严酷现实
  30. 1.3.1 物理世界
  31. 1.3.2 失踪的消息
  32. 1.3.3 不可靠的时钟
  33. 1.3.4 级联故障
  34. 1.3.5 更新产生的意外
  35. 1.3.6 幂等性
  36. 1.4 我负责什么?
  37. 1.5 在设计分布式系统时,你需要考虑哪些?
  38. 1.5.1 松耦合(或解耦)
  39. 1.5.2 容错
  40. 1.5.3 生成唯一的(主)键
  41. 1.5.4 规划幂等性
  42. 1.5.5 两阶段的更新
  43. 1.6 延伸阅读
  44. 1.7 结论
  45. 第2章 微服务
  46. 2.1 为什么要使用微服务?
  47. 2.1.1 提高开发速度
  48. 2.1.2 增加开发人员的自由
  49. 2.2 微服务的问题
  50. 2.2.1 增加了复杂性
  51. 2.2.2 需要适当的DevOps实践和资源
  52. 2.2.3 本地开发和测试的挑战
  53. 2.3 如何有效地使用微服务?
  54. 2.3.1 一致的接口
  55. 2.3.2 松散耦合
  56. 2.4 微服务有多微小?
  57. 2.5 选择单体应用还是微服务
  58. 2.5.1 什么时候应该使用单体应用?
  59. 2.5.2 什么时候需要使用微服务?
  60. 2.6 结论
  61. 第3章 Serverless架构和模式
  62. 3.1 架构师的角色
  63. 3.2 要成为一名架构师,你需要知道哪些?
  64. 3.3 决策
  65. 3.3.1 什么样的决策?
  66. 3.3.2 记录你的决策
  67. 3.3.3 我们如何做决策?
  68. 3.3.4 我们什么时候做决策?
  69. 3.4 云服务提供商组件
  70. 3.4.1 流
  71. 3.4.2 队列
  72. 3.4.3 桶
  73. 3.4.4 计算
  74. 3.4.5 数据存储
  75. 3.4.6 身份认证服务
  76. 3.4.7 API网关
  77. 3.4.8 GraphQL
  78. 3.4.9 网络
  79. 3.4.10 状态机
  80. 3.4.11 日志记录
  81. 3.4.12 监测和报警
  82. 3.5 来自云服务提供商的事件
  83. 3.6 模式
  84. 3.6.1 示例1:Serverless单体应用
  85. 3.6.2 示例2:传入Webhook
  86. 3.6.3 示例3:使用云服务提供商进行用户身份验证
  87. 3.6.4 示例4:通用的后台任务模式
  88. 3.6.5 示例5:流提取、转换、加载
  89. 3.6.6 示例6:创建自己的轮询集成
  90. 3.6.7 示例7:处理文件和图像
  91. 3.6.8 示例8:迁移服务模式
  92. 3.6.9 示例9:散开
  93. 3.7 结论
  94. 第4章 接口
  95. 4.1 接口:需要一些组装
  96. 4.1.1 消息
  97. 4.1.2 协议
  98. 4.1.3 约定
  99. 4.2 Serverless接口
  100. 4.2.1 自动重试和死信队列
  101. 4.2.2 有限与无限规模
  102. 4.3 设计接口
  103. 4.3.1 消息/载荷
  104. 4.3.2 会话和用户/身份验证
  105. 4.3.3 避免无约束的请求
  106. 4.3.4 接口与实现
  107. 4.3.5 带逻辑的线
  108. 4.4 设计不愉快的路径
  109. 4.4.1 验证输入
  110. 4.4.2 失败
  111. 4.5 与其他服务集成的策略
  112. 4.5.1 超时
  113. 4.5.2 重试
  114. 4.5.3 指数补偿
  115. 4.5.4 网络钩子
  116. 4.5.5 评估外部服务
  117. 4.5.6 速度限制
  118. 4.6 结论
  119. 第二部分 工具
  120. 第5章 Serverless框架
  121. 5.1 为什么使用Serverless框架?
  122. 5.2 什么时候Serverless框架不适合你
  123. 5.2.1 AWS是唯一的一等公民
  124. 5.2.2 AWS的云服务模板也并不完美
  125. 5.2.3 你的基础设施依赖陌生人
  126. 5.3 开始之前你需要知道些什么
  127. 5.3.1 YAML
  128. 5.3.2 Node.js
  129. 5.3.3 云资源和权限
  130. 5.3.4 基础架构模板
  131. 5.3.5 生产的机密
  132. 5.3.6 .gitignore文件
  133. 5.4 serverless.yml文件的组成
  134. 5.4.1 提供者
  135. 5.4.2 环境
  136. 5.4.3 函数
  137. 5.4.4 资源
  138. 5.4.5 包
  139. 5.4.6 插件
  140. 5.4.7 自定义
  141. 5.4.8 用于健全和安全的命名空间
  142. 5.5 使用Serverless命令
  143. 5.5.1 安装Serverless
  144. 5.5.2 使用凭证设置Serverless
  145. 5.5.3 使用Serverless install拉入模板
  146. 5.5.4 检查示例项目的包(里面有什么)
  147. 5.5.5 部署
  148. 5.5.6 调用函数,并查看日志
  149. 5.5.7 回滚
  150. 5.5.8 销毁服务
  151. 5.5.9 部署软件包
  152. 5.6 现实世界serverless.yml
  153. 5.6.1 设置环境变量
  154. 5.6.2 修改权限
  155. 5.7 结论
  156. 第6章 监控、可观察性和警报
  157. 6.1 监控是什么?
  158. 6.1.1 我们为什么需要监控?
  159. 6.1.2 监控与Serverless有什么关系?
  160. 6.1.3 自动化的入口
  161. 6.2 我有什么选择?
  162. 6.2.1 托管SaaS产品
  163. 6.2.2 自托管和开放源码
  164. 6.3 监控的组成部分
  165. 6.3.1 监控指标
  166. 6.3.2 图表和图形
  167. 6.3.3 仪表板
  168. 6.3.4 警报/警告
  169. 6.4 选择先进的实践
  170. 6.4.1 心跳
  171. 6.4.2 冒烟测试和/或金丝雀
  172. 6.4.3 世界上最重要的度量标准
  173. 6.4.4 避免厂商锁定
  174. 6.4.5 随着时间的推移清除度量和警报
  175. 6.5 结论
  176. 第7章 日志
  177. 7.1 日志是什么?
  178. 7.2 为什么需要日志?
  179. 7.3 何时依赖日志而不是监控指标
  180. 7.4 应该记录什么?
  181. 7.5 你不应该记录什么?
  182. 7.6 日志是如何工作的?
  183. 7.6.1 确保你的日志可伸缩
  184. 7.6.2 结构化的日志
  185. 7.6.3 更有效的日志调试
  186. 7.6.4 搜索日志
  187. 7.6.5 异常日志(Sentry)
  188. 7.7 收集其他日志
  189. 7.8 合规
  190. 7.9 分布式跟踪
  191. 7.10加密日志以保证隐私和遵从性
  192. 7.11 那么你应该怎么做呢?
  193. 7.11.1 只加密敏感字段的值
  194. 7.11.2 加密整个日志语句
  195. 7.12 结论
  196. 第8章 变更、自动化和部署流水线
  197. 8.1 应对变化
  198. 8.2 自动化的作用
  199. 8.3 使你的代码为部署到生产系统做好准备
  200. 8.4 基础设施即代码
  201. 8.5 数据库更改(迁移)
  202. 8.6 配置管理
  203. 8.7 什么是流水线?
  204. 8.8 关于流水线的决策
  205. 8.9 金丝雀和蓝/绿部署
  206. 8.10 为什么需要流水线?
  207. 8.11 部署流水线的关键阶段
  208. 8.11.1 步骤1:执行标准
  209. 8.11.2 步骤2:构建和打包
  210. 8.11.3 步骤3:测试
  211. 8.11.4 步骤4:发布Artifact
  212. 8.11.5 步骤5:部署到目标环境
  213. 8.11.6 步骤6:验证部署
  214. 8.11.7 步骤7:必要时(可能)回滚
  215. 8.12 流水线故障处理
  216. 8.13 结论
  217. 第三部分 概念
  218. 第9章 安全性、权限和隐私
  219. 9.1 每个人都有责任,但你尤其有责任
  220. 9.2 做好被黑的准备
  221. 9.2.1 了解你的威胁和攻击者
  222. 9.2.2 设计的安全
  223. 9.3 限制,跟踪和审查所有秘密和访问
  224. 9.4 准备更新
  225. 9.4.1 深度防御
  226. 9.4.2 限制爆炸半径
  227. 9.4.3 信任,但要核查
  228. 9.5 验证所有用户输入并对设置重复检查
  229. 9.5.1 监控系统中的异常情况
  230. 9.5.2 测试你的安全
  231. 9.5.3 仔细选择依赖项并保持软件的最新
  232. 9.5.4 优先保护你的数据和客户数据的隐私
  233. 9.5.5 不要干扰生产
  234. 9.6 确保你的电脑安全
  235. 9.7 继续学习
  236. 9.8 结论
  237. 第10章 质量、测试和模拟
  238. 10.1 代码质量的作用
  239. 10.1.1 代码风格
  240. 10.1.2 代码校验
  241. 10.2 测试
  242. 10.2.1 测试什么,不测试什么
  243. 10.2.2 测试类型
  244. 10.2.3 代码覆盖率
  245. 10.2.4 加强你的测试
  246. 10.3 模拟
  247. 10.4 结论
  248. 第11章 为失败做计划
  249. 11.1 简介:理解它,即使你不能管理它
  250. 11.2 识别风险
  251. 11.3 做好准备
  252. 11.4 做一个运行手册
  253. 11.5 计划宕机
  254. 11.6 监控你的云服务提供商
  255. 11.7 了解你的(服务)限制
  256. 11.8 结论
  257. 第12章 总结
  258. 12.1 在供应商之间做取舍
  259. 12.2 社区
  260. 12.3 寻求其他人的建议
  261. 12.4 陷入困境时该如何做
  262. 12.5 迈出职业生涯的下一步
书名:Serverless学习手册
作者:Jason Katzer
译者:孙立超 译
国内出版社:中国电力出版社
出版时间:2023年04月
页数:234
书号:978-7-5198-7698-2
原版书书名:Learning Serverless
原版书出版商:O'Reilly Media
Jason Katzer
 
Jason Katzer是CloudPro APP的创始人。它为云开发人员创建生产工具、云原生架构和节省运行成本。此前,他曾在Capital One (Paribus/WikiBuy)和Blink Health担任软件工程经理。Jason也是一个连续创业家和天使投资人,他参与并开创了许多新企业。他在多个行业工作过,包括医疗保健、消费科技、健身、销售、金融和电信,他喜欢帮助人们节省时间和金钱。但他真正关注的是构建高质量的软件。他是一个充满热情的老师,也是一个终身学习者。他大量的欣赏电视节目、阅读播客和聆听有声书,而且非常想念Vin Scully的声音。
 
 
本书封面上的动物是黑尾塍鹬(学名:Limosa Limosa)。这些分布甚广的水鸟在西起冰岛,横跨欧洲,东至西伯利亚的广大北部湿地繁殖。还有一小部分居住在欧洲西北部。它是飞到南方过冬的候鸟,行迹穿越非洲中部、印度北部部分地区、亚洲东南部和澳大利亚沿海地区。
塍鹬体型大,腿长,平均站起来有16英寸高,身上有黑白斑点图案。在夏季的繁殖季节,羽毛主体色为淡红色;在冬季羽毛是浅灰棕色。当它们飞行时,可以从白色的翼条和背部轻松分辨出来。这些鸟用它们长长的喙寻找小猎物,如昆虫、蠕虫、甲壳类动物和蝌蚪。
像其他种类的塍鹬一样,黑尾塍鹬在繁殖地和过冬地区进行长途迁徙,有时在海拔3英里或更高的地方飞行,那里的空气含氧量比海平面低得多。据了解,它们会在这些高海拔地区进行部分迁徙飞行,以利用有利的高海拔风以及其他因素。研究还表明,黑尾塍鹬在多年的迁移过程中,无论是作为一个群体还是单独个体,都表现出不同的变化。
在全球范围内,黑尾鹦鹉被认为濒临灭绝,其活动范围内的许多湿地正被开发用于农业用途。O’Reilly 出版书籍的封面上包含的许多动物都濒临灭绝;所有这些动物对世界都很重要。
封面插图由Karen Montgomery根据George Shaw的General Zoology(1809-1826)中的一幅黑白版画绘制。
购买选项
定价:78.00元
书号:978-7-5198-7698-2
出版社:中国电力出版社