精通API架构:设计、运维与演进
James Gough, Daniel Bryant, Matthew Auburn
张力强, 范怿平 译
出版时间:2024年07月
页数:223
“容器和微服务备受关注,但人们经常忽略服务通信的基本原理。本书对此进行了正确的研究,并深入探讨了如何构建和发展API。”
——Sam Newman
Building Microservices的作者
“精彩绝伦,包含大量的应用技巧、经典示例和实用建议。”
——Stefania Chaplin
GitLab & DevStefOps

大多数联网的组织都在构建和运维API,这是客户开始与公司服务交互的门户。设计、构建和管理这些关键程序会影响组织中从工程师和产品所有者到最高管理层的每一个人。但开发人员和解决方案架构师面临的真正挑战是从头开始创建API平台。
通过本书,你将学习构建和测试REST API的策略,这些REST API使用API网关在微服务级别组合产品。三位作者解释了如何通过基础架构微调帮助工程师团队和组织平滑迁移到云,并创造使用服务网格等技术连接内部服务的机会。
通过阅读本书,你将:
● 学习构建API平台的API基础知识和架构模式。
● 使用实际示例来了解如何设计、构建和测试基于API的系统
● 部署、运维和配置API平台的关键组件
根据案例研究合理使用API网关和服务网格。
● 了解API架构中的核心安全性和常见漏洞。
● 使用威胁建模以及OAuth2和TLS等技术保护数据和API。
● 了解如何将现有系统向API和云架构演进。
  1. 前言
  2. 第0章 导论
  3. 0.1 架构之旅
  4. 0.2 API简介
  5. 0.3 真实示例:会议系统案例研究
  6. 0.3.1 会议案例研究中的API类型
  7. 0.3.2 改进会议系统的原因
  8. 0.3.3 从分层架构到API建模
  9. 0.3.4 案例研究:演进步骤
  10. 0.3.5 API基础设施和流量模式
  11. 0.3.6 会议系统案例研究的路线图
  12. 0.4 使用C4图表
  13. 0.4.1 C4上下文关系图
  14. 0.4.2 C4容器图
  15. 0.4.3 C4组件图
  16. 0.5 使用架构决策记录
  17. 0.5.1 参会者演进ADR
  18. 0.5.2 精通API:ADR指南
  19. 0.6 小结
  20. 第一部分 设计、构建和测试API
  21. 第1章 设计、构建和规范API
  22. 1.1 案例研究:设计参会者API
  23. 1.2 REST介绍
  24. 1.2.1 通过示例介绍REST和HTTP
  25. 1.2.2 Richardson成熟度模型
  26. 1.3 RPC API介绍
  27. 1.4 GraphQL简要介绍
  28. 1.5 REST API标准和结构
  29. 1.5.1 集合和分页
  30. 1.5.2 过滤集合
  31. 1.5.3 错误处理
  32. 1.5.4 ADR指南:选择API标准
  33. 1.6 使用OpenAPI规范定义REST API
  34. 1.7 OpenAPI规范的实际应用
  35. 1.7.1 代码生成
  36. 1.7.2 OpenAPI验证
  37. 1.7.3 示例和模拟
  38. 1.7.4 检测变更
  39. 1.8 API版本控制
  40. 1.8.1 语义化版本控制
  41. 1.8.2 OpenAPI规范和版本控制
  42. 1.9 用gRPC实现RPC
  43. 1.10 交互建模和API格式选择
  44. 1.10.1 高流量服务
  45. 1.10.2 大尺寸交互负载
  46. 1.10.3 HTTP/2的性能优势
  47. 1.10.4 旧格式处理
  48. 1.11 指南:交互建模
  49. 1.12 同时使用多个规范
  50. 1.12.1 是否存在黄金规范
  51. 1.12.2 合并规范的挑战
  52. 1.13 小结
  53. 第2章 API接口测试
  54. 2.1 本章的会议系统场景
  55. 2.2 测试策略
  56. 2.2.1 测试四象限
  57. 2.2.2 测试金字塔
  58. 2.2.3 用于测试策略的ADR指南
  59. 2.3 契约测试
  60. 2.3.1 契约测试的益处
  61. 2.3.2 契约的实现方式
  62. 2.3.3 ADR指南:契约测试
  63. 2.4 API组件测试
  64. 2.4.1 契约测试和组件测试的比较
  65. 2.4.2 案例研究:用组件测试进行验证
  66. 2.5 API集成测试
  67. 2.5.1 使用存根服务器的好处和方法
  68. 2.5.2 ADR指南:集成测试
  69. 2.5.3 容器化测试组件:Testcontainers
  70. 2.5.4 案例研究:使用Testcontainers验证集成
  71. 2.6 端到端测试
  72. 2.6.1 自动化端到端验证
  73. 2.6.2 端到端测试的类型
  74. 2.6.3 ADR指南:端到端测试
  75. 2.7 小结
  76. 第二部分 API流量管理
  77. 第3章 API网关:入口流量管理
  78. 3.1 API网关是唯一解决方案吗
  79. 3.2 指南:代理、负载均衡器或API网关
  80. 3.3 案例研究:向消费者提供参会者服务
  81. 3.4 什么是API网关
  82. 3.5 API网关能提供哪些功能
  83. 3.6 在哪里部署API网关
  84. 3.7 API网关如何在网络边缘与其他技术集成
  85. 3.8 为何使用API网关
  86. 3.8.1 减少耦合:前端和后端之间的适配器/外观
  87. 3.8.2 简化调用方式:聚合/转换后端服务
  88. 3.8.3 保护API免受过度使用和滥用:威胁检测和防范
  89. 3.8.4 了解API是如何被使用的:可观测性
  90. 3.8.5 将API作为产品进行管理:API生命周期管理
  91. 3.8.6 商业化API:账户管理、计费和支付
  92. 3.9 API网关的现代史
  93. 3.9.1 20世纪90年代以后:硬件负载均衡器
  94. 3.9.2 21世纪00年代以后:软件负载均衡器
  95. 3.9.3 21世纪00年代中期:应用程序交付控制器
  96. 3.9.4 21世纪10年代初:第一代API网关
  97. 3.9.5 2015年以后:第二代API网关
  98. 3.10 当前API网关分类
  99. 3.10.1 传统企业网关
  100. 3.10.2 微服务/微网关
  101. 3.10.3 服务网格网关
  102. 3.10.4 不同类型API网关比较
  103. 3.11 案例研究:使用API网关改进会议系统
  104. 3.11.1 在Kubernetes中安装Ambassador Edge Stack
  105. 3.11.2 配置URL路径到后端服务的映射
  106. 3.11.3 使用基于主机的路由配置映射
  107. 3.12 部署API网关:了解和管理故障
  108. 3.12.1 API网关成为单点故障
  109. 3.12.2 检测问题并接管
  110. 3.12.3 解决事故和故障
  111. 3.12.4 防范风险
  112. 3.13 常见的API网关实现陷阱
  113. 3.13.1 API网关回路
  114. 3.13.2 API网关作为ESB
  115. 3.13.3 从上到下都是“乌龟”(API网关)
  116. 3.14 选择API网关
  117. 3.14.1 明确需求
  118. 3.14.2 自建还是购买
  119. 3.14.3 ADR指南:选择API网关
  120. 3.15 小结
  121. 第4章 服务网格:服务间流量管理
  122. 4.1 服务网格是唯一解决方案吗
  123. 4.2 指南:你应该采用服务网格吗
  124. 4.3 案例研究:把议程功能提取成服务
  125. 4.4 什么是服务网格
  126. 4.5 服务网格能提供什么功能
  127. 4.6 服务网格部署在何处
  128. 4.7 服务网格如何与其他网络技术集成
  129. 4.8 为何使用服务网格
  130. 4.8 为何使用服务网格
  131. 4.8.1 对路由、可靠性和流量管理的精细化控制
  132. 4.8.2 提供透明的可观测性
  133. 4.8.3 强化安全性:传输安全、验证和授权
  134. 4.8.4 支持多语言的跨职能通信
  135. 4.8.5 分离入站流量管理和服务间流量管理
  136. 4.9 服务网格的演进历史
  137. 4.9.1 早年历史和动机
  138. 4.9.2 实现方式
  139. 4.10 服务网格分类法
  140. 4.11 案例研究:使用服务网格来实现路由、可观测性和安全性
  141. 4.11.1 用Istio进行路由选择
  142. 4.11.2 用Linkerd观测流量
  143. 4.11.3 用Consul进行网络分段
  144. 4.12 部署服务网格:理解并管理故障
  145. 4.13 常见的服务网格实施误区
  146. 4.13.1 服务网格作为ESB
  147. 4.13.2 服务网格作为网关
  148. 4.13.3 太多的网络层
  149. 4.14 选择服务网格
  150. 4.14.1 明确需求
  151. 4.14.2 自建还是购买
  152. 4.14.3 检查清单:选择服务网格
  153. 4.15 小结
  154. 第三部分 API运维与安全
  155. 第5章 部署和发布API
  156. 5.1 分离部署和发布
  157. 5.1.1 案例研究:功能开关
  158. 5.1.2 流量管理
  159. 5.2 案例研究:建模会议系统的发布
  160. 5.2.1 API生命周期
  161. 5.2.2 将发布策略映射到生命周期
  162. 5.2.3 ADR指南:使用流量管理和功能开关将发布与部署分离
  163. 5.3 发布策略
  164. 5.3.1 金丝雀发布
  165. 5.3.2 流量镜像
  166. 5.3.3 蓝绿发布
  167. 5.4 案例研究:使用Argo Rollouts执行部署过程
  168. 5.5 监控成功和识别失败
  169. 5.5.1 可观测性的三大支柱
  170. 5.5.2 API的重要指标
  171. 5.5.3 读取信号
  172. 5.6 有效软件发布的应用程序决策
  173. 5.6.1 响应缓存
  174. 5.6.2 应用层标头传播
  175. 5.6.3 协助调试的日志
  176. 5.6.4 考虑使用理念型平台
  177. 5.6.5 ADR指南:理念型平台
  178. 5.7 小结
  179. 第6章 运维安全性:API的威胁建模
  180. 6.1 案例研究:将OWASP应用于参会者API
  181. 6.2 忽略外部API安全的风险
  182. 6.3 威胁建模
  183. 6.4 以攻击者思维思考
  184. 6.5 如何进行威胁建模
  185. 6.5.1 第1步:确定目标
  186. 6.5.2 第2步:收集正确的信息
  187. 6.5.3 第3步:分解系统
  188. 6.5.4 第4步:识别威胁—以STRIDE为例
  189. 6.5.5 第5步:评估威胁的风险
  190. 6.5.6 第6步:验证
  191. 6.6 小结
  192. 第7章 API身份验证和授权
  193. 7.1 身份验证
  194. 7.1.1 使用令牌进行最终用户身份验证
  195. 7.1.2 系统对系统的认证
  196. 7.1.3 为什么不能将密钥和用户混用
  197. 7.2 OAuth2
  198. 7.2.1 授权服务器在API交互中的角色
  199. 7.2.2 JSON网络令牌
  200. 7.2.3 OAuth2授权的术语和机制
  201. 7.2.4 ADR指南:我是否应该考虑使用OAuth2
  202. 7.2.5 授权码授权
  203. 7.2.6 刷新令牌
  204. 7.2.7 基于客户端凭据的授权
  205. 7.2.8 其他OAuth2授权方式
  206. 7.2.9 ADR指南:选择支持哪些OAuth2授权方式
  207. 7.2.10 OAuth2作用域
  208. 7.2.11 授权执行
  209. 7.3 OIDC介绍
  210. 7.4 SAML 2.0
  211. 7.5 小结
  212. 第四部分 使用API的演进架构
  213. 第8章 将应用程序重新设计为API驱动的架构
  214. 8.1 为何使用API来演进系统
  215. 8.1.1 提取有用抽象:加强内聚
  216. 8.1.2 划清领域边界:拥抱松耦合
  217. 8.2 案例研究:建立参会者的领域界限
  218. 8.3 最终状态架构选择
  219. 8.3.1 单体架构
  220. 8.3.2 面向服务的架构
  221. 8.3.3 微服务
  222. 8.3.4 函数
  223. 8.4 管理演进过程
  224. 8.4.1 明确目标
  225. 8.4.2 使用适应度函数
  226. 8.4.3 将系统分解成模块
  227. 8.4.4 创建API作为扩展的“拼接点”
  228. 8.4.5 识别系统内的变更杠杆点
  229. 8.4.6 持续交付和验证
  230. 8.5 用API演进系统的架构模式
  231. 8.5.1 扼杀者
  232. 8.5.2 外观和适配器
  233. 8.5.3 API分层蛋糕架构
  234. 8.6 识别痛点和机会
  235. 8.6.1 升级和维护问题
  236. 8.6.2 性能问题
  237. 8.6.3 打破依赖性:高度耦合的API
  238. 8.7 小结
  239. 第9章 使用API基础设施向云平台演进
  240. 9.1 案例研究:将参会者服务迁移到云环境
  241. 9.2 选择云迁移策略
  242. 9.2.1 保留或重审
  243. 9.2.2 重新托管
  244. 9.2.3 平台化改造
  245. 9.2.4 重新购买
  246. 9.2.5 重构/重新架构
  247. 9.2.6 退役
  248. 9.3 案例研究:将参会者服务迁移到云平台
  249. 9.4 API管理的作用
  250. 9.5 南北向与东西向:模糊的流量管理界限
  251. 9.5.1 从外向内进行迁移
  252. 9.5.2 跨越边界:跨网络路由
  253. 9.6 从区域架构到零信任架构
  254. 9.6.1 进入分区的世界
  255. 9.6.2 不信任任何人并始终验证
  256. 9.6.3 服务网格在零信任架构中的作用
  257. 9.7 小结
  258. 第10章 总结
  259. 10.1 案例研究:回顾
  260. 10.2 API、康威定律和组织机构
  261. 10.3 了解决策类型
  262. 10.4 准备好迎接未来
  263. 10.4.1 异步通信
  264. 10.4.2 HTTP/3
  265. 10.4.3 基于平台的网格
  266. 10.5 如何不断学习API架构
  267. 10.5.1 不断磨炼基本功
  268. 10.5.2 了解最新行业新闻
  269. 10.5.3 雷达、象限和趋势报告
  270. 10.5.4 学习最佳实践和用例
  271. 10.5.5 寓学于练
  272. 10.5.6 教学相长
书名:精通API架构:设计、运维与演进
译者:张力强, 范怿平 译
国内出版社:机械工业出版社
出版时间:2024年07月
页数:223
书号:978-7-111-75746-7
原版书书名:Mastering API Architecture
原版书出版商:O'Reilly Media
James Gough
 
詹姆斯·高夫(James Gough),Java开发者和技术图书作者,任职于摩根士丹利,专注构建面向客户的技术。
 
 
Daniel Bryant
 
Daniel Bryant是Datawire的一名独立技术顾问及产品架构师。 他主要关注DevOps工具、云/容器平台,以及各种微服务实现。
 
 
Matthew Auburn
 
Matthew Auburn是摩根士丹利的副总裁。他曾从事金融系统、移动和Web应用程序以及API安全方面的工作。
 
 
本书封面上的动物是犰狳蜥蜴(Ouroborus cataphractus),以前属于Cordylus属。
犰狳蜥蜴生活在南非西海岸的沙漠中。因外形它们通常被比作微型龙:浅棕色或深棕色的鳞片,黄色的腹下有黑色的花纹,体长通常为7.5~9cm(不包括尾巴)。
它们群居,白天活动,但大部分活动时间是在日光浴中度过的。它们的食物是小昆虫(主要是白蚁),在冬季会冬眠(部分冬眠)。与大多数蜥蜴产卵不同的是,犰狳蜥蜴产活仔,大约每年一次,每次产一到两只。雌蜥蜴会喂养幼蜥蜴,这也是蜥蜴的另一种不寻常行为。
它们对付掠食者的防御机制是滚成一团,用嘴叼住尾巴。这使它们看起来像神话中的大蛇象征着完整或无限。哺乳动物犰狳也会蜷缩成一团,这种独特的行为也是它们名字的由来。
犰狳蜥蜴是“近危物种”。O’Reilly出版物封面上的许多动物都濒临灭绝,它们对世界都很重要。
购买选项
定价:99.00元
书号:978-7-111-75746-7
出版社:机械工业出版社