How to Achieve Continuous Delivery Capability
Automating delivery through CI/CD helps teams to release high-quality code faster and more often, and according to DevOps State of Report in 2019, teams that practice CI/CD spend 44% more of their time creating new features and code instead of managing processes and tools.
It’s simply because CI/CD helps them automate most of their delivery process, removing pains in releasing new changes to production, reducing their cognitive load and let them focus on more valuable works.
This fact is also showed in upskilling report 2020 by DevOps Institute, showing us that CI/CD tool chain skills are the most important technical skills to our team. Access the report here
But how to achieve Continuous Delivery capability? you cannot just acquire some fancy tools and suddenly it works ~ it doesn’t work that way, this is the common mistake in Enterprise.
Same as Astronomy, it’s not just about Telescope…
You have to upskill your people, implement some key practices as part of your daily routine, make it as standard of doing things. Based on our experience in implementing DevOps, below are some technical practices to enable Continuous Delivery (CD).
- Start with Source Code Management, perform Trunk Based Development (TBD) with feature flag, add build automation, and extend it to Continuous Integration (CI).
- Build your deployment pipeline by integrating DevOps toolchain, it should refer to your delivery process – you want to define and agree your delivery process with all parties in your IT value stream before building this!
- Add more automated testing in your delivery process, start from functional, non-functional and maintenance test. Refer to test automation quadrant to decide which test should be automated, and test pyramid to agree on functional test distribution.
- Define the quality gate (soft gate or hard gate) as your automated control and governance in your pipeline, visualise the process, share the result to your team and related stakeholders. Ensure all information are transparent, and feedback is short, so necessary action can be taken quickly.
- Record all activities in the pipeline and embed it as part of your release note, and use it as an information to decide release.
- Implement deployment strategy such as canary, blue-green or rolling deployment in the pipeline to reduce the risk. Dynamic flagging should be also considered. Choose the deployment strategy suited your service type and criticality, do not implement one size fits all strategy, it won’t work!
- The use of container orchestration platform and cloud are recommended, and will make your life easier (but it’s not a must).
These activities should become part of your daily routine enabled by automation pipeline provided by your IT Infrastructure & Operation team.
Below is the typical automation pipeline consist of integrated tools to enable all practices above.
By implementing required practice consistently, building your toolchain and upskilling your people, you can achieve your Continuous Delivery capability.
But don’t stop there, always seek for improvement, measure it, and expand to other domains. Always remember, it’s not a destination, but a journey!