Agile ManifestoIndividuals and interactions over processes and toolsWorking software over comprehensive documentationCustomer collaboration over contract negotiationResponding to change over following a planThat is, while there is value in the items on the right, wevalue the items on the left more. http://agilemanifesto.org
Iterations Sprint 4Change Sprint 3 Sprint 2 Less time and less change Less area = Less hazard Sprint 1 Time
Iterations• Less hazard per deploy• “Production” deployments are routine• Sprints are a series of micro-deadlines
Iterations• Less hazard per deploy• “Production” deployments are routine• Sprints are a series of micro-deadlines still has the word “dead”
What if...Change Release features individually as soon as they are ready. Lowest level of hazard Time
Continuous Delivery• Release features as soon as they are ready• No prescribed deadlines• Remove stigma from releasing to production (because everyone has to release often)
What does “Ready” Mean?• Does it pass CI?• Approved by Customer?• SQA?• Smoke Testing?
What does “Ready” Mean? Depends on the team’s risk threshold... Green CI Approval SQA Smoke TestFaster SlowerRisker Safer
CD Challenges?✓Determine Risk• Project Management• Technical Challenges
Kanban Intro• Signboard• Consisting of bins w/ two wells• Pull-based
Kanban Metrics?• No time-boxed development• No estimation• Velocity is replaced by cycle time (e.g. takes 2 days to deploy a card)• Throughput is development efﬁciency (e.g. we are moving 5 cards a week)
Little’s LawFor a queueing system in steady state, the averagelength of the queue is equivalent to the averagearrival rate multiplied by the average waiting time. L = λW - or - WIP (L)Cycle Time (W) = Throughput (λ)
Decrease Cycle Time• Less cycle time means more features out faster!• One way is to increase throughput• Another is to decrease WIP
Decrease Cycle Time• Less cycle time means more features out faster!• One way is to increase throughput• Another is to decrease WIP• We aim for 1.5-ish WIP cards per pair• http://www.limitedwipsociety.org
Retrospective• Weekly retrospective• Candid review of week• What did we do well, not so well, what should we try to improve on
CD Challenges?✓Determine Risk✓Project Management• Technical Challenges
Code Management• Twelve-Factor - One codebase (multiple is a system and not called an “app”)• (Environmental) Feature Toggles• Topic Branches
Continuous Integration• One integrated branch of code (to test and deploy)• Consensus and experience for feature toggles over complicated git strategies• http://www.infoq.com/interviews/jez- humble-martin-fowler-cd
Feature Toggle Challenges• Different toggle states per bin• “Pure”, unobtrusive feature toggles• Database migrations?
Env. Feature Toggles• Part of the conﬁg (twelve factor)• Should be expressed as env vars code_time.finally!
Dev/Prod Parity• Minimize Difference• Use the same stack locally that is used in development.• Persistence / backend services -- databases, queues, caching servers• Can be a challenge (e.g. Amazon AWS)
Brian Kaneybrian@vermonster.com“bkaney”, @bkaney, etc.Thanks!vermo nster