Airbnb强大的持续交付框架:CRM

集成 Salesforce DX、GIT、BUILDKITE 和 Vlocity 的 CRM CI/CD 框架,以实现增强、高效和持续的交付以及高软件质量。

CRM 平台提供了一套强大的功能,用于构建可扩展的应用程序,同时最大限度地减少对复杂编码的依赖。然而,在这个生态系统中管理和部署代码和配置可能具有挑战性,而且平台不断发展的性质带来了额外的复杂性。这可能会导致部署时间缓慢、难以平衡代码和配置(例如 Apex 类和触发器与验证规则、页面布局)以及管理多个环境等问题。

为了应对这些挑战,在 Airbnb,我们开发了专门针对 CRM 平台定制的弹性 DevOps 框架。该框架为开发人员、系统管理员以及构建仪表板的业务分析师等低代码用户自动执行将代码和配置转移到生产环境的过程。

问题
CRM 平台是一个多功能的生态系统,具有强大的功能,但管理其中的代码和配置可能具有挑战性。由于元数据复杂且环境多样,高效部署变更非常困难。此外,平台不断发展的性质需要采取积极主动的方法。

  • 部署时间:部署更改可能是一个耗时的过程,尤其是对于大量应用程序。这可能会影响交付速度,从而引起开发人员和利益相关者的不满。
  • 平衡代码和配置:CRM 平台允许通过编程代码(使用 Apex、Visualforce 和 Lightning Web Components)和低代码开发方法(使用 App Builder 和 Flow Builder 等工具)来开发应用程序。然而,有效管理基于代码和配置的开发组合提出了巨大的挑战。
  • 管理多个环境:CRM 开发人员通常会在单独的环境(沙箱或临时组织)中构建和测试其代码,然后再将其迁移到更高级别的环境。然而,跨不同团队管理多个环境可能会变得越来越复杂和耗时。
  • 文件元数据的复杂性:CRM 是一个复杂的平台,具有不同类型的元数据(包括但不限于 Apex 类、触发器、Lightning 组件、流程),需要在开发和部署过程中进行细致的管理。
  • 跟上变化:作为一个基于云的平台,CRM 经常发生变化,新功能和更新会定期发布。跟上这些变化并确保它们与现有应用程序的无中断集成可能是一项重大挑战。

解决方案
在 Airbnb,我们开发了专门针对 CRM 平台定制的弹性 DevOps 框架,集成了 Salesforce DX、Git 和 Buildkite。我们的方法有助于将所有利益相关者(包括开发人员、系统管理员和低代码用户)纳入开发和部署过程,从而针对所有涉及的角色优化 DevOps 解决方案。
CRM DevOps 生命周期包括以下有效部署代码所必需的关键环境:

  • 开发人员 (DEV) — 开发人员利用 DEV 环境来构建和完善代码。
  • 集成 (SIT) — SIT 确保与其他系统的无缝集成。
  • 质量保证 (QA) — QA 验证软件的功能。
  • 完整副本(分期)—分期为培训和用户接受度提供了现实的设置。
  • 预发布 - 预发布在代码上线之前充当受控托管平台。
  • 修补程序 — 修补程序可以快速解决紧急生产问题。
  • Prod — 包含所有实时流量和数据的生产实例。

每个环境都与 Git 版本控制系统中的相应分支相关联,并通过 Buildkite DevOps 管道无缝连接。成功通过开发人员的同行评审流程后,将触发 Buildkite 作业,利用 Salesforce DX 将代码部署到目标沙箱中。

DevOps 之旅
DevOps 之旅从集成 (SIT) 环境中刷新 CRM 中的各个开发人员实例以导入其他开发人员所做的更改开始。接下来,从集成分支在 Git 中创建一个功能分支,以促进各个环境中的开发和单元测试。开发人员可以在自己的开发环境中高效工作,同时确保全面的无缝集成和协作。
一旦实现了新功能,开发阶段就完成了。代码在进入 SIT 环境之前要经过一系列严格的质量保证程序。采用的程序之一是静态代码分析,它确保遵守编码标准和最佳实践。此外,拉取请求需要经过广泛的审查和批准程序,以保持代码质量。在升级之前,代码最终会部署到SIT环境中进行集成测试,验证系统集成。

成功测试后,更改将提升到 QA 环境以进行功能和回归测试,其中包括使用 Provar 的自动化测试。QA 环境用于在集成系统之间端到端地测试功能。自动化测试脚本在此环境中运行,以确保产品无错误。代码审查确保高编码标准到位,而质量保证和自动化测试则确保解决方案运行良好。

DevOps 旅程的下一步是过渡环境,在其中进行用户验收测试和性能测试。PTPaaS沙箱用于性能和负载测试,这是专门为性能测试设计的试点产品。该沙箱连接到登台分支,以确保性能测试的无缝执行。随着验证的最后步骤完成,源自某人功能分支的更改现在可以升级到生产并由每个人使用。

与正常的功能开发相比,我们需要能够推动紧急修复。此流程采用不同的路线。修复源自专门用于修补程序的环境,该环境是产品的副本(称为修补程序)。修复程序在修补程序环境中进行,由 QA 进行测试和验证,然后通过暂存推送到 Prod。修补程序绕过 SIT 环境。一旦升级到生产环境,修复程序就会反向传播到链中最低的开发人员沙箱。

CRM 部署的最重大挑战之一是部署时间延长,在部署窗口期间,我们的 DevOps 自动化从 Buildkite 执行快速部署,这有助于尽早检测构建或测试运行的问题,并显着减少实际部署时间。为了进一步减少部署时间,我们实施了增量部署,它仅部署代码库之间的差异,而不是整个代码库。先前的提交 ID 存储在目标组织中的自定义设置中,Buildkite 在部署期间检索它以仅提交哈希集。

  • 使用快速部署将部署时间从平均 90 分钟减少到 15 分钟
  • 启用增量部署而不是完整包。
  • 配置和元数据版本控制。
  • 存储库中内置静态代码分析。
  • 回滚机制。
  • 集成测试挂钩。

我们的 DevOps 实施成功地在 CRM 平台上实现了高效、持续的高质量软件交付。这是通过无缝集成 Salesforce DX、Git 和 Buildkite 实现的,从而建立了一个针对所有角色(包括开发人员、管理员和低代码用户)进行优化的 DevOps 框架。结果,我们见证了部署时间的显着减少和软件质量的显着提高,最终为我们的客户带来了更大的价值。