In recent years, Salesforce DevOps has exploded in popularity. Evidence of this is the rise of multiple new players in the Salesforce DevOps space; there are new websites dedicated to Salesforce DevOps, and a brand-new set of DevOps-related roles are entering the Salesforce ecosystem.
According to a study in 2021, up to 85% of Salesforce teams were already using, or were planning to adopt, DevOps practices which means that there’s going to be a lot of demand soon for Salesforce professionals with hands-on DevOps skills. As DevOps skills don’t come naturally to most Salesforce professionals and new technologies such as Bash, NodeJS, Git, and Docker require learning, any professionals who have these skills will be well sought-after. So how can we become proficient in Salesforce DevOps? What does a study roadmap look like? Read on to find out.
Introduction: Pablo Gonzalez
My name is Pablo Gonzalez, and I’m a Salesforce Architect at Salto.io, a DevOps platform for business applications, including Salesforce. I was also a speaker at Dreamforce ’22, talking about Design Patterns for Salesforce CI/CD (a session so popular that around 50 people were left outside the room!)
My role at Salto is what would be considered part of the family of Salesforce DevOps roles – I work with the entire team at Salto to ensure our DevOps solution meets the needs of the Salesforce ecosystem. So, of course, I need to know Salesforce DevOps in and out to do my job well (and I’m always learning!).
I find this role highly fulfilling and I would like to see more people in the ecosystem have roles like this. The challenge, as described earlier, is that it’s not clear what you need to learn to have a role like this, or in what order different topics should be learned.
This roadmap is the guide I wish I had been given at the start of my DevOps journey. You should aim to go over these topics in order, and it could easily take 2-4 months to complete.
Step 1: Learn About Change Sets
It may seem weird to start by saying you need to learn change sets to learn Salesforce DevOps. After all, CI/CD is all about automating your deployments and release activities – not manually creating change sets!
However, to implement a robust DevOps process, you need to understand the limitations of change sets. Once you understand what you cannot do with change sets, you will know what you could automate in a CI/CD pipeline.
To give an example, change sets don’t allow for collaboration. As a result, a senior developer can’t review another developer’s changes and approve them before deployment. With this limitation in mind, you can ensure that your CI/CD pipeline allows for collaboration, typically via pull requests. It’s also helpful to learn what cannot be deployed by change sets to include those in your CI/CD pipeline.
In summary, learn what change sets cannot do and try to enable these processes via CI/CD.
Step 2: Learn About the Metadata API, XML, and Deployments
To automate Salesforce deployments, you need to use the Metadata API. A few years ago, deployments were automated using the force.com migration tool. Today we use SFDX.
In either case, both of them use the Metadata API behind the scenes. Therefore, to become a proficient DevOps engineer, you need to understand this API well.
I would even suggest you learn how to use the old force.com migration tool because some of its concepts are still relevant in the SFDX world. Play around with the API to retrieve metadata from your org. For example, figure out what a page layout looks like in XML format. How about an Apex class or a flow? All this knowledge will serve you well down the line.
Step 3: Learn About Sandboxes and Different Strategies to Organize Them
Your sandboxes play a vital role in your DevOps strategy. You should know all the different Sandbox types and when to use each.
Later in your DevOps journey, you’ll have to choose which sandboxes to deploy to, and at what stage of the release pipeline. You cannot do this if you don’t have a solid grasp of the different types of Sandboxes. To get up to scratch, check out the Sandbox Management Best Practices.
Step 4: Learn the Basics of Bash Programming
Both the old force.com migration tool and the modern SFDX CLI are executed on a terminal, also known as a command line. This means they can be scripted and combined with other scripts you may need (such as data loading, etc.).
These scripts are typically run on a Bash terminal (PowerShell if you are on Windows), so it is extremely useful to know how to create a basic Bash script.
For example, one of my CI/CD pipelines executes a JavaScript file to extract data from a pull request. This JavaScript file is only executed if it exists. In other words, what if the developer forgot to add this file to the repository? The entire CI/CD pipeline would fail.
Instead, I call the javascript file dynamically, based on whether it exists. To do this, I needed to use a bit of bash scripting to check if the file existed.
You can take this knowledge to another level and create an entire piece of automation with bash. Here’s an example of a mega Bash script that identifies which files have changed between git commits.
Step 5: Learn SFDX
At this point, you should focus on how to work with Salesforce metadata using the SFDX CLI. In particular, you should learn the following:
- How to authenticate to an org
- How to retrieve metadata to your local file system
- How to deploy metadata from VSCode
This is because later in our journey, we’ll use the SFDX CLI to automate our CI/CD pipeline deployments.
Step 6: Learn Git
So finally, we can learn Git. I think Git is one of the last things you should learn because what you’ll be doing with it is relatively simple, mostly using 3 or 4 commands. In the context of Salesforce DevOps, git will be used to commit changes to a remote repository and create different development branches.
Git is huge, but you don’t need to learn everything about it. I recommend you focus on learning these commands well:
- Git Add
- Git Commit
- Git Log
- Git Push
You can learn these commands through the Git and GitHub Basics module on Trailhead.
Step 7: Learn About Git Branching Strategies
Here’s where things get a little bit more complicated. To effectively use Git, you need to leverage branching strategies. After all, you can’t leverage branching strategies if you don’t know how branches work!
So, the first step is to learn as much as you can about branches in Git. I highly recommend this tutorial.
Once you understand how Git branches work, the next step is to learn about different patterns or strategies for organizing your Git branches. This is really important, so make sure you don’t skip it!
Step 8: Learn About Continuous Integration and Trunk-Based Development
The CI in CI/CD stands for Continuous Integration. CI is a software development methodology where developers commit changes as frequently as possible to a Git branch. Unit tests are run every time they commit a change to provide feedback on whether their changes broke the application.
Trunk-based development, on the other hand, is a Git branching strategy. However, some would say that Trunk-Based Development is a manifestation of CI. For example, there’s a famous quote that says:
“Individuals practice Trunk-Based Development, and teams practice CI.”
So, it’ll do you well to learn the basics of trunk-based development around the same time you learn about CI. It’ll help you make sense of things.
Step 9: Learn About Continuous Delivery
The CD in CI/CD stands for Continuous Delivery. Continuous Delivery is the ability to get changes of all types into production safely and quickly, in a sustainable way. The goal is to make deployments predictable by ensuring our SFDX projects are always in a deployable state.
Step 10: Practice Setting Up an Entire CI/CD Platform
At this point, you have the foundation on both the theoretical and technical aspects of CI/CD. The following step is solidifying that knowledge by getting your hands dirty and experiencing what it is like to create an entire CI/CD pipeline from scratch.
I wrote an end-to-end guide with all the steps needed to create your own CI/CD pipeline using GitHub actions. Go check it out and make sure you go through all the steps.
Step 11: Get Hired!
The final step is to prove your knowledge to the world. Go and implement CI/CD for your company, or use this knowledge to do some homework on what DevOps tool to buy (Salto, Copado, Autorabit, etc.), if you choose to go that route.
In my case, this knowledge landed me a job with a Salesforce DevOps vendor, and I think with the growth this field has experienced in the last few years, you too should be able to find a similar position.
Summary
To learn Salesforce DevOps, you first need to have a really good understanding of Salesforce’s core deployment capabilities (change sets, SFDX, etc.). When we understand capabilities, we can start learning a little more about automation with Bash, so that we can automate some or every aspect of our deployments.
We also need to learn about the history of CI/CD, what the terms actually mean, where they come from, and how they apply to the Salesforce ecosystem.
We finish up by taking all this knowledge and implementing a fully functional CI/CD pipeline in a dev org. This should solidify all that knowledge and make it stick.
Good luck on your DevOps journey!
Resources
- Change Sets Trailmix
- Metadata API
- Force.com Migration Tool
- Architect Journey: Development Lifecycle and Deployment
- Sandbox Management Best Practices
- Bash Scripting Cheat Sheet
- Command Line Interface Trailhead Module
- Quick Start: SFDX
- SFDX Cheat Sheet
- Git and GitHub Basics Trailhead Module
- 5 Minute Overview: Trunk-Based Development
- Continuous Delivery