The Art of Continuous Delivery
One of the major tasks today for IT teams globally is to deliver at a speed that their customers demand while maintaining a quality that far exceeds their expectations. At the end the quality of the products/applications is a reflection of the brand. So, your ability to stay ahead of competition while being inline with customer expectations is directly proportional to your agility and more importantly your release velocity.
The Agile revolution, DevOps, Automated Testing and a few other approaches have been tried, but the success these bring can be limited or in pockets at best. DevOps started with a good intent to bring the Developers and the Operations/Release teams closer but DevOps has unfortunately become a team by itself (or Sys admins are wearing the hat) or in other cases a tool set. Both of which do not take applications teams any further than speed up the deployment process – Is that really what you Signed up for?? Not really, No!!
The Way to achieving the true benefits of adopting these approaches is automation at each stage of the application engineering cycle. Right from the get go, eliminating the wait times (dependencies), testing, deployment, support and feedback is what is needed to ensure success.
At Qentelli, our core focus has been achieving Continuous Delivery for high performance, high velocity agile teams. We classify the phases broadly to achieving CD broadly as:
- Continuous Planning and Development: Leverage engineering best practices and adopt a test first approach such as – TDD and bring in early testing like Unit Test Automation
- Continuous Testing: To integrate QE/SDET integration test first utilizing BDD frameworks and approaches that tie in user stories and features directly to the methods as they get developed, and early functional and automated unit testing
- Continuous Integration: Leverage automated trigger of unit and functional tests for every build /check in.
- Continuous Build: Adopt build tools such as Maven for creating, building, publishing and managing dependencies during development phase to reduce time and effort
- Continuous Deployment: Build a continuous deployment framework with DevOps tools, Test again Certify the build and move to higher environments
- Continuous Monitoring and Measurement: Real User Monitoring is a start. Metrics across lifecycle and traceability are a mandate
- Continuous Feedback: Testing in Prod (Functional), Real User Experience measurement and synthetic monitoring that enable a direct Feedback loop to dev / plan phase
To achieve Continuous Delivery all of the above needed to be incorporated as a part of engineering cycle with coordination and precision. More than the adopted toolset the onus lies on leadership to bring the fundamental culture change that can ensure better results. The framework Qentelli leverages to achieve CD is shown below along with some of the tools that we have found a lot of success with.
This approach has helped us ensure that or organization is ready to adopt DevOps can get 40 – 50% more benefit by adopting this paradigm shift.