博客 | NGINX

自适应治理为 API 开发人员提供所需的自主权

NGINX-F5-horiz-black-type-RGB 的一部分
Andrew Stiefel 缩略图
安德鲁·施蒂费尔
2022 年 11 月 10 日发布

当今的企业通常由全球分布的团队组成,这些团队构建和部署 API 和微服务,通常跨越多个部署环境。 根据 F5 的application战略状况报告,81% 的组织在三种或更多种环境中运营,包括公共云、私有云、本地和边缘。

确保这些复杂的多云架构的可靠性和安全性对于负责维护它们的平台运营团队来说是一个重大挑战。 根据 F5 报告中调查的软件工程领导者,可见性(45%)和一致的安全性(44%)位居平台运营团队面临的多云挑战之首。

随着当今 API 和微服务数量的不断增长,API 治理正迅速成为规划和实施企业范围 API 战略的最重要主题之一。 但是什么是 API 治理,为什么它对您的 API 策略如此重要?

什么是 API 治理?

在最基本的层面上,API 治理涉及创建策略和运行检查和验证,以确保 API 可发现、可靠、可观察和安全。 它为您的现代应用提供支持的复杂系统和业务流程的状态提供了可见性,您可以使用它来指导 API 基础设施随时间的演变。

为什么需要 API 治理?

API 治理的战略重要性怎么估计也不为过:它是实现组织整体 API 战略的手段。 如果没有适当的治理,您永远无法实现 API 设计、操作和产品化的一致性。

如果管理不善,治理往往会带来繁重的要求,从而减慢团队的速度。 然而,如果做得好,API 治理可以减少工作量、简化审批,并允许组织中的不同团队独立运作,同时实现 API 策略的总体目标。

您需要管理哪些类型的 API?

作为 API 策略的一部分,构建有效的 API 治理计划首先要确定生产中的 API 类型,以及管理它们所需的工具、策略和指导。 如今,大多数企业团队正在使用四种主要类型的 API:

  • 外部 API——交付给外部消费者和开发者,以实现数据和功能的自助集成
  • 内部 API – 用于连接内部应用和微服务,仅供您组织的开发人员使用
  • 合作伙伴 API – 通过与合作伙伴组织的开发人员共享数据或应用的访问权限来促进战略业务关系
  • 第三方 API——由第三方供应商提供的一种服务,通常用于处理付款或访问数据或应用

必须管理企业中的每种类型的 API,以确保其安全、可靠,且可供需要访问它的团队和用户访问。

您可以使用哪些 API 治理模型?

定义和应用 API 治理的方法有很多种。 在 NGINX,我们通常会看到客户采用以下两种模型之一:

  • 集中式——中央团队审查并批准变更;根据运营规模,该团队可能会成为阻碍进度的瓶颈
  • 去中心化——各个团队有权自主构建和管理 API;这会增加上市时间,但会牺牲整体安全性和可靠性

然而,随着公司在 API 优先之旅中不断进步,随着生产中 API 数量的增加,这两种模式都开始崩溃。 集中式模型通常会尝试实施一种一刀切的方法,而这种方法需要在整个过程中进行各种审查和签字。 这会减慢开发团队的速度并产生摩擦——在他们的沮丧中,开发人员有时甚至会想方设法解决要求(可怕的“影子 IT”)。

另一种模型——去中心化治理——一开始对 API 开发人员来说效果很好,但随着时间的推移复杂性会增加。 除非部署 API 的不同团队频繁沟通,否则不同 API 之间的整体体验会变得不一致:每个 API 的设计和功能都不同,版本更改会导致服务之间出现中断,并且不同团队和服务之间的安全性实施也不一致。 对于构建 API 的团队来说,额外的工作和复杂性最终会使开发速度减慢,就像集中式模型一样。

云原生应用依靠 API 来实现各个微服务之间的相互通信,并将响应发回请求源。 随着公司继续采用微服务的灵活性和敏捷性, API 蔓延将不会消失。 相反,您需要采用不同的方法来管理这些复杂且不断变化的环境中的 API。

使用自适应治理来增强 API 开发人员的能力

幸运的是,还有更好的方法。 自适应治理提供了一种替代模型,它赋予 API 开发人员权力,同时赋予平台运营团队所需的控制权,以确保整个企业的 API 的可靠性和安全性。

自适应治理的核心是平衡控制(一致性的需要)和自主性(做出本地决策的能力),以实现整个企业的灵活性。 在实践中,自适应治理模型将决策权拆分并分配给各个团队。

平台运营团队管理共享基础设施(API 网关和开发人员门户)并制定全局政策以确保跨 API 的一致性。 然而,构建 API 的团队充当其服务或业务线的主题专家。 他们有权为他们的 API 设置和应用本地策略——基于角色的访问控制 (RBAC)、服务速率限制等——以满足其各自业务环境的要求。

自适应治理允许每个团队或业务线定义其工作流程并平衡所需的控制级别,同时使用组织的共享基础设施。

使用 NGINX 为您的 API 实施自适应治理

当您开始规划和实施 API 策略时,请遵循以下最佳实践在您的组织中实施自适应治理:

让我们看看如何使用API 连接管理器(F5 NGINX 管理套件的一部分)来实现这些用例。

提供共享基础设施

您组织中的团队正在构建 API,他们需要在其微服务中包含类似的功能:身份验证和授权、mTLS 加密等。 他们还需要向 API 消费者(无论是内部团队、业务合作伙伴还是外部开发人员)提供文档和版本控制。

平台运营团队不需要团队构建自己的解决方案,而是可以提供对共享基础设施的访问。 与 API 连接管理器中的所有操作一样,您只需几分钟即可使用 UI 或完全声明性的 REST API 完成设置,从而将 API 连接管理器集成到您的 CI/CD 管道中。 在这篇文章中,我们使用 UI 来说明一些常见的工作流程。

API 连接管理器支持两种类型的工作区:基础设施和服务。 平台运营团队使用基础设施工作区以 API 网关集群和开发者门户集群的形式加入和管理共享基础设施。 服务工作区由 API 开发人员用来发布和管理 API 和文档。

要设置共享基础设施,首先要添加一个基础设施工作区。 单击左侧导航栏中的“基础设施” ,然后单击选项卡右上角的“+ 添加”按钮。 给你的工作区起个名字(这里是团队句子——一个虚构的团队建立一个简单的“Hello, World!” 请参阅 API 文档。

API 连接管理器 UI 的“基础设施”选项卡上“工作区”页面的屏幕截图
图 1: 添加基础设施工作区

接下来,向工作区添加一个环境。 环境包含 API 网关集群和开发者门户集群。 单击您的工作区名称,然后单击“操作”列中的...图标;从下拉菜单中选择“添加”

打开的“创建环境”面板如图 2 所示。 填写名称(可选还有描述)字段,选择环境类型(生产或非生产),然后单击要添加的基础设施(API 网关集群、开发者门户集群或两者)的+ 添加按钮。 单击“创建”按钮完成环境设置。 有关完整说明,请参阅API 连接管理器文档

API 连接管理器 UI 中的“创建环境”面板的屏幕截图
图 2: 创建环境和板载基础设施

给予团队代理权

按业务线、地理区域或其他逻辑边界为团队提供逻辑分离是有意义的——如果这不会剥夺他们获得成功所需工具的权利。 拥有共享基础设施并不意味着团队必须担心全球层面的活动。 相反,您希望让他们专注于定义自己的需求、制定路线图和构建他们的微服务。

为了帮助团队组织,平台运营团队可以提供服务工作区,供团队组织和运营他们的服务和文档。 这些创建了逻辑边界并提供对不同环境(例如开发、测试和生产)的访问,以开发服务。 该过程就像我们在上一节中创建的基础架构工作区一样。

首先,单击左侧导航栏中的“服务” ,然后单击选项卡右上角的“+ 添加”按钮。 为您的工作区提供名称(此处为我们的“Hello, World”服务的api-sentence ),并可选择提供描述和联系信息。

API 连接管理器 UI 的“服务”选项卡上“工作区”页面的屏幕截图
图 3: 创建服务工作区

此时,您可以邀请 API 开发人员开始在您为他们创建的工作区中发布代理和文档。 有关发布 API 代理和文档的完整说明,请参阅API 连接管理器文档

平衡全球政策和本地控制

适应性治理需要在执行全球政策和授权团队做出提高敏捷性的决策之间取得平衡。 您需要通过定义平台操作强制执行的全局设置并设置定义 API 开发人员使用的工具和他们可以做出的决策的“护栏”来建立明确的职责分工。

API 连接管理器提供了全局策略(应用于共享基础设施)和在 API 代理级别管理的细粒度控制。

API Connectivity Manager 中可用的全局策略包括:

  • 错误响应格式– 自定义 API 网关的错误代码和响应结构
  • 日志格式– 启用访问日志记录并自定义日志条目的格式
  • OpenID Connect – 使用 OpenID Connect 策略保护对 API 的访问
  • 响应标头– 在响应中包含或排除标头
  • 请求主体大小– 限制传入 API 负载的大小
  • 入站 TLS – 设置与 API 客户端的 TLS 连接的策略
  • 后端 TLS – 使用 TLS 保护与后端服务的连接

API Connectivity Manager 中可用的 API 代理策略包括:

  • 允许的 HTTP 方法– 定义可以使用的请求方法( GETPOSTPUT等)
  • 访问控制——使用不同的身份验证和授权技术(API 密钥、HTTP 基本身份验证、JSON Web 令牌)确保对 API 的安全访问
  • 后端健康检查——运行持续的健康检查,以避免对后端服务的请求失败
  • CORS – 允许客户端从外部域对资源进行受控访问
  • 缓存——通过缓存策略提高 API 代理性能
  • 代理请求标头– 将选择标头传递给后端服务
  • 速率限制——限制传入请求并保护 API 工作负载

在下面的示例中,我们使用 UI 定义一个保护 API 网关代理和后端服务之间通信的策略。

单击左侧导航栏中的“基础设施” 。 单击包含要编辑的 API 网关集群的环境的名称后,该选项卡将显示该环境中的 API 网关集群和开发者门户集群。

API 连接管理器 UI 的“基础设施”选项卡上的“环境”页面的屏幕截图
图4: 为 API 网关集群和开发者门户集群配置全局策略

在要应用策略的 API 网关集群行中,单击“操作”列中的...图标,然后从下拉菜单中选择“编辑高级配置” 。 单击左栏中的“全局策略”以显示所有可配置的全局策略列表。

API 连接管理器 UI 中的“全局策略”页面的屏幕截图
图5: 为 API 网关集群配置策略

要应用TLS 后端策略,请单击其行右端的...图标,然后从下拉菜单中选择添加策略。 填写所需信息,上传您的证书,然后单击“添加” 。 然后单击保存并提交按钮。 从现在开始,API 网关集群和后端服务之间的流量由 TLS 保护。 有关完整说明,请参阅API 连接管理器文档

概括

规划和实施 API 治理是确保您的 API 策略成功的关键步骤。 通过努力实现分布式模型并依靠自适应治理来满足不同团队和 API 的独特需求,您可以扩展和应用统一治理,而不会牺牲使 API 和云原生环境如此高效的速度和灵活性。

立即开始

开始30 天 NGINX 管理套件免费试用,其中包括访问API 连接管理器、作为 API 网关的NGINX Plus以及用于保护您的 API 的NGINX App Protect


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”