Your Complete Guide to Salesforce DevOps in 2021
As each year passes, companies that use Salesforce become even more dependent on it. A few years back, people might have just used Sales or Service Cloud, but now could be using Salesforce for Marketing, Sales, Billing, Customer Support, Analytics, and more.
It’s no secret that Salesforce has its flaws when it comes to development. The platform’s features are fantastically powerful and lend themselves to customization and small deployments. But when you are running an Org with 100s of users, a team of developers, and an increasingly complex Org, things can get messy. Enter, Salesforce DevOps.
What is Salesforce DevOps?
The term DevOps has been around since 2009 when it was first coined and is defined as the following…
DevOps is a combination of cultural philosophies, practices, and tools that aims to shorten the development life cycle and provide continuous delivery with high software quality.
You can see a basic representation of the software development life cycle below. In the wider software world, there are hundreds of tools that can help facilitate and automate processes at each different stage.
Salesforce DevOps is no different from the broader definition of the word, but it is specifically centered around ensuring Admins & Developers can deploy changes, and work through the software development lifecycle in the most effective way possible, with minimal bugs and disruption to users.
The Salesforce ecosystem has been a bit slower in the uptake of DevOps, possibly because declarative changes are so easy to make. A lot of the leading Salesforce ISVs that are focussing on this trend being founded around 2014-2016. Salesforce also announced their Developer Experience back in 2016, focussed around bringing out tools to support the software development lifecycle.
Why Do You Need Salesforce DevOps Tools?
Firstly, not everyone will need Salesforce DevOps tools. If you run a small Org, with a relatively basic implementation and a small development team, you might be happy with the native Salesforce tools available, such as change sets.
But if you have a larger team, with multiple developers working across multiple sandboxes, or possibly using complex products such as Salesforce CPQ, Salesforce DevOps tools might just become essential.
There are a few types of tools which we will cover off in the next section, but let’s take a closer look at how Salesforce change sets work to understand the need for Salesforce DevOps tools, especially when it comes to release management.
Change sets are relatively simple to use and can be created to deploy changes from one environment to another. They are manually created by adding components one by one. But they have some major drawbacks…
Change sets can take a while to create as components are added manually. Deployment errors are also common and can be time consuming to fix.
You can’t deploy all components via change sets such as standard picklist values or sales processes.
Change sets have to be recreated or cloned each time they move to a different environment (E.g. from Dev > QA > Prod)
Change sets cannot be integrated with Version Control systems to monitor changes between environments.
Change sets are just one example of where native Salesforce tools can fall down when complexity increases. If you are seeing issues or bottlenecks at any point in the Salesforce development lifecycle, then it may be time to look at some tools that can help.
Overall you can expect the following benefits from starting to integrate DevOps tools into your deployment team…
Time saved from faster, more reliable deployments
Increased release cadence from automation (CI/CD), which also leads to a tighter feedback loop
Fewer bugs/errors shipped to production thanks to testing
Better collaboration between devs & admins, partly because of the audit trail showing who changed what, when, why (version control)
Better security due to monitoring and backup
Salesforce DevOps Tools
Now we’ve covered off what Salesforce DevOps is, and the benefits it can bring. Let’s check out the tools that are influencing this current trend…
The first and most prevalent type of these tools would fall under the deployment category. If you’re looking to dip your toe into Salesforce DevOps, then implementing a deployment tool is a sure-fire way to revolutionize the way you run Salesforce deployments, as well as making them lightning fast.
Instead of using change sets, or a command-line utility such as the Ant Migration tool, most Salesforce deployment apps have a specialized user interface, packed full of features to make deploying and managing changes a breeze. Features can include…
Version Control – Integrate with your favourite hosting provider such as GitHub, to have full visibility into what was changed, why, when, and by whom.
CI/CD – Take full advantage of Continuous Integration & Delivery processes by creating an automated delivery pipeline of all your sandboxes.
Rollback – Performed a deployment that hasn’t worked as expected? Simply rollback the changes made to ensure there is minimal disruption to your users.
Testing – Ensuring unit tests are run frequently and pass code coverage is essential to smooth deployments. Deployment tools can automate this process.
Reporting – The success of any process is the ability to monitor and adjust based on the performance of the team using the tools. Most Salesforce DevOps tools provide the ability to report on deployments.
Backing up your Salesforce data should be an integral part of your Salesforce DevOps process. This includes not only your CRM data but also your metadata. This has become even more important since Salesforce announced last year that they will no longer provide data recovery services. Let’s have a look at how these tools work…
Data Backup – There are many ways to backup data in Salesforce, but using specialized Apps makes the experience a lot more manageable. Instead of trying to juggle various CSVs you’ve downloaded, Salesforce backup tools provide a user interface that allows you to restore data from any point in time.
This is important in the Salesforce DevOps world, so you’re confident that data can always be restored in case of a dodgy deployment.
Metadata Backup – Just as data backup is important to the DevOps lifecycle, so is your metadata backup. Imagine overwriting a complex Flow or Apex trigger, only to be told that there is no backup. Metadata backup makes the DevOps cycle less risky, as rollbacks are always possible.
Test Automation Tools
Unit tests and achieving 75% code coverage are a great way to ensure your deployments are safe to run, but what about performing tests to ensure the user experience and business processes perform as they should? This is where Test Automation can come into play.
Tools that operate in the test automation space can run scheduled tests, ensuring that whatever processes you have built into Salesforce, such as qualifying a lead, progressing an opportunity, or closing off a case, all work no matter what changes you are making to the system. In addition to running all unit tests in the Org to ensure Apex classes haven’t started to fail.
Check out Provar for a great overview of how Test Automation works in Salesforce.
Code Scanning Tools
We’ve already covered off three core areas in the Salesforce DevOps world, and if you nail these down, you can be sure of smoother releases. However, as any great developer will know, writing Apex code isn’t exactly straightforward. Even if you know how to write Apex, good developers will separate themselves apart by ensuring best practices and standardizations are followed to create clean, scalable code with minimal technical debt.
Code Scanning tools help teams of developers automate the manual process of reviewing Salesforce code and configuration. This ensures that all team members are following the same set of code standards, best practices, and ensuring an overall healthy-looking Salesforce Org.
While all of the Apps mentioned above are paid applications from the Salesforce Ecosystem, it’s important to also mention the free tools available from Salesforce as part of the Developer Experience. To learn more about Salesforce DX, check out this Trailhead trail that has 8 hours worth of learning to get your teeth stuck into.
Currently Salesforce DX offers a few different features in the DevOps space. While these features make DevOps easier, they don’t themselves amount to DevOps. This is why a lot of the tools mentioned in the previous section build and incorporate these features into their technology.
Salesforce Extensions for VS Code -Salesforce recently announced a robust extension for Visual Studio Code. This allows you to connect your development Orgs to an intuitive code editor.
Salesforce DX CLI – A core part of the Salesforce Developer Experience is the powerful command-line interface (CLI). The Salesforce CLI has commands for moving metadata between orgs, and creating scratch orgs..
Scratch Orgs – Scratch Orgs are temporary development and testing environments containing your source code that can quickly be created and used to test or work on changes without worrying about maintaining the development environment They are fully configurable, allowing developers to emulate different Salesforce editions with different features and preferences.
Scratch Orgs can help drive developer productivity and collaboration during the development process and facilitate automated testing and continuous integration.
For a full overview of Salesforce DX, head over to this link.