April 15, 2024
Sharda Kumari
The Airbnb Tech Blog

How we championed the CRM CI/CD framework integrating Salesforce DX, GIT, BUILDKITE and Vlocity for an enhanced, environment friendly and steady supply with excessive software program high quality.

By: Sharda Kumari Pramod Gavade

The CRM platform provides a sturdy suite of functionalities for constructing scalable purposes with minimal reliance on complicated coding. Nonetheless, managing and deploying code and configurations inside this ecosystem may be difficult, and the continuously evolving nature of the platform presents an additional layer of complexity. This will result in gradual deployment occasions, problem in balancing code and configuration (e.g. Apex courses and triggers vs. validation guidelines, web page layouts), and managing a number of environments, amongst different points.

To deal with these challenges, at Airbnb we now have developed a resilient DevOps framework particularly tailor-made to the CRM platform. The framework automates the method of transferring code and configuration into manufacturing for builders, system directors along with low-code customers comparable to enterprise analysts constructing dashboards.

The Challenges

The CRM Platform is a flexible ecosystem with highly effective functionalities, however managing code and configurations inside it may be difficult. With complicated metadata and a number of environments, deploying modifications effectively is troublesome. Moreover, the evolving nature of the platform requires a proactive strategy.

Deployment occasions: Deploying modifications could be a time-consuming course of, particularly for in depth purposes. This will influence the pace of supply inflicting dissatisfaction amongst builders and stakeholders alike.

Balancing code and configuration: The CRM platform permits the event of purposes by way of each programmatic code (utilizing Apex, Visualforce and Lightning Net Elements) and low-code improvement methodologies (utilizing instruments like App Builder and Movement Builder). Nonetheless, successfully managing a mix of code and configuration primarily based improvement poses a formidable problem.

Managing a number of environments: CRM builders usually have interaction in particular person environments (sandbox or scratch orgs) to construct and check their code previous to transferring it to higher-level environments. Nonetheless, administering a number of environments throughout completely different groups can grow to be more and more intricate and time-consuming.

Complexity of file metadata: CRM is an intricate platform with several types of metadata (together with, however not restricted to, Apex courses, triggers, Lightning parts, flows) that necessitate meticulous administration through the improvement and deployment course of.

Maintaining with modifications: As a cloud-based platform, CRM undergoes frequent modifications, with new options and updates being launched repeatedly. Maintaining with these modifications and guaranteeing their non-disruptive integration with present purposes could be a vital problem.

The Resolution

At Airbnb, we now have developed a resilient DevOps framework tailor-made particularly to the CRM platform that integrates Salesforce DX, Git, and Buildkite. Our strategy facilitates the inclusion of all stakeholders, together with builders to system directors and low-code customers, into the event and deployment course of, thereby optimizing the DevOps resolution for all personas concerned.

The CRM DevOps lifecycle contains the next crucial environments which might be vital for the efficient deployment of code:

  • Developer(DEV) — The Builders make the most of the DEV surroundings to construct and refine the code.
  • Integration(SIT) — SIT ensures seamless integration with different programs.
  • High quality Assurance(QA) — QA verifies the software program’s performance.
  • Full copy(STAGING) — Staging offers a practical setting for coaching and person acceptance.
  • Pre-release — Pre-release serves as a managed internet hosting platform earlier than the code goes stay.
  • Hotfix — Hotfix allows swift decision of pressing manufacturing points.
  • Prod — Manufacturing occasion that homes all stay site visitors and knowledge.

Every of those environments is related to a corresponding department within the Git model management system and is seamlessly related by way of a Buildkite DevOps pipeline. After efficiently passing by the peer evaluation course of by builders, Buildkite jobs are triggered which make the most of Salesforce DX to deploy the code into the goal sandbox.

The DevOps journey kicks off with the refreshing of particular person developer situations inside the CRM from the mixing (SIT) surroundings to import modifications made by different builders. Following this, a characteristic department is created in Git from the mixing department, facilitating improvement and unit testing in particular person environments. Builders can work effectively in their very own improvement environments whereas guaranteeing seamless integration and collaboration throughout the board.

As soon as new performance has been applied, the event section is full. Code undergoes a sequence of rigorous high quality assurance procedures earlier than transferring on to the SIT surroundings. One of many procedures employed is static code evaluation, which ensures adherence to coding requirements and finest practices. Moreover, pull requests are subjected to in depth evaluation and approval procedures to take care of code high quality. Earlier than being promoted, the code is lastly deployed to the SIT surroundings for integration testing, the place system integrations are validated.

After profitable testing, modifications are promoted to the QA surroundings for useful and regression testing, which incorporates automation testing utilizing Provar. QA surroundings is used for testing a characteristic finish to finish between the integrating programs. Automation testing scripts are run on this surroundings to make sure a bug free product. Whereas code evaluations ensure excessive coding requirements are in place, QA and Automation testing ensures a nicely functioning resolution.

The subsequent step within the DevOps journey is the staging surroundings, the place person acceptance testing and efficiency testing happen. PTPaaS sandbox is used for efficiency and cargo testing, which is a pilot providing particularly designed for efficiency testing. This sandbox is related to the staging department to make sure seamless execution of efficiency testing. With the ultimate steps of validation full, modifications that originated as modifications in somebody’s characteristic department can now be promoted to manufacturing and utilized by everybody.

In distinction to regular characteristic improvement, we’d like to have the ability to push pressing fixes. This circulation takes a special route. Fixes originates in an surroundings devoted for Hotfixes which is a duplicate of Prod (referred to as Hotfix). A repair is labored on within the hotfix surroundings, examined and validated by QA after which pushed to Prod by way of Staging. Hotfixes circumvent the SIT surroundings. As soon as promoted to manufacturing, fixes are then again propagated to the bottom developer sandbox within the chain.

A Launch time block (Deployment window) is set for the code push and is agreed upon by all stakeholders for the code push. Having a devoted time for deployment helps with setting expectations with the tip customers on the brand new options being launched. Probably the most vital challenges of CRM deployments is extended deployment occasions, which is additional compounded with sizable implementations and longer check executions. Modifications can generally take upto 90 min to be deployed. To bypass this problem, our framework takes a proactive strategy by performing a construct validation towards the Manufacturing surroundings. This validation checks all check class executions and metadata validation prematurely, usually greater than 24 hours earlier than the deployment window, and allows Fast Deploy within the goal Org. Throughout the deployment window, our DevOps automation executes a fast deploy from Buildkite, which helps to detect points with the construct or check runs early on and considerably reduces the precise deployment time. To additional decrease deployment occasions, we now have applied Incremental Deploys, which deploy solely the variations between codebases as an alternative of the complete codebase. The earlier commit ID is saved in a customized setting within the goal org, and Buildkite retrieves it throughout deployment to commit solely the hash set.

The Wins

  • Utilizing Fast Deploy lowered the deployment time from a mean of 90 minutes to fifteen minutes
  • Enabled delta deploys as an alternative of full bundle.
  • Config and Metadata versioning.
  • In-built static code evaluation within the repository.
  • Rollback mechanism.
  • Integration check hooks.

Our DevOps implementation has efficiently enabled environment friendly, steady supply of high-quality software program on the CRM platform. This was achieved by seamlessly integrating Salesforce DX, Git, and Buildkite, thereby establishing a DevOps framework that’s optimized for all personas, together with builders, admins, and low-code customers. In consequence, we now have witnessed a outstanding lower in deployment time and a noteworthy enchancment in software program high quality, in the end resulting in the supply of higher worth to our purchasers.

If such a work pursuits you, take a look at a few of our related positions.

Particular point out to Yiming Yan, Sameer Miraj, Vasu Rampally,Srinath Therampattil, Leah Kennedy and the complete group for serving to onboard onto this framework. Particular because of Sudheer Peddineni for the steerage.