Tomas RihaArchitect @ VGT/WirelessCarMAJOR project liabilityMAJOR Project LiabilityPassionate about change and improvementSkiing feedermail: firstname.lastname@example.org: @TomasRihaSEblog: continuous-delivery-and-more.blogspot.com
AgendaWhat its all aboutIntro to Continuous DeliveryPrinciples of Continuous DeliveryLook at a PipeImpact on Methods and ProfessionsImportance of ArchitectureScaling Continuous Delivery
What its all aboutOur highest priority is to satisfy the customerthrough early and continuous deliveryof valuable software.
What does that mean?As soon as we have added value to the application itshould be in the hands of the customer.
Are we really delivering as soon as possible?PrePlanningDev Sys Test Reg TestPrePlanningDev Sys Test Reg TestScrummerfall happens because its hard for developers to havesomething deployable for the testers to test.System testing on something that has not been regression tested isfundamentally 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 havebeen completed is NOT delivering value as soon aspossible.
Remind me why do we want to deliver as soonas 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 thevalue has been added.... to even just have an application deploy at the momentwhen the value has been added
Continuous DeliveryBuild Release Deploy Test ProdYour application always builds, passes its unit tests,deploys and passes system tests.
Continuous Integration/Delivery/DeployContinuous IntegrationYour application always builds and passes its unit tests.Continuous DeliveryYour application always builds, passes its unit tests, deploys and passes itssystem tests making it always ready to deploy to production through a largelyautomated processContinuous DeploymentYour application automatically deploys to production through a fully automatedprocess
Continuously as in all the time?Yes!End of sprint isnt continuously.Weekly isnt continuously.Nightly isnt 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 Delivery1. The process MUST be repeatable, reliable andindependent of key personnel
2. Automate everythingPrinciples of Continuous Delivery
3. If something is difficult or painful, do i more oftenPrinciples of Continuous Delivery
4. Keep everything in source control AND release it.Principles of Continuous Delivery
5. Done means releasedPrinciples of Continuous Delivery
6. Build Quality InPrinciples of Continuous Delivery
Obvious benefitsContinuous Regression testing gives instant feedback.Continuously deploying to test servers tests deploy mechanism severalhundred times per release.Always ready to push new release into UATWe can get customer feedback as soon as value has been added
Continuous Delivery - Feature VerificationPrePlanningDev Reg TestContinuouslyContinuous Regression means that all feature verification is always doneon a functioning application.Forces Test Driven Development as the gap in time between Reg Testand Verification of new features leaves untested code in the application.System TestWhen afeature isdone
Continuous Delivery - Impact on ScrumPrePlanningDev Reg TestNo need for any code freeze period.Short sprints are possible since there is no need for long regression test periodFeatures 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 TestFeature cyclePrePlanningDev Reg Test System TestFeature cycle
Continuous Delivery - Impact on ScrumFeatures can be done and "released" but not delivered until sprint.Breaks continuous delivery?Dont 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 yoursprints.
Continuous Delivery - Impact on ScrumScrum is based on developing a feature set withoutdistraction, 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 adistraction and time sink.Deploying what happens to be ready isnt so bad in theory, in reality Productowner will expect features at mid sprint.
Continuous Delivery - Feature drivendevelopmentFeature driven development is very naturalAnalyze, Design, Develop+Test, Deliver to UATDevelopment can be done serial or parallelNo done and unreleased codePrePlanningDev Reg Test System TestFeature cyclePrePlanningDev Reg Test System TestFeature cycle
Continuous Delivery - ContinuousResponsibilityDevelopers have to take responsibility for their check ins.Regression test before commit, make a smoke test suite for fast feedbackNever just change regression tests to make them workEvolve new tests with the code
Continuous Delivery - ContinuousResponsibilityIf we break the pipe we need to fix it ASAPThings will break, things should break, when it does fix it!Never leave the pipe red!
Continuous Delivery - ContinuousResponsibilityPortability and visiblityPipe has to be portable in order for developers to be able to take responsibility.Fast feedback has to be visible.
Continuous Delivery & Test DrivenDevelopmentTime Gap between code commit of new feature andexecution 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 ASAPDeveloping tests in parallel with code minimizes the gap.
Continuous Delivery & Test DrivenDevelopmentWho should automate the tests?Test Design - Done by TestersTest automation - Done by ????Coding - Done by Developers
Continuous Delivery & Test DrivenDevelopmentTomorrow Agile Team MemberDevelopers with Testing skillsaltTesters with Development skillsWILL BE SUPER HOT AND EARN SUPER NICE $$$$:)
Continuous Delivery & ArchitectureArchitect for testability and change.Architect around services.Clearly defined responsibility.Small components.Build in testability.Build strong support for feature flags.
Continuous Delivery & ScalabilitySingle threaded process does not scaleScale around number of code committersDedicated servers create bottlenecksGood architecture helps, monoliths dont.Isolated and parallelized testcases help.Use cloud nodes!!If no cloud available build a pool of servers.
Continuous Delivery & ExpansionEach individual that is exposed to CD has to matureContinuous 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.
BenefitsContinuous Regression testing gives instant feedback.Continuously deploying to test servers tests deploy mechanism severalhundred times per release.Always ready to push new release into UATTest Driven DevelopmentContinuous Responsibility by DevelopersSustainable Quality
Good ReadingContinuous Delivery by Jez Humble & Dave Farleyhttp://www.amazon.com/dp/0321601912?tag=contindelive-20
Thats it!Feedback & Any questions you forgot to ask?http://continuous-delivery-and-more.blogspot.se