What is DevOps? And why do you need it?
DevOps consists of a set of practices and tools that makes it possible for an organization to produce applications and services more quickly than using conventional software development (Dev) and IT Operations (Ops) procedures in isolation. DevOps within Salesforce can be viewed in a very similar way. DevOps helps organizations to service their clients more effectively and hone their processes to be more agile and automated, allowing for more frequent releases.
Why do you need DevOps?
In today’s world, manual deployments have a higher risk of failure and can be difficult to execute. There are several shortcomings when attempting deployments without DevOps:
- The process is more time consuming
- Deployments can be infrequent
- There may be multiple components in single deployment, opening up room for errors
- Deployments are more complex
- User Acceptance Testing takes longer
- Feedback is delayed
Benefits of DevOps
DevOps processes in Salesforce can be made automated with the help of tools and best practices. This reduces the manual effort and offers other benefits including:
- High velocity of new releases to production
- Fewer bugs and service disruptions
- Faster restoration time
- Easy Backup possibilities
Important areas of focus for successful DevOps
1. Version control: This critical feature allows us to keep track of changes made in any component, Salesforce metadata etc. We can not only track what changes are made, but also track who made those changes and when. This is helpful in the situation where more than one team member is working on the same component. Essentially, version control is the source of truth for the team. Some of its benefits include:
- Parallel development with branching
- Manage code conflicts
- Deployment across multiple environments
- Easy to roll back procedure
- Code/Change review before committing changes
2. CI/CD: Setting up an automated CI (Continuous Integration) job on any git provider will automatically validate/deploy/test changes made in the branch to the target environment. This can save significant time, and is useful not only for deployment, but also for validating changes within a change set deployment.
3. Testing: Testing is the vital step before anything goes live in a production environment. Testing should be performed in the early stage, soon after your development cycle completes, leaving ample time to test before deployment. Types of testing that should be conducted before moving to production can include:
- Unit Testing: By Developers
- Integration Testing: By QA
- Sanity Testing: By QA
- Smoke Testing: By QA
- Interface Testing: By QA
- Regression Testing: By QA
- User Acceptance Testing (UAT): By End Users
4. Backup: Always expect the unexpected. Taking a backup acts as your insurance. This helps to control data and metadata, and covers you in the event of accidental deletion and Salesforce bugs.
5. DevOps Tools: DevOps tools have evolved immensely throughout the years and have now become easier to implement and to use. These tools can be leveraged by individual users, but can also offer major benefits to larger teams. Some of the key benefits of using tools include:
- Replacement of change set/CLI (clicks not code approach)
- Compare metadata (ORG to ORG comparison, branch to ORG comparison)
- Interactive UI/UX
- Code coverage and testing details.
- Backup and restore functionality
Challenges & Limitations of DevOps
While DevOps can be a massive benefit to companies using the Salesforce Platform, it is not without its challenges and limitations. However, being aware of the potential pitfalls is the first step to ensuring successful DevOps within your org. As you grow in your Ops process, keep an eye out for these stumbling blocks:
- Lack of knowledge: Developers not skilled in using Version Control tools and processes.
- Lack of guidance: DevOps is not a process that can be handled/operated by one person, every team member must be part of it.
- Lack of experience in Salesforce Metadata: Salesforce now has 500+ metadata types and settings, and the DevOps process is entirely reliant on Metadata.
- Planning Initial roadmap for DevOps (Environment Setup)
- Implementing best practices
- Increase complexity over the time: i.e There will be hundreds of branches on git repository and to keep them in sync is a complex task.
- Lack of governance
DevOps Resource Guide
Interested in DevOps and want to chat to one of our team members about it? Get in touch! We’d love to hear from you!