continuous delivery @ hi q

46
Continuous Delivery Enabling Agile

Upload: tomas-riha

Post on 15-Jan-2015

600 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Continuous delivery @ hi q

Continuous DeliveryEnabling Agile

Page 2: Continuous delivery @ hi q

Tomas Riha

Architect @ VGT/WirelessCarMAJOR project liabilityMAJOR Project Liability

Passionate about change and improvementSkiing feeder

mail: [email protected]: @TomasRihaSE

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

Page 3: Continuous delivery @ hi q

Agenda

What its all about

Intro to Continuous Delivery

Principles of Continuous Delivery

Look at a Pipe

Impact on Methods and Professions

Importance of Architecture

Scaling Continuous Delivery

Page 4: Continuous delivery @ hi q

What its all about

Our highest priority is to satisfy the customerthrough early and continuous delivery

of valuable software.

Page 5: Continuous delivery @ hi q

What does that mean?

As soon as we have added value to the application it should be in the hands of the customer.

Page 6: Continuous delivery @ hi q

Are we really delivering as soon as possible?

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 7: Continuous delivery @ hi q

Are we really delivering as soon as possible?

Delivering every 2-4 weeks when a SET of features have been completed is NOT delivering value as soon as

possible.

Page 8: Continuous delivery @ hi q

Remind me why do we want to deliver as soon as possible.

FeedbackFaster feedback, less upfront design, easier to build what the customer wants.

ComplexitySmall change sets are low risk, easy to understand and easy to manage.

CostUnreleased code is cost without value.

Page 9: Continuous delivery @ hi q

So what is stopping us?

Its hard to...... system and regression test right at the moment when the

value has been added.... to even just have an application deploy at the moment

when the value has been added

Page 10: Continuous delivery @ hi q

Continuous Delivery

Build Release Deploy Test Prod

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

Page 11: Continuous delivery @ hi q

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 12: Continuous delivery @ hi q

Continuously as in all the time?

Yes!

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

Every code commit is continuously!

Page 13: Continuous delivery @ hi q

What Tests? Unit? Component? System?

Yes!

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

Page 14: Continuous delivery @ hi q

Principles of Continuous Delivery

1. The process MUST be repeatable, reliable and independent of key personnel

Page 15: Continuous delivery @ hi q

2. Automate everything

Principles of Continuous Delivery

Page 16: Continuous delivery @ hi q

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

Principles of Continuous Delivery

Page 17: Continuous delivery @ hi q

4. Keep everything in source control AND release it.

Principles of Continuous Delivery

Page 18: Continuous delivery @ hi q

5. Done means released

Principles of Continuous Delivery

Page 19: Continuous delivery @ hi q

6. Build Quality In

Principles of Continuous Delivery

Page 20: Continuous delivery @ hi q

7. Fail Fast

Principles of Continuous Delivery

Page 21: Continuous delivery @ hi q

8. Everybody has responsibility for the release process

Principles of Continuous Delivery

Page 22: Continuous delivery @ hi q

9. Improve continuously

Principles of Continuous Delivery

Page 23: Continuous delivery @ hi q

The pipe - Build once!

Build Release

Build and Unit test then release it!

Page 24: Continuous delivery @ hi q

The pipe - Release everything!

Build Release

Build Release

Build Release

Build Release

Code

DB Scripts

Server Config

Deploy script

Feedback Feedback

Page 25: Continuous delivery @ hi q

The pipe -Bundle released artifacts

Build Release

Build Release

Build Release

Build Release

Assembly

Feedback

Page 26: Continuous delivery @ hi q

The pipe - Use Same Deploy Mechanism

Function TestAssembly Deploy

DB

Server

Function Test

Function Test

Pipe Status

Feedback

Feedback Feedback

Page 27: Continuous delivery @ hi q

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 28: Continuous delivery @ hi q

Continuous Delivery

Build Release Assemble Deploy Deploy PreProd/ProdTest

SummaryWe build once

Release everythingAutomate everything

Fast feedbackAutomate all tests except UAT

Page 29: Continuous delivery @ hi q

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

We can get customer feedback as soon as value has been added

Page 30: Continuous delivery @ hi q

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 31: Continuous delivery @ hi q

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 32: Continuous delivery @ hi q

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?We want feedback as soon as possible!

Undelivered code is a cost without value!

IF you stick to scrum do NOT submit to mid sprint releases instead shorten your sprints.

Page 33: Continuous delivery @ hi q

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 34: Continuous delivery @ hi q

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 35: Continuous delivery @ hi q

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 36: Continuous delivery @ hi q

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 37: Continuous delivery @ hi q

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 38: Continuous delivery @ hi q

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 39: Continuous delivery @ hi q

Continuous Delivery & Test Driven Development

Who should automate the tests?

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

Page 40: Continuous delivery @ hi q

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 41: Continuous delivery @ hi q

Continuous Delivery & Architecture

Architect for testability and change.

Architect around services.Clearly defined responsibility.

Small components.Build in testability.

Build strong support for feature flags.

Page 42: Continuous delivery @ hi q

Continuous Delivery & Scalability

Single threaded process does not scale

Scale around number of code committersDedicated servers create bottlenecks

Good architecture helps, monoliths don't.Isolated and parallelized testcases help.

Use cloud nodes!!If no cloud available build a pool of servers.

Page 43: Continuous delivery @ hi q

Continuous Delivery & Expansion

Each individual that is exposed to CD has to mature

Continuous Delivery is individual maturity.Each new individual has to mature and learn.

Each new team has to mature and learn.There are no short cuts for new team members just faster learning.

Page 44: Continuous delivery @ hi q

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 45: Continuous delivery @ hi q

Good Reading

Continuous Delivery by Jez Humble & Dave Farley

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

Page 46: Continuous delivery @ hi q

Thats it!

Feedback & Any questions you forgot to ask?

http://continuous-delivery-and-more.blogspot.se