Continuous Delivery Episode 3: The Agile Marriage of DevOps
The Agile delivery process builds the foundation, disciplines and approach that when combined with DevOps in a beautiful marriage make Continuous Delivery possible.
▪ A successful marriage is one that builds on the strengths of each partner while drawing on the vision that they have in common.
So I think this occurs in three main areas that intersect Agile and DevOps:
- Collaboration with other end users of the system.
- Delivering value early and often.
- Defects detected earlier in the cycle.
1. Collaboration with other end users of the system.
▪ Agile’s focus on the USER and the Business defining the highest value items to work on, aligns the delivery team to focus on only what’s important
▪ It’s stress on working code being the only measure of success helps users to see first hand every small feature improvement in situ
▪ In Scrum for example your upcoming sprint features are defined by your business product owner who is either the end user or representing the end user
2. Delivering value early and often.
▪ Agile’s drive to break down a piece of work into small deliverable elements of value then needs the disciplined setup of a DevOps practice to make sure that is delivered to a production like environment as early and safely as possible to meet Agile’s definition of done.
▪ Ideally very early in the development lifecycle – maybe in sprint zero the team get together to setup the DevOps:
– Setting up scriptable Environments using tools such as Ansible, Chef and Puppet
– Code repository such as Git and its links to a story system such as Jira
– The linking of the stories with the code repository with running automated testing with deployment if all is successful in a pipeline tool such as Bamboo
3. Defects detected early in the cycle.
▪ Agile’s focus on test driven development, on automated testing of needed scenarios alongside development and then at every promotion onto the next environment along up to production or production like environment make It far easier to correct issues while still in development phase then it is further along the production chain.
▪ And again it’s only with strong DevOps practices that automated testing, both of unit regression and integration testing, can actually be of benefit
▪ Without setting this up as part of the deployment pipeline when code is promoted then your seriously limiting detecting defects early in the cycle
▪ And only with that discipline of Test Driven Development or even Acceptance Driven Development Agile encourages that the benefits can actually be achieved.
Gav will cover the various tools in a continuous delivery environment.