构建自动化SDK流水线的经验教训

💡 原文英文,约3000词,阅读约需11分钟。
📝

内容提要

Cloudflare现在提供Typescript、Go和Python的软件开发工具包(SDK)。这些SDK使用OpenAPI生成,旨在在不同的编程语言中提供一致且高质量的体验。使用OpenAPI可以实现快速反馈循环、清晰的约定和对新功能的统一支持。Cloudflare选择使用Stainless生成引擎构建SDK,并发现它是一个可靠的解决方案。过渡到OpenAPI和使用SDK极大地提高了Cloudflare的开发过程的效率和质量。

🔎

延伸解读

从手动维护到自动生成:效率提升的关键

Cloudflare 的 SDK 曾依赖人工维护,导致更新频率和质量不均衡,甚至需要协调多个拉取请求。过渡到 OpenAPI 生成后,大部分更改只需一个拉取请求,且能自动生成 TypeScript、Go 和 Python 三个语言的 SDK。这种自动化不仅减少了人为错误,还让团队能专注于编写高质量的 API 模式,而非维护生成逻辑。

一致性优先:设计原则与工具支持

Cloudflare 强调 SDK 应隐藏底层生成语言,提供符合语言习惯的接口,并确保不同语言中命名空间和方法的一致性。为此,他们使用 Lint 规则(如 Redocly 插件)在 CI 中强制 API 设计规范,例如要求 API Token 认证方案优先,以及描述格式统一。这些措施降低了端点质量差异,提升了开发者体验。

大规模重构与迁移:Codemods 和 Grit 的应用

面对约 1300 个公开端点,Cloudflare 使用 Codemods(如 comby)进行大规模代码重构,统一路径参数和命名。对于客户 SDK 迁移,他们采用 Grit 工具,提供简单的 CLI 命令(如 grit apply cloudflare_go_v2),使迁移过程更易用。这些工具帮助团队和用户高效适应 API 变更。

经验教训:谨慎使用 $ref 与设计先行

Cloudflare 建议避免过度使用 $ref,因为它可能导致模式难以更改和隐藏错误,例如 created_at 错误引用 updated_at 的描述。他们推荐仅在 oneOf、allOf 等场景使用 $ref,并遵循 YAGNI 原则。此外,在设计 SDK 前应编写语言设计文档,优先考虑用户体验而非技术挑战,从而提前识别语言差异问题。

❓

Q&A

Cloudflare提供哪些编程语言的软件开发工具包(SDK)?

Cloudflare提供Typescript、Go和Python的软件开发工具包(SDK)。

使用OpenAPI生成SDK有什么好处?

使用OpenAPI生成SDK可以实现快速反馈循环、清晰的约定和对新功能的统一支持,减少手动维护的错误和复杂性。

Cloudflare是如何提高SDK的开发效率和质量的?

Cloudflare通过过渡到OpenAPI和使用Stainless生成引擎,减少了手动维护的复杂性,提高了开发效率和质量。

在设计SDK时,Cloudflare强调了哪些指导原则?

Cloudflare强调的指导原则包括SDK不应受底层语言影响,确保一致性和用户体验优先。

Cloudflare如何确保API设计的一致性和质量?

Cloudflare使用Lint规则和CI机制来确保API设计的一致性和质量,及时发现并修复问题。

Cloudflare未来有什么计划与SDK相关的改进?

Cloudflare计划在2024年推出更多SDK和改进,并欢迎用户反馈以确定下一个支持的语言。

🏷️

标签

➡️

继续阅读