How To Build a Salesforce Devops Platform
Why is everybody interested in Salesforce devops? It is because Salesforce app production is painfully slow, and it desperately needs some cloud native magic to address a monumental application backlog. That is why there is tremendous sales activity at the top 5 Salesforce devops platform companies.
To help understand this trend I recap why we need Salesforce devops platforms. I then break down how the top 5 vendors build their solutions. My goal is to inform architects about how Salesforce devops works so they may speed up their own development pipelines with some choice bits of Salesforce devops goodness.
Why is Salesforce Devops So Hard?
The top 5 Salesforce devops vendors are popular because automating continuous deployment on Salesforce must overcome several barriers not found in cloud native computing. It turns out that doing release management and continuous deployment in Salesforce is much more difficult than in cloud native environments. Here is a quick summary of problems a Salesforce devops platform addresses.
Salesforce is a live system, and it gets changed by its users. This makes using a GIT repository as a source of truth in Salesforce deployments doable, but quite tricky. In the cloud native world, worrying about metadata usually does not occur. Instead of allowing for dynamic metadata changes, most cloud native apps use a process called “migration” to apply such changes as separate releases.
Many Concerns are Not Addressed
Salesforce devops platforms are popular because the devops platforms let Salesforce platform owners address application development concerns that are otherwise easily handled in cloud native devops.
Capitalizing on this opportunity, the top 5 Salesforce devops vendors put a management layer around Salesforce that lets their customers manage the platform better. Most vendors have integrated with SFDX-CLI and created that key touchpoint between the Salesforce platform and cloud native computing. That is why the emergence of the devops platform vendors makes sense for the Salesforce ecosystem and has created ways to integrate more cloud native technologies into Salesforce pipelines.
What is a Salesforce Devops Platform?
I define a Salesforce devops platform as an online service that performs release management and integrates the layers in the SalesforceDevops.net industry map. For more information, please check out the products in the Salesforce Devops Map or this post for a full explanation of all the layers.
Building a Salesforce devops platform is complex not just because of all major activities that need integration. The final architecture depends on stakeholder requirements, Salesforce org history, developer resources, and governance factors, all of which are dynamic forces. That is why Salesforce devops innovation has focused on governance and management in recent years.
Devops Command Server
Most Salesforce devops activity centers around a command server. The command server is a program that manages system activities during Salesforce release management. Using a command server to automate the release management cycle is a real benefit that decreases Salesforce deployment times.
A Salesforce devops command server runs either on Salesforce, on-premises, or as a cloud native application. For example, both Copado and Flosum run their platform on top of Salesforce, while AutoRABIT, Blue Canvas, and Gearset all have their own cloud native apps.
The top 5 platforms also allow for integration of private command servers into how the platforms manage Salesforce releases. In this diagram I show some Salesforce architects create their own command server by running it on private enterprise resources. This is where the enterprise often uses Azure DevOps or Jenkins to set up a private devops command server.
Each enterprise IT environment is unique, and this illustration shows all the enterprise devops services deployed on-premises. Other implementations may spread those services around to Salesforce, public clouds, and public devops clouds.
Salesforce Devops Platform Components
Here are the major system components that require integration for a complete Salesforce devops platform implementation. For more information check out this earlier post, Salesforce SDLC Nomenclature: Adopting the Ways of The Devops.
- Developer Work Environment
- Individual Mac or Windows workstations running VS Code Remote. See this article for more information on VS Code Remote.
- VS Code Remote servers in the local segment
- Script runner servers available via SSH
- Enterprise Devops Services
- Metadata scanner and repository
- Source code and deployment artifact repositories
- Cybersecurity scanners and development tools
- Testing tools
- Command server
- Observability and monitoring services
- Enterprise Data Services
- Virtual machines
- Kubernetes clusters
- API Gateways
- Cloud Services
- Salesforce platform
- Other SaaS platforms
- Apps on AWS, GCP or Azure
- Devops platforms and services
Implications for Salesforce Devops Architects
Using cloud native computing to enhance Salesforce development is a process well underway. The top 5 Salesforce devops vendors have overcome key hurdles and deployed devops platforms that now address many concerns in Salesforce application development.
By showing how these applications are built from a system integration perspective, hopefully I have illuminated the subject of how these applications work and how they may be integrated with other devops resources.