Continuous Integration & Continuous Delivery
Defining Continuous Integration and Continuous Delivery
Continuous Integration (CI) has become an essential ingredient for teams doing iterative and incremental software delivery. CI is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.
CI is a software engineering practice in which isolated changes are immediately tested and reported on when they are added to a larger code base. The goal of CI is to provide rapid feedback so that if a defect is introduced into the code base, it can be identified and corrected as soon as possible. CI software tools can be used to automate the testing and build a document trail.
CI has evolved since its conception. Originally, a daily build was the standard. Now, the usual rule is for each team member to submit work on a daily (or more frequent) basis and for a build to be conducted with each significant change. When used properly, CI provides various benefits, such as constant feedback on the status of the software. Because CI detects deficiencies early on in development, defects are typically smaller, less complex, cheaper and easier to resolve.
Cost of Change
Continuous Delivery (CD) is the natural extension of Continuous Integration: an approach in which teams ensure that every change to the system is releasable, and that we can release any version at the push of a button. CD aims to make releases easy, so we can deliver frequently and get fast feedback on what users care about.
Continuous Integration for Greater Business Success
Continuous Delivery and Adopting The Modern Web
Continuous Delivery accelerates the building, learning and feedback process. By creating a deployment pipeline that reaches from the developer’s machine to the production server, steps between written code and final deployment in production are largely automated.
Six Key Principles for Moving to Continuous Delivery
- Small batch sizes focused on complete, deployable features.
- Well documented, clean code delivered in atomic, well described and tested commits.
- Single piece flow of code through the entire process.
- Automation and documentation to remove waste in the process.
- A thorough test suite to ensure that new features won't break old features.
- A trusted foundation built on continuous improvement and staff empowerment.
The Benefits of Continuous Delivery are Massive
Continuous delivery accelerates a lot of the benefits gained from Agile processes by increasing feedback, removing more waste from the process and emphasizing single piece flow and small batch sizes in your development and deployment pipeline. These are small concepts that add up in a big way. In the early 80s, Toyota built cars with just 10 person-hours of work versus the hundreds of hours of work that it took for more traditional car companies to achieve the same results. People do not see the waste of context switching and work-in-progress (WIP) management.
You Have a Unique Opportunity
We can help you with your process consulting, building your entire initial or minimal viable product or help you specifically with effectively executing a stack migration to the modern web.