In my earlier post I explained what is
DevOps ? In this artcile I ll touch upon two important concepts of
devops Continuous Integration /Continuous delivery.
Continuous Integration: – Agile in
practice:
“Continuous Integration is a software
development practice where members of a team integrate their work
frequently; usually each person integrates at least daily - leading
to multiple integrations per day. Each integration is verified by an
automated build (including test) to detect integration errors as
quickly as possible.”
The value that Continuous Integration
brings to the table is that it forces developers and team of
developers to integrate their individual work with each others as
early as possible. This exposes integration issues and conflicts on a
regular basis.
Principles of CI
- Maintain a Single Source Repository
- Automate the Build
- Make Your Build Self-Testing
- Everyone Commits To the Mainline Every Day
- Every Commit Should Build the Mainline on an Integration Machine
- Keep the Build Fast
- Test in a Clone of the Production Environment
- Make it Easy for Anyone to Get the Latest Executable
- Everyone can see what's happening
- Automate Deployment
Continuous Delivery – Extending
Agile beyond Development:
Continuous
Delivery takes Continuous Integration step further. After the
application is built, at the end of every Continuous Integration
build, deliver it to the next stages in the application delivery
lifecycle. Deliver it to the QA team for testing and then to the
operations team (the Ops in DevOps) for delivery to the production
system. The goal of Continuous Delivery is to get the new features
that the developers are creating, out to the customers and users as
soon as possible. The goal being to Ensure applications are
production-ready throughout the lifecycle and can be released at any
time while minimizing rollback due to quality issues
Principles of CD
- Validate on more production-like conditions earlier
- Automate hand-offs/promotions to increase velocity through the different stages
- Standardization on processes and assets between Dev and Ops
- Automated monitoring and dashboarding of quality and performance against service level agreements at multiple stages