Complete Guide to Salesforce DevOps in 2023
DevOps has been one of the most exciting trends in the Salesforce ecosystem in recent memory. The rise in different tools and a change in mindset is evolving how Salesforce professionals look to deploy changes from one environment to another.
As the Salesforce ecosystem grows and companies become even more dependent on the system, it requires a more disciplined approach to deploying changes, above and beyond what change sets can offer. Enter Salesforce DevOps!
What Is Salesforce DevOps?
The term DevOps has been around since 2009 when it was first coined. It is defined as follows:
“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 and developers can deploy changes, and work through the software development lifecycle in the most effective way possible – with minimal bugs and disruption to users.
However, the Salesforce ecosystem has been much slower in the uptake of DevOps best practices, with a lot of AppExchange companies leading the movement being founded in 2014-2016. This is mostly due to the fact that the original DevOps movement focused on more traditional coding, whilst Salesforce is a platform-based ecosystem that has a lot of declarative (clicks, not code) tools.
Why Do You Need Salesforce DevOps Tools?
Salesforce DevOps tools come in a variety of shapes and sizes, assisting your development lifecycle with deployment support, backing up data and metadata, test automation, and code scanning tools to reveal security issues or bugs.
But at a high level, these tools will save you time due to more reliable deployments, fewer bugs shipped to production, and better collaboration between teams of admins and developers.
If you run a relatively small Salesforce org, you might not notice some of the pain points that DevOps tools set out to solve. If you have an internal Salesforce development team of multiple people, or a large org using a lot of custom development, it’s a totally different story. You have probably experienced your changes being overwritten by others and a lot of hassle deploying changes from a developer sandbox, all the way to production, only to find that the features now don’t work.
Classically, the only way for admins and developers to move changes declaratively between environments is using change sets. Whilst change sets are relatively simple to use, they have to be manually created, and have a few 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 developers and admins, partly because of the audit trail showing who changed what, when, and why (version control).
- Better security due to monitoring and backup.
Salesforce DevOps Center
For the past couple of years, there has been a lot of buzz around the Salesforce DevOps Center: a free deployment tool developed internally by Salesforce that is finally generally available!
Prior to DevOps Center, the only comparable, comprehensive tools available were those developed by third parties on the AppExchange, which came with a cost.
At its heart, the DevOps Center is a tool to help teams release technology faster. It allows you to move changes between Salesforce development environments using features such as visual development pipelines, source control using GitHub, and automatic change tracking for your environments.
The DevOps Center is an overdue replacement for Salesforce Change Sets – the standard, declarative way to move changes between Salesforce environments.
Whilst change sets can get the job done, they do not allow for Salesforce development teams to follow modern DevOps best practices, using tools, or practices such as Continuous Integration/Continuous Development (CI/CD).
Out of the box, the DevOps Center has the following functionality:
Work Items: A new object to track the changes you are making. Work items will include the metadata items that are pushing through environments.
Automated Change Tracking: As development teams make changes in their sandboxes, DevOps Center will automatically track the changes, meaning you have total transparency into which items need promoting through environments.
Pipelines: Prior to DevOps Center, Salesforce did not provide a way to define the pipeline of development environments. Now teams can create customized pipelines with their desired method of promoting changes.
Source Control: Teams using DevOps Center can now integrate with GitHub source control, with full visibility of who changed what (and when).
Deploy Changes: Once you’re satisfied with changes, DevOps Center provides an easy way to view your entire development pipeline and bundle, and migrate changes from one stage to another – all using clicks, not code.
The Salesforce DevOps Center can be accessed through your Setup menu in Salesforce by simply typing “DevOps Center” into the setup search bar.
Salesforce DevOps Tools
Whilst the Salesforce DevOps Center is a fantastic free tool to get started on your DevOps journey, the first iteration was only made available in December 2022. This does mean that third-party tools that have been around for nearly ten years are far more advanced.
In addition, the DevOps Center can be seen as a ‘deployment’ tool, and there are many other categories of apps available to support your software development life cycle.
Let’s take a look…
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 favorite 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 roll back 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.
Tools to check out in this space include Gearset, Copado, Prodly, Flosum, Autorabit, and Blue Canvas.
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 back up 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.
Tools to check out in this space include Spanning Backup, Gearset, and OwnBackup
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 or Copado Robotic Testing to see how Test Automation works in Salesforce.
Code Scanning Tools
We’ve already covered 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.
Check out CodeScan, Clayton, Quality Clouds, and DigitSec as examples of these tools…
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 eight 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.
DevOps Centre: An eagerly awaited feature that Salesforce has been teasing us with for a while. The DevOps Center will allow admins and developers to properly track changes between orgs, and finally allow us to use Version Control when deploying changes between environments.
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.
I hope this article has provided you with an overview of the Salesforce DevOps landscape, and the types of tools and companies that are leading the charge.
Salesforce DevOps is a trend that has been bubbling up for a while, but is now accelerating into the mainstream. It might just be a matter of time before your Salesforce deployment is using one of the tools listed, so it’s always good to read as much as you can to educate yourself on this space.
Anything to add? A cool app we haven’t listed? Let us know in the comments!
This was a great read for me to understand what is DevOps and how to implement it .
Thank you .
Thank you for reading!
Great content. Thankyou.
It has very good content and helpful to every DevOps learner…thank you.
Explanation was very smooth and easy to understand. Thanks once again.
I just started this topic, went through this topic at first and it helped to understand its concept in full. Now, I believe I can work on it with the help of links provided in the content and offcource trailhead trails.
Thanks a lot
Doğal Ürün Etiket Tasarımı
The article is really high quality, thanks for the content.
Very well written and organized paper. The different products that can support different part of DevOps and Salesforce Extensions explanation are very helpful. Thank you
azure devops and salesforce
This is nice and smooth article thanks.
Another Code Scanning Tool: SFDA (Salesforce Code Analyzer)
Salesforce Code Analyzer has released version 3 which has came up with inbuilt PDM and Es Lint engines.
Which comes as a VS Code extension and can provide results in CSV Format.