True & Reliable Continuous Delivery
True and reliable high quality Continuous Delivery is not just about fixing isolated issues with regard to teaming, deploying or testing. It’s about implementing individual topics in an integral manner while optimally balancing the investments and efforts that you make for each of these topics.
– Agile Teaming – for quick and continuous delivery of new features
– DevOps – a move from project teams to product teams that feel end-to-end responsible for a working end product.
– Quality on every aspect – quality of teams, code, releases and systems.
– Software Craftsmanship – components should not fail at the first glitch of a system.
– Automation where possible – error prone manual interventions are now longer allowed. Servers can be delivered within the hour, applications can be deployed within minutes.
The four views
True Continuous Delivery reaches into every part of your organization. Business- and development teams work in an agile manner, IT has large parts of it’s delivery processes automated, implementation of new and/or updated requirements pass through delivery at a much higher pace, while operations treats Infrastructure as code. At the same time project teams work as real product teams, feeling end-to-end responsible for the product, not just to the point where the product is handed over to a next organization, but until it reaches the end-user and runs in production without any problems.
When implementing true Continuous Delivery, you have to be highly active and effective in any of the four quadrants. As such it is essential that the organization
– Provides a clear vision on all Continuous Delivery aspects
– Guides & coaches complete teams in adopting Agile & Scrum
– Provides education on topics like Agile, DevOps, Software Craftsmanship and Lean approaches
– Implements Continuous (automated) Integration & automated testing
– Implements Deployment Automation & platform Provisioning
The four views in more detail
âžŠ The Business View
The business view is all about a faster time to market, a higher throughput of features, a quicker return on investment, a predictable level of continuity and a lower operating cost. Continuous Delivery is all about paving the road from Concept to Cash. A few examples:
– By automatically testing code straight after it has been released, issues can be fixed on the spot while making sure that code in the delivery pipeline is of an optimal level of quality.
– By eliminating manual error prone steps in the delivery process, cost that is related to fixing issues caused by human error is reduced to an absolute minimum.
– By releasing frequently and on a feature-by-feature basis, ROI is harvested on a daily basis while high risk big bang deployments are a thing of the past.
– By shaping the product together with the feedback from your customer, the product in it’s end-state is better aligned with what the customer actually wants, than would be the case if a product was to be completely designed up-front.
âž‹ The Functional View
The functional view is all about the possibilities the delivery process provides. To name a few:
– Agile teams deliver features on a daily basis, provide high quality code and show craftsmanship by producing code that is robust and does not unnecessarily add to complexity of the system.
– Code Integration, packaging, building and testing is automatically performed on a daily basis, while quality and status of code (pass/fail/what/who) is instantly reported to the team.
– Applications are automatically deployed in minutes while adhering to the defined release processes. The application deployment process is completely ‘hands-off’ and does not require time-consuming manual interventions.
– Systems and servers are build-up and torn-down in a matter of minutes. Groups of systems share an equal configuration resulting in configuration drift to be a thing of the past. Infrastructure is treated as code, the process of system delivery is ‘hands-off’.
âžŒ The Implementation View
The implementation view provides the best practices for implementation. In a nutshell:
– Continuous integration and automated testing should be implemented as Open Source and development should feel free to choose which implementation to use.
– Application deployment automation should be targeted to become one vendor neutral solution that is capable of deploying to multiple PaaS environments.
– Release management should be as simple as possible process, where the Release Management tool itself should easily integrate with the Application Deployment tool.
– Delivery teams should be able to set up new systems by use of a Self Service Platform Provisioning environment. Teams can request new platforms based on predefined building blocks. Platforms are created in minutes.
âž The Operational View
The operational view explains the principles to which teams should adhere in order to achieve the highest throughput for continuous delivery.
– DevOps: Product teams instead of project teams. Delivery and operations operate from within the same team and are mutually responsible for a working end product. ‘You build it, you run it’.
– One DoD: The Definition of Done for the complete product team is ‘Done is Live’. Meaning that code is not done when it is stuck somewhere in test which traditionally often is the case.
– Agile: Teams work in an agile manner, rather shaping the product as it is implemented then fixing it in concrete after it has been completely designed.
– Craftsmanship: Delivery teams push high quality, robust and tested code into the delivery pipeline. If code in the pipeline is broken, it is fixed immediately. ‘You break it, you fix it’.
Approaching Continuous Delivery by using these four perspectives will help you determine where your organization’s challenges are and provide you with useful handles to carefully implement a new, faster and much more agile way of working.
This post is part of a series on Continuous Delivery. Please see our tag Continuous Delivery for more posts on this subject. Or check our Continuous Delivery website to learn how Xebia’s consultants can help you improve your time to market, reduce costs and improve quality using Continuous Delivery best practices.