How to make CI, CT and CD work together and avoid the drama of a DevOps love triangle
Source – itproportal.com
It’s no secret that organisations across the world are working hard to seize the competitive advantage that comes from digital disruption. The savviest firms are now knee deep in Agile and Digital Transformation strategies, which focus firmly on offering services at hyper velocity and availability on any device – whilst maintaining high quality.
Agile processes are crucial to success in this high speed digital world. And to support this must be a strong DevOps team that has responsibility for the whole development process. Indeed, the days of a clear distinction between Dev and Ops are over. This set-up; “build the product” (Dev) and “maintain the product” (Ops) creates a “them and us” attitude where ideas aren’t shared and collaboration is (albeit subconsciously) discouraged.
Instead these barriers need to be broken down and the two functions work seamlessly together. With shared objectives and shared tools, and a sense of autonomy, DevOps teas can thrive and deliver better services, more quickly.
But, when selecting a Digital Transformation strategy, these newly formed DevOps teams must look at the methods they use to adopt an Agile strategy. Continuous Integration (CI), Continuous Delivery (CD) and Continuous Testing (CT) are the top three methods – and while each serves a slightly different objective, when combined they can significantly help achieve velocity and quality; two of the most important goals of any development team.
Introducing the Agile methods
Before considering how these practices can work together, we should address some confusion still in the market – and take a quick look at what each of these methods really means.
Method #1: Continuous Integration
Continuous Integration (CI) is the process of automating the build and testing of code every time someone commits changes to version control. Many think this is the most critical component to making an effectively agile development team.
CI puts a great emphasis on testing automation to check that the application is not broken whenever new commits are integrated into the main branch. Developers can share their code and unit tests by merging their changes into a shared version control repository after every small task completion. Committing code triggers an automated build system to grab the latest code from the shared repository and to build, test and validate the full master branch. Simply, it ensures bugs are caught earlier in the development cycle, which makes them less expensive to fix – and maintains a consistent quality.
Method #2: Continuous Delivery
Continuous Delivery (CD) is the practice is the practice of streamlining and automating all the processes leading up to deployment. There are a number of steps in CD, such as validating the quality of the build in the previous environment. When done manually these steps can take significant effort and time. However, using cloud technologies and proper orchestration, they can be automated.
Teams should ensure they have a monitoring dashboard for your production environment in place in order to eliminate performance bottlenecks and respond fast to issues. This will complete an efficient CD process.
Method #3: Continuous Testing
Continuous Testing (CT), which can also be referred to as Continuous Quality, is the practice of embedding and automating test activities into every “commit”. CT helps developers use their time more efficiently when trying to fix a bug for code that was written years ago. To fix the bug, developers should first remind themselves of which code it was, undo any code that was written on top of the original code, and then re-test the new code; not a short process. Testing that takes place every commit, every few hours, nightly and weekly, not only increases confidence in the application quality, it also drives team efficiency.
Working together and how to do it well
These three processes are often viewed as distinctly separate identities, fighting for the top spot in the DevOps pipeline. However, CT, CI and CD are better together.
CT, CI and CD are important to the success of one another throughout the delivery cycle, and it’s only by incorporating the CI/CD/CT trifecta that teams will be able to achieve the velocity and quality needed for success in today’s rapidly transforming industry.
But with distinct personalities and distinct jobs to do, how can DevOps teams bring these jobs together? If avoiding the drama of a love triangle is a priority, what characteristics are necessary to keep business running smoothly?
The first, is perhaps the most obvious – communication. Communication is vital, and this is something that CI enables. It allows teams to be Agile by ensuring they are all on the same page, so if they leave a project or move on to a different step in the process, they can easily integrate once they return without having to start over from the beginning.
The second is trust – CD alleviates any unknowns by automating and streamlining all the processes leading up to deployment, such as validating the quality of the build in the previous environment and promoting to staging. By eliminating the element of doubt, teams can trust both the process and the product – assured that continuous quality is being prioritised.
And finally, honesty. If CT is leveraged when developing apps in different environments and with different criteria, it will prevent larger issues from happening once the app is in the sprint or live, keeping developers honest about the status of their code.
Assuring high quality deliverables
So, teams that are trying to mature their DevOps practices, but continue to face hurdles, should consider the combination of CI, CT and CD workflows. By automating all release activities, they can assure high quality deliverables throughout each stage of the DevOps pipeline, raising the confidence of flawless release time after time. But – it’s determining how to combine the three into the right formula that fits your organisation’s goals that is the next step to achieving this.
It’s crucial that teams understand how CI, CT and CD play into the each other. For example, for CI to be successful, you need to assure tests are stable and run continuously and in a stable environment – assuring high reliability of the test results per each build execution. The same goes for CT; to have an engine that can trigger tests automatically, it requires robust test code, a robust test lab, and most-importantly, cultural and team synchronisation. When both CI and CT are working for you, that means that you are that close to a working CD.