Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Designing for Continuous Delivery

Avatar for ivargrimstad ivargrimstad
November 26, 2013

Designing for Continuous Delivery

Talk from JDays 2013

Avatar for ivargrimstad

ivargrimstad

November 26, 2013

More Decks by ivargrimstad

Other Decks in Programming

Transcript

  1. @ivar_grimstad • The Concept of Continuous Delivery • Designing for

    Continuous Delivery – Techniques – Demo • Summary Contents jDays 2013
  2. @ivar_grimstad Agile Manifesto jDays 2013 ! ! Individuals and interactions

    over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
  3. @ivar_grimstad Principles behind the Agile Manifesto jDays 2013 Welcome changing

    requirements, even late in development. Agile processes harness change for the customer's competitive advantage. ! Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. ! Business people and developers must work together daily throughout the project. ! Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. ! The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. ! Working software is the primary measure of progress. ! Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. ! ! Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  4. @ivar_grimstad Continuous Delivery jDays 2013 A pattern language used in

    software development to automate and improve the process of software delivery
  5. @ivar_grimstad • Every change should trigger the feedback process •

    Fast Feedback • Act on the Feedback Continuous Delivery jDays 2013
  6. @ivar_grimstad • Build Binaries Once • One Process Deploy •

    Test Deployments • Flow • Fail -> Stop the Line The Deployment Pipeline jDays 2013
  7. @ivar_grimstad • Two identical environments • New version running alongside

    existing • Switch when ready Blue/Green Deployments jDays 2013
  8. @ivar_grimstad Branch by Abstraction jDays 2013 A pattern for making

    large-scale changes to your application incrementally on mainline
  9. @ivar_grimstad 1. Identify Abstraction 2. Extract Interface 3. Implement Alternative

    4. Switch Implementation 5. Remove Original implementation 6. (optional) Remove Interface Branch by Abstraction - steps jDays 2013
  10. @ivar_grimstad 1. Identify Abstraction 2. Extract Interface 3. Implement Alternative

    4. Switch Implementation 5. Remove Original implementation 6. (optional) Remove Interface Branch by Abstraction - steps jDays 2013
  11. @ivar_grimstad 1. Identify Abstraction 2. Extract Interface 3. Implement Alternative

    4. Switch Implementation 5. Remove Original implementation 6. (optional) Remove Interface Branch by Abstraction - steps jDays 2013
  12. @ivar_grimstad 1. Identify Abstraction 2. Extract Interface 3. Implement Alternative

    4. Switch Implementation 5. Remove Original implementation 6. (optional) Remove Interface Branch by Abstraction - steps jDays 2013
  13. @ivar_grimstad 1. Identify Abstraction 2. Extract Interface 3. Implement Alternative

    4. Switch Implementation 5. Remove Original implementation 6. (optional) Remove Interface Branch by Abstraction - steps jDays 2013
  14. @ivar_grimstad 1. Identify Abstraction 2. Extract Interface 3. Implement Alternative

    4. Switch Implementation 5. Remove Original implementation 6. (optional) Remove Interface Branch by Abstraction - steps jDays 2013
  15. @ivar_grimstad 1. Identify Abstraction 2. Extract Interface 3. Implement Alternative

    4. Switch Implementation 5. Remove Original implementation 6. (optional) Remove Interface Branch by Abstraction - steps jDays 2013
  16. @ivar_grimstad 1. Identify Abstraction 2. Extract Interface 3. Implement Alternative

    4. Switch Implementation 5. Remove Original implementation 6. (optional) Remove Interface Branch by Abstraction - recap jDays 2013
  17. @ivar_grimstad • Blue/Green Deployments • Canary Releasing • Feature Toggles

    • Branch by Abstraction Summary of Techniques jDays 2013 Environment Code
  18. @ivar_grimstad • Consider multiple environments • Branch by Abstraction is

    a powerful technique • Identify abstractions as early as possible • Extract interfaces where appropriate Summary jDays 2013