Continuous delivery @åf consult

39
Continuous Delivery Enabling Agile

description

 

Transcript of Continuous delivery @åf consult

Page 1: Continuous delivery @åf consult

Continuous DeliveryEnabling Agile

Page 2: Continuous delivery @åf consult

Tomas Riha

Architect @ VGT/WirelessCarMAJOR Project Liability

Passionate about change and improvementSkiing feeder

mail: [email protected]: @TomasRihaSE

blog: continuous-delivery-and-more.blogspot.com

Page 3: Continuous delivery @åf consult

Agenda

Intro to Continuous Delivery

Principles of Continuous Delivery

Look at a Pipe

Impact on Scrum

Feature Driven Development

Impact on Developers and Testers

Page 4: Continuous delivery @åf consult

Continuous Delivery

Build Release Deploy Test Prod

Your application always builds, passes its unit tests, deploys and passes system tests.

Page 5: Continuous delivery @åf consult

Why we want frequent releases

Faster Time to market

Easier to understand impact of deliveryLower complexity due to less changes

Unreleased code is cost without value

Page 6: Continuous delivery @åf consult

Continuous Integration/Delivery/Deploy

Continuous Integration Your application always builds and passes its unit tests.

Continuous DeliveryYour application always builds, passes its unit tests, deploys and passes its

system tests making it always ready to deploy to production through a largely automated process

Continuous DeploymentYour application automatically deploys to production through a fully automated

process

Page 7: Continuous delivery @åf consult

Continuously as in all the time?

Yes!

End of sprint isn't continuously. Weekly isn't continuously. Nightly isn't continuously.

Page 8: Continuous delivery @åf consult

What Tests? Unit? Component? System?

Yes!

All of it and eventually you will add Rollback, Load and Failover as well.

Page 9: Continuous delivery @åf consult

Principles of Continuous Delivery

1. The process MUST be repeatable and reliable

Page 10: Continuous delivery @åf consult

2. Automate everything

Principles of Continuous Delivery

Page 11: Continuous delivery @åf consult

3. If something is difficult or painful, do i more often

Principles of Continuous Delivery

Page 12: Continuous delivery @åf consult

4. Keep everything in source control AND release it.

Principles of Continuous Delivery

Page 13: Continuous delivery @åf consult

5. Done means released

Principles of Continuous Delivery

Page 14: Continuous delivery @åf consult

6. Build Quality In

Principles of Continuous Delivery

Page 15: Continuous delivery @åf consult

7. Fail Fast

Principles of Continuous Delivery

Page 16: Continuous delivery @åf consult

8. Everybody has responsibility for the release process

Principles of Continuous Delivery

Page 17: Continuous delivery @åf consult

9. Improve continously

Principles of Continuous Delivery

Page 18: Continuous delivery @åf consult

The pipe - Build once!

Build Release

Build and Unit test then release it!

Page 19: Continuous delivery @åf consult

The pipe - Release everything!

Build Release

Build Release

Build Release

Build Release

Code

DB Scripts

Server Config

Deploy script

Feedback Feedback

Page 20: Continuous delivery @åf consult

The pipe -Bundle released artifacts

Build Release

Build Release

Build Release

Build Release

Assembly

Feedback

Page 21: Continuous delivery @åf consult

The pipe - Use Same Deploy Mechanism

Function TestAssembly Deploy

DB

Server

Function Test

Function Test

Pipe Status

Feedback

Feedback Feedback

Page 22: Continuous delivery @åf consult

The pipe - Use Same Deploy Mechanism

Deploy

DB

Server

Pipe Status

Server

DB

Server Server

DB

Server Server

Deploy

Pre Prod Prod

UAT

FeedbackFeedback Feedback

Page 23: Continuous delivery @åf consult

Continuous Delivery

Build Release Assemble Deploy Deploy PreProd/ProdTest

SummaryWe build once

Release everythingAutomate everything

Fast feedbackAutomate all tests except UAT

Page 24: Continuous delivery @åf consult

Obvious benefits

Continuous Regression testing gives instant feedback.

Continuously deploying to test servers tests deploy mechanism several hundred times per release.

Always ready to push new release into UAT

Page 25: Continuous delivery @åf consult

Common problem with many Agile projects

Pre Planning

Dev Sys Test Reg Test

Pre Planning

Dev Sys Test Reg Test

Scrummerfall happens because its hard for developers to have something deployable for the testers to test.

System testing on something that has not been regression tested is fundamentally flawed.

Cost of regression test tends to bloat sprint content.

Sprint 2-4 weeks

Page 26: Continuous delivery @åf consult

Continuous Delivery - Feature Verification

Pre Planning

Dev Reg Test

Continuously

Continuous Regression means that all feature verification is always done on a functioning application.

Forces Test Driven Development as the gap in time between Reg Test and Verification of new features leaves untested code in the application.

System Test

When a feature is done

Page 27: Continuous delivery @åf consult

Continuous Delivery - Impact on Scrum

Pre Planning

Dev Reg Test

No need for any code freeze period.Short sprints are possible since there is no need for long regression test period

Features can be planned at start or just before feature start.Features can be done and "released" but not delivered until sprint.

Features can be developed serially or in parallel within a sprint.

System Test

Feature cycle

Pre Planning

Dev Reg Test System Test

Feature cycle

Page 28: Continuous delivery @åf consult

Continuous Delivery - Impact on Scrum

Features can be done and "released" but not delivered until sprint.Breaks continuous delivery?

Don't we want to continuously deliver to UAT?Undelivered code is a cost without value!

IF you stick to scrum do NOT submit to mid sprint releases

Page 29: Continuous delivery @åf consult

Continuous Delivery - Impact on Scrum

Scrum is based on developing a feature set without distraction, mid sprint releases are a huge distraction.

Working towards two deadlines within one sprint causes stress.

Discussion about what features will be done for the mid sprint release are a distraction and time sink.

Deploying what happens to be ready isnt so bad in theory, in reality Product owner will expect features at mid sprint.

Page 30: Continuous delivery @åf consult

Continuous Delivery - Feature driven development

Feature driven development is very naturalAnalyze, Design, Develop+Test, Deliver to UAT

Development can be done serial or parallel

No done and unreleased code

Pre Planning

Dev Reg Test System Test

Feature cycle

Pre Planning

Dev Reg Test System Test

Feature cycle

Page 31: Continuous delivery @åf consult

Continuous Delivery - Continuous Responsibility

Developers have to take responsibility for their check ins.

Regression test before commit, make a smoke test suite for fast feedback

Never just change regression tests to make them work

Evolve new tests with the code

Page 32: Continuous delivery @åf consult

Continuous Delivery - Continuous Responsibility

If we break the pipe we need to fix it ASAP

Things will break, things should break, when it does fix it!

Never leave the pipe red!

Page 33: Continuous delivery @åf consult

Continuous Delivery - Continuous Responsibility

Portability and visiblity

Pipe has to be portable in order for developers to be able to take responsibility.

Fast feedback has to be visible.

Page 34: Continuous delivery @åf consult

Continuous Delivery & Test Driven Development

Time Gap between code commit of new feature and execution of test case needs to be minimal.

If it´s green it needs to go into regression suite ASAPIf there is a bug equally it needs to be reported equally ASAP

Developing tests in parallel with code minimizes the gap.

Page 35: Continuous delivery @åf consult

Continuous Delivery & Test Driven Development

Who should automate the tests?

Test Design - Done by TestersTest automation - Done by ????Coding - Done by Developers

Page 36: Continuous delivery @åf consult

Continuous Delivery & Test Driven Development

Tomorrow Agile Team Member

Developers with Testing skills alt

Testers with Development skills

WILL BE SUPER HOT AND EARN SUPER NICE $$$$:)

Page 37: Continuous delivery @åf consult

Benefits

Continuous Regression testing gives instant feedback.

Continuously deploying to test servers tests deploy mechanism several hundred times per release.

Always ready to push new release into UAT

Test Driven Development

Continuous Responsibility by Developers

Sustainable Quality

Page 38: Continuous delivery @åf consult

Good Reading

Continuous Delivery by Jez Humble & Dave Farley

http://www.amazon.com/dp/0321601912?tag=contindelive-20

Page 39: Continuous delivery @åf consult

Thats it!

http://continuous-delivery-and-more.blogspot.com/2013/02/talk-at-af-consult-2013-01-12.html

Feedback & Any questions you forgot to ask?