API 安全策略和基础指南
Service Mesh和API网关正在逐步融合
使用API的企业和开发人员很有可能遇到Service Mesh 和API网关。它们都是同一本书的几页,但由于它们的功能重叠,偏爱一个而不是另一个可能会令人困惑。最近的一些现象表面,随着API-First战略的持续实施,企业内部API、开放API、三方API的数量大幅度增长以及新型应用触发了网络边界的迁移,导致内外边界变得模糊,Service Mesh和API网关逐步走向融合,以更好的面对未来。
幂简集成API平台的技术实现就是Service Mesh和 API网关 融合的一个实践案例,并且进一步提出了API Mesh的概念,以更好的应对AI时代即将泛滥的 开放API。
什么是Service Mesh?
Service Mesh是一个基础设施层,负责监督组件和内部服务之间的通信。当应用程序的功能被分解为微服务时,它通常被使用。Service Mesh监控并保护这些服务之间的数据流。例如,当用户登录应用程序时,service-A检索用户数据,service-B验证用户身份。服务网格将帮助这两个服务相互通信。Service-A将通过服务网格将数据引导到service-B。
什么是API网关?
API网关 涉及外部通信,通常位于客户端和服务器之间,用于企业将自有API接口公开到互联网上,供用户直接调用或者API接口平台代理调用。
API网关接受来自客户端的请求,理解这些请求并确定需要哪些服务,然后将它们组合成用户统一、无缝的体验。API网关的功能包括身份验证、路由、速率限制、计费、监控、分析、策略、警报、安全性等。
Service Mesh和API网关逐步走向融合
在进入 servicemesh 时代之后,Servicemesh 和 API gateway 的关系开始是这样:
- 功能和职责清晰划分
- 客户端访问服务的功能高度重叠
此时两者的关系很清晰,而且由于当时 Servicemesh 和 API Gateway 是不同的产品,两者的重合点只是在功能上。
而随着时间的推移,当 Servicemesh 产品和 API Gateway 产品开始出现相互渗透时,两者的关系就开始变得暧昧。
如何融合东西向和南北向的通讯方案?
其中的一个做法就是基于 Servicemesh 的 Sidecar 来实现 API Gateway,从而在南北向通讯中引入 Servicemesh 这种东西向通讯的方案。这里我们不展开细节,我这里援引一个图片(鸣谢赵化冰同学)来解释这个方案的思路:
这个时候 servicemesh 和 API Gateway 的关系就变得有意思了,因为 servicemesh 中 sidecar 的引入,所以前面的“哲学问题”又有了一个新的解法:API Gateway 这次真的可以分拆为两个独立部署的物理实体,而不是逻辑上的两个部分:
- API Gateway 本体:实现 API Gateway 除了访问内部服务之外的功能
- Sidecar:按照 servicemesh 的标准做法, 我们视 API Gateway 为一个部署于 servicemesh 中的普通服务,为这个服务 1:1 的部署 sidecar
在这个方案中,原来用于 servicemesh 的 sidecar,被用在了 API Gateway 中,替代了 API Gateway 中原有的客户端访问的各种功能。这个方案让 API Gateway 的实现简化了很多,也实现了东西向和南北向通讯能力的重用和融合,而 API Gateway 可以更专注于 “API Management” 的核心功能。
此时 servicemesh 和 API Gateway 的关系就从“泾渭分明”变成了“兼容并济”,走向了融合之路。
什么是API Mesh?
API Mesh 是一种设计模式或架构方法,用于基于微服务的应用程序,以有效地管理和协调多个微服务之间的交互。它旨在简化服务通信、增强可扩展性、提高弹性并促进高效管理。
1、API Mesh 的目标
简化服务通信:API Mesh 抽象了服务到服务通信的复杂性,使开发人员能够专注于业务逻辑。
- 增强可扩展性:通过提供负载平衡和动态扩展机制,API Mesh 使应用程序能够有效地处理不同的工作负载。
- 提高弹性:API Mesh 采用断路等容错机制来防止服务故障并最大限度地减少停机时间。
- 促进高效管理:服务通信、安全性和可观察性的集中管理可简化操作并降低复杂性。
2、关键概念
- 服务网格:处理微服务架构内的服务到服务通信、流量管理和可观察性的专用基础设施层。
- API 网关:客户端请求的集中入口点,负责路由、身份验证、授权和策略实施。
- 服务发现:支持 API Mesh 内微服务的动态定位和连接的机制。
- 负载平衡:在多个微服务实例之间分配传入请求以确保可扩展性和容错性的技术。
- 熔断:一种容错机制,通过暂时中断对故障服务的请求来防止级联故障。
- 可观察性:监控、日志记录、指标收集、分布式跟踪和实时性能分析的工具和实践。
- 安全性:通过认证、授权、加密、数据保护等措施,确保API Mesh内数据和服务的安全。
API Mesh 的好处
增强的可扩展性:API Mesh 有助于微服务的水平扩展和高效的资源利用,使应用程序能够有效地处理不同的工作负载。
提高弹性:通过结合断路等容错机制,API Mesh 可以防止服务故障、最大限度地减少停机时间并确保系统可靠性。
简化管理:服务通信、安全性和可观察性的集中管理可简化操作、降低复杂性并更轻松地进行维护和更新。
提高敏捷性:API Mesh 加速开发周期、促进创新并支持服务的快速迭代,从而提高敏捷性和对市场需求的响应能力。
推荐阅读
https://www.infoq.cn/article/hTzq7h1cPxWFGsiLkBkJ
https://konghq.com/blog/enterprise/the-difference-between-api-gateways-and-service-mesh