Let’s start with defining these terms first.
Continuous Integration (CI): The practice of frequently merging all developer working copies to a shared mainline.
Continuous Delivery (CD): Aims at building, testing, and releasing software faster and more frequently by allowing for more incremental updates to applications in production. A straightforward and repeatable deployment process is important for Continuous Delivery.
…and if these definitions aren’t confusing enough, let me add the third term: Continuous Deployment. Continuous Deployment means that every change is automatically deployed to production.
So, why should you care, and my favorite answer is “Release Velocity“. Let me explain.
Remember, when you wrote your first big code (the one after “hello world” J), you compiled it and voila, you saw the results. But then your colleague said: “Did you test it?” So, you thought of various use case scenarios and created tests and ran it. But then your user said: “I want to test it myself.” By the time you got your user feedback, you already wrote 3 new features. Repeat this for 2-3 more cycles and suddenly you realize there’s a mess and it’s increasing exponentially. So you decided to have a separate development/test environment (sandboxes) and a production environment.
Now, let’s say there are 20 more developers like you in your team; you end up with 20 parallel sandboxes. So, you introduce a Version Control system and decided to have a Release Manager to manage these releases into one product release. This ‘mess’ is more common and more exasperating, since I am, of course, oversimplifying…but hopefully you get my drift.
The point is that a significant chunk of development cycle is spent on managing this code(s) vs. writing that code, and CI/CD helps you ease that pain. In fact, we, at AutoRABIT, assert that the entire release cycle can be done with just a few clicks of the button.
Let’s look at key functionalities required to achieve this:
- Version Control: prevent overwriting of each other’s code
- Sandbox Management: synchronize multiple environments
- Deployment Automation: remove manual deployment steps with ability to rollback
- Test Automation: Run functional, Integration, Regression, UAT and other tests automatically.
Once you implement CI/CD as a practice, two things happen:
1) all issues with code integration across multiple sandboxes reduce dramatically and
2) developers spend more time writing code vs. managing bugs.
The end result is a faster release cycle or a higher release velocity.
If you are still with me, I’d like to recommend two sessions at Dreamforce to help you learn more about CI/CD. The first is a Panel Discussion (Moscone West Room#2004) between CI experts, who describe the concepts of CI/CD and discuss their real life experiences on implementing CI for their Salesforce deployments. It is scheduled on Thursday, Oct 6th at 3 pm (at location name hall number). The second is a theater session where we talk about CI: Best Practices, ROI & Business Case (Moscone West, Mobile Theatre). We also bring along our customers, who have our largest subscriptions; they will describe their real life experiences as to how they achieved Salesforce Continuous Integration. It is scheduled on Friday, Oct 7th at 8:30 am (at location name hall number).
If you are thinking about starting on Salesforce Continuous Integration or are in the middle of implementing CI in your Salesforce deployment, attend the sessions and, come and meet us at our Booth#9 at Developer Forest at Dreamforce 2016.
We are very excited about CI/CD and look forward to meeting you there.