当 API 网关能把分散端点转化成治理式交付时,它才能真正帮助现代化:API 有负责人、契约、访问规则、流量策略、可观测性和受控晋级路径。如果只安装网关,却不改变所有权与交付方式,就只是给原有蔓延再加一层代理。
应一次现代化一个边界清晰的 API 领域。先盘点当前路径,定义目标契约,在不改变业务语义的情况下引入网关,带回滚地迁移流量;只有客户端与运维人员都有证据证明新路径有效后,才退役旧路径。
核心要点
- 从 API 与依赖盘点开始,而不是从产品迁移开始。
- 为每个 Hostname、Route、身份规则、重试、转换与弃用决定指定一个负责人。
- 标准化少量策略层级,同时允许经过审查的例外。
- 分开 API 契约、网关配置、应用发布与数据迁移。
- 使用渐进式暴露与业务验证,而不是一次性切换。
- 衡量消费者与运维结果,而不是接入网关的 API 数量。
明确定义现代化结果
“数字化转型”过于宽泛,无法直接运维。应把它替换为可观测结果:
| 目标结果 | 网关能贡献什么 | 网关之外的边界 |
|---|---|---|
| 更快且更安全地交付 API | 可复用的 Route、身份、流量与遥测模式 | 团队设计、审查、测试与发布纪律 |
| 一致的访问控制 | 共享认证与粗粒度授权 | 应用内的对象级与工作流授权 |
| 遗留系统迁移 | 稳定的外部契约与受控路由 | 数据语义、事务与遗留行为 |
| 更好的可靠性 | 准入、有界重试、路由与失败信号 | 应用韧性与依赖容量 |
| API 发现 | 运行时 Route 与所有权证据 | 完整业务目录与生命周期决定 |
| 合作伙伴接入 | 凭据、配额、版本与分析 | 合同、权益、支持与计费 |
第一个领域只需选择两到三个可衡量结果。更多 Route 经过网关只是活动指标,并不能证明交付变好了。
先盘点当前系统,再设计目标系统
为每个外部可达 API 建立记录:
- Hostname、Path、Method、协议与客户端群体;
- 业务负责人、技术负责人、On-call 负责人和数据分类;
- 认证、授权、网络路径与直接后端暴露;
- 请求响应大小、流量峰值、延迟、超时、重试和长连接;
- 上游依赖、状态变更、幂等性与失败语义;
- 日志、指标、Trace、审计要求与留存;
- 契约格式、版本、已知消费者与弃用状态;
- 证书、DNS、Secret、防火墙规则与应急流程。
应从 DNS、Load Balancer、网关或代理配置、代码、服务目录和实际日志中发现流量,任何单一来源都不完整。没有观测到流量的 Route 可能处于休眠、只在特定季节使用,或仅供恢复使用;删除前应向负责人确认。
建立治理式交付模型
现代化需要明确的制品与决策:
1flowchart LR
2 O[API 负责人和契约] --> P[平台策略与批准模式]
3 P --> C[带版本的网关配置]
4 C --> T[Schema 策略与行为测试]
5 T --> E[环境晋级]
6 E --> R[运行时与业务证据]
7 R --> L[生命周期审查与弃用]
8 L --> OAPI 负责人定义消费者行为与业务兼容性;平台团队提供安全默认值、部署路径与例外治理;安全与合规团队定义策略结果和证据要求;应用团队继续负责领域逻辑与数据正确性。
可以建立少量策略层级,例如:
- **公共读取:**契约已验证、滥用预算明确、有缓存规则、不含私有数据;
- **已认证客户:**使用获批身份提供商,执行 Audience 与权限检查,应用做租户感知授权;
- **合作伙伴:**受管凭据、合作伙伴配额、版本与支持策略;
- **内部工作负载:**工作负载身份、受限可达性、明确的服务授权;
- **管理:**独立 Listener 或网络路径、强身份、少量 Operator、完整审计。
策略层级只是起始契约,不能成为隐藏例外的理由。每个偏差都应记录原因、负责人、到期时间、补偿控制与清除计划。
分开四个变更平面
很多现代化失败源于把彼此不同的修改绑在一起:
- **API 契约:**Path、Schema、错误、版本与客户端行为。
- **网关策略:**路由、认证、限制、转换与遥测。
- **应用实现:**代码、运行时、依赖与功能行为。
- **数据和工作流:**Schema、状态、事务与迁移。
网关可以在流量迁移到新服务时保持外部 Path 稳定,但它无法让不兼容的数据语义自动变得安全。转换适合桥接范围窄、时间有限的差异;持续增长的双向转换往往会变成没有文档的第二个应用。
每种修改都应可独立测试并有自己的回滚边界。如果数据库迁移不可逆,恢复旧网关 Route 也未必能恢复旧行为。
使用绞杀者路径迁移,并明确回滚
针对一个 API 领域:
- 固定并测试必须保持兼容的当前外部行为。
- 在 Shadow Hostname 或内部路径部署网关,不接入公共流量。
- 验证身份、路由、超时、Payload、日志与直接绕过控制。
- 回放经过脱敏的读取请求或镜像安全流量;不要盲目复制有副作用的写入。
- 迁移一个内部身份、测试租户、Region 或小比例 Cohort。
- 对比技术信号与持久业务结果。
- 只有 Guardrail 持续满足时才扩大暴露。
- 在新路径和数据状态让回滚不再必要前,保留经过测试的回滚路径。
- 有计划地删除旧 DNS、防火墙、凭据、Route 与运维流程。
Apache APISIX 3.19.0 的 traffic-split 插件可以把加权流量导向备用上游。下面的 Schema 摘录把权重 9 留在 Route 的基础遗留上游,把权重 1 发往新服务:
1{
2 "uri": "/customers/*",
3 "plugins": {
4 "traffic-split": {
5 "rules": [
6 {
7 "weighted_upstreams": [
8 {"upstream_id": "customer-platform-v2", "weight": 1},
9 {"weight": 9}
10 ]
11 }
12 ]
13 }
14 },
15 "upstream_id": "customer-legacy-v1"
16}两个 Upstream、健康检查、TLS、可观测性和回滚需要另行定义。加权轮询不会在小样本中保证精确比例,状态重置后尤其如此。如果需要确定性分配,不要让未经验证的调用方 Header 选择特权行为,而应根据可信上下文创建经过审查的 Cohort。
把网关当作产品平台,而不是工单队列
现代网关平台应提供 Paved Path:
- 契约与元数据模板;
- 带版本的身份与流量策略模块;
- 自动化的 Schema、策略、安全与失败测试;
- 使用受保护凭据的环境晋级;
- 能展示配置已接受或已拒绝的自助状态;
- 标准 Dashboard、告警与 Runbook;
- 有文档的例外与紧急变更流程;
- 未使用、无负责人或已弃用 API 的生命周期报告。
自助服务不等于不受限制的写权限。它意味着团队无需等待定制平台工作,就能安全、可审阅地修改,同时平台仍能阻止其挂载到未获授权的 Listener,或访问其他团队的 Secret 与 Route。
明确配置所有权
Apache APISIX 支持多种配置与部署模式。传统与分离部署使用基于 etcd 的控制路径;Standalone 文件驱动模式加载完整本地配置;Standalone API 驱动模式则为明确集成接收完整的内存配置。
这些并不是可以互换的更新模型。每个资源范围都应选择一个权威写入方,并记录完整替换行为。控制台、CI Pipeline、Ingress Controller 与声明式同步工具不应同时 Reconcile 同一组 Route。
管理访问需要与公共 API 访问分开保护。Admin API 是控制面接口,不是消费者端点;应限制网络可达性,使用经过审查的凭据,并审计修改。
衡量结果,防止产生新的蔓延
从四个维度跟踪结果:
消费者结果
- 集成前置时间与契约测试通过率;
- 破坏性变更与弃用完成度;
- 用户能够采取行动的认证或配额错误;
- 按消费者旅程统计的可用性与延迟。
交付结果
- 变更前置时间、变更失败率、回滚时间与策略测试覆盖;
- 拥有负责人、契约、数据分类和生命周期状态的 API 比例;
- 例外年龄与未经审查的漂移。
运维结果
- 事故发现与诊断时间;
- 未知流量或直接后端流量;
- 重复重试,以及无法解释的网关与应用结果差异;
- 配置收敛与遥测丢失。
业务结果
- 成功订单、合作伙伴激活或数字服务完成量;
- 每次成功业务操作的成本;
- 真正退役的遗留容量与运维工作。
不要只因团队创建了更多 API 或插件就给予奖励,否则只是把蔓延重新复制到集中入口之后。
常见的现代化失败模式
- **只做代理迁移:**端点迁到网关之后,但身份、所有权和生命周期仍不一致。
- **一次性切换:**路由、应用、数据与客户端修改一起上线,而且没有隔离的回滚路径。
- **中心瓶颈:**因为没有设计可复用策略与委派机制,每项修改都需要平台工单。
- **转换累积:**网关永久承载领域映射与工作流逻辑。
- **控制重复:**网关、Service Mesh、SDK 与应用各自用不同方式重试或授权。
- **指标表演:**用 Route 数量汇报成功,但消费者失败、事故负担与遗留成本仍然存在。
- **无负责人例外:**临时 Bypass 和宽权限凭据比迁移活得更久。
现代化检查清单
- 每个 API 是否有业务、技术与 On-call 负责人?
- 契约、网关、应用与数据修改能否分开?
- 每条策略是否只有一个权威负责人?
- 直接后端与管理路径是否受限并经过测试?
- 迁移是否避免重复执行写入与结果不确定?
- Canary Cohort 是否基于可信上下文并有回滚支持?
- 团队能否看到配置接受状态、运行时状态与策略原因?
- 例外是否有时限并经过审查?
- 成功指标是否覆盖消费者、交付、运维与业务退役?
- 新路径得到验证后,旧路径是否真的被删除?
常见问题
现代化应该从替换现有网关开始吗?
通常不应该。应先明确所有权、契约、失败行为与可衡量痛点。只有现有平台无法以可接受的成本与风险满足这些要求时,才有理由更换产品。
不修改应用,网关能否让遗留 API 现代化?
它可以稳定路由、认证、限制与可观测性,也可以桥接范围有限的协议或结构差异。但它无法修复错误的领域语义、不安全的事务,也无法无限期延续缺乏支持的遗留系统。
集中治理是否与团队自治冲突?
当治理变成人工审批队列时,二者确实冲突。平台可以集中管理最低控制和证据,同时通过受约束、带版本的自助服务,把安全的 Route 与生命周期修改委派给团队。
后续步骤
把本流程与 API 网关 CI/CD、OpenAPI 驱动的网关运维和面向大规模 SaaS 的 API 网关架构结合使用。
