continuous delivery @ hi q

Post on 15-Jan-2015

601 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Continuous DeliveryEnabling Agile

Tomas Riha

Architect @ VGT/WirelessCarMAJOR project liabilityMAJOR Project Liability

Passionate about change and improvementSkiing feeder

mail: triha74@gmail.comtwitter: @TomasRihaSE

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

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

What its all about

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

of valuable software.

What does that mean?

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

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

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.

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.

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

Continuous Delivery

Build Release Deploy Test Prod

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

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

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!

What Tests? Unit? Component? System?

Yes!

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

Principles of Continuous Delivery

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

2. Automate everything

Principles of Continuous Delivery

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

Principles of Continuous Delivery

4. Keep everything in source control AND release it.

Principles of Continuous Delivery

5. Done means released

Principles of Continuous Delivery

6. Build Quality In

Principles of Continuous Delivery

7. Fail Fast

Principles of Continuous Delivery

8. Everybody has responsibility for the release process

Principles of Continuous Delivery

9. Improve continuously

Principles of Continuous Delivery

The pipe - Build once!

Build Release

Build and Unit test then release it!

The pipe - Release everything!

Build Release

Build Release

Build Release

Build Release

Code

DB Scripts

Server Config

Deploy script

Feedback Feedback

The pipe -Bundle released artifacts

Build Release

Build Release

Build Release

Build Release

Assembly

Feedback

The pipe - Use Same Deploy Mechanism

Function TestAssembly Deploy

DB

Server

Function Test

Function Test

Pipe Status

Feedback

Feedback Feedback

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

Continuous Delivery

Build Release Assemble Deploy Deploy PreProd/ProdTest

SummaryWe build once

Release everythingAutomate everything

Fast feedbackAutomate all tests except UAT

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

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

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

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.

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.

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

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

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!

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.

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.

Continuous Delivery & Test Driven Development

Who should automate the tests?

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

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 $$$$:)

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.

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.

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.

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

Good Reading

Continuous Delivery by Jez Humble & Dave Farley

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

Thats it!

Feedback & Any questions you forgot to ask?

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

top related