来自 Donald Atha,BetterCloud 软件架构师的客座博客文章
如今,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 规范为我们提供了构建自己的自动化的工具,这些自动化可以扩展我们为客户提供的价值。