Initiated primarily by developers, the DevOps movement laid the groundwork for more comprehensive software delivery automation practices that gradually matured. Software can now be delivered at will, rather than at planned intervals, hence continuous delivery (CD).
Adopting a continuous delivery methodology requires not only a change of mindset but a change of tools, standardization on new processes, and implementation of best practices. For DevOps cultural change to mature into effective CD practice, organizations must adopt and embrace a number of key principles.
- Production readiness – The organization must reach a maturity level in which the application code is always in a production ready state. Production readiness does not necessarily mean that the application is deployed to production on a continuous basis, but rather the organization retains the ability to do so at will.
- Uncompromised quality – Software quality cannot be compromised at any point and the development organization has to prioritize high quality over new features. Ensuring a consistent high quality requires developer’s responsibility and proper tooling.
- Repeatable delivery – The entire software delivery process from build through staging to production must be reliably repeatable so that each iteration is performed in an identical manner.
- Frequent build and integration – A CD environment operates with the notion that changes to the application code between build cycles are minimal. Agile, incremental development is practiced alongside CD to ensure that the development project is broken into short iterations. Builds are triggered on all code checked-in to ensure that problems are isolated and addressed quickly.
- Application stack consistency – The application stacks should be consistent and automatically provisioned to eliminate environment configuration inconsistencies. Consistency also accelerates the developer’s and IT problem resolution capability as it reduces the failures related to application external dependencies.
- Diagnostics and application management – Fast and meaningful diagnostics data becomes critical to a successful CD implementation. Static analysis and dynamic analysis tools are sequentially deployed during the build cycle providing developers with the insight and drill down data.
- Broad test automation coverage – Test automation is a prerequisite to ensure high quality and production readiness. Unit tests and multiple layers of automated functional tests are implemented to identify potential issues and regressions. Developers are required to develop unit tests for each submitted piece of code.
By embracing and implementing these key principles into your processes, it is possible for your organization to achieve faster delivery with better quality.
- Read more detail about the key principles in this white paper – Your CFO cares about DevOps – the economics behind continuous delivery.
- Looking to adopt a DevOps/CD approach to application development and delivery? We can help you build your roadmap.