跳至主要内容

案例研究:使用 OpenAPI 规范集成 SaaS 应用并扩展到数百个 API 提供商

作者: 2023年8月31日博客

BetterCloud 软件架构师 Donald Atha 的客座博文

当今 IT 团队面临的最大挑战之一是,过去 10 年中 SaaS 应用的爆炸式增长导致了繁琐且重复的任务的增加。公司正在使用越来越多的 SaaS 产品,这在管理员工入职和离职、管理许可证和权限以及解决服务台工单方面带来了挑战。在 BetterCloud,我们为 IT 团队提供工具,通过自动化和可配置的工作流程来减少他们工作量中的手动操作。随着 SaaS 应用数量的增长,我们的客户也依赖于我们不断增长的 SaaS 集成库。

测试 OpenAPI 生成器以实现快速集成

最近,BetterCloud 内部的创新团队(一个负责发现和测试加速创新的新功能的团队)承担了原型设计一项解决方案的挑战,该解决方案将使我们能够更快地与各种 SaaS 应用集成,并将该解决方案扩展到数百个 API 提供商。该团队在早期就达成一致,为了实现业务目标,我们需要自动化大部分流程。该团队还一致认为,这是可能的,因为添加新集成的许多方面都是相同的,并且 OpenAPI 规范将允许我们通过使用现有的社区生成器来自动化部分内容。 

为了充分理解问题,了解在 Bettercloud 添加集成以及我们产品的相关信息很有帮助。BetterCloud 的工作流程引擎通过检测何时聘用了新员工并随后授予其角色所需的各种 SaaS 应用的访问权限来自动化员工入职流程。此入职场景只是我们支持的众多用例之一。所有这些用例都必然需要从第三方提供商获取和存储数据,并更新提供商的状态。例如,在入职用例中,摄取过程会获取员工数据,检测状态变化并触发入职工作流程。此工作流程调用提供商的 API 以创建帐户或授予员工共享资源的访问权限——我们内部称之为“操作”的功能。

在开始添加新集成时,BetterCloud 会首先验证提供商是否具有支持我们用例的必要 API。此关键步骤为有效访问所需数据并评估提供商的 API 是否与我们的操作用例兼容奠定了基础。OpenAPI 规范提供了此信息的综合视图。

通过使用 OpenAPI 规范减少代码编写量

了解 API 后,下一阶段是实现摄取逻辑。此阶段涉及调用提供商的 API 以在 BetterCloud 的基础设施中获取和存储所有必要数据。该团队探索了两种协调方法,两者都利用了 OpenAPI 规范。这两种方法的意图都是减少开发人员在添加新集成时必须编写的代码量。第一种方法涉及使用OpenAPI Java 代码生成器在 Java 中生成 HTTP 客户端,而另一种方法则使用扩展来标记规范,从而启用摄取逻辑的配置。此标记的规范馈送到通用引擎,该引擎根据扩展实现逻辑。这涵盖了从 API 获取数据,但获取后,必须将其存储以服务于我们的应用程序。 

BetterCloud 利用 SQL 数据库来存储我们摄取的实体。为了创建架构,该团队使用了OpenAPI MySQL 生成器、Flyway 和 Terraform。这些工具有助于为新提供商创建和配置数据库。该团队能够稍微修改 MySQL 生成器的现有 mustache 模板,以便添加我们内部的字段,例如客户 ID。由于摄取数据模型和 MySQL 数据架构都源自 OpenAPI 规范的实体,因此此过程的自动化变得简单明了,因为数据模型是一致的。只需一个 OpenAPI 定义,我们就可以一键在所有环境中生成新的数据库及其架构!

结论 - 更好地扩展 OpenAPI 规范,创造更大的价值

我们预计这种方法将使我们能够引导添加新集成的摄取部分。通过自动化和代码生成通用元素,团队可以专注于每个新集成的独特方面。就像我们在 BetterCloud 如何为 IT 团队自动化工作流程以使他们能够扩展其工作的影响一样,OpenAPI 规范为我们提供了构建自己的自动化工具,从而扩展了我们能够为客户提供的价值。