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

Autonomous deployments in modern distributed systems

Autonomous deployments in modern distributed systems

Jakub Kubryński

October 16, 2019
Tweet

More Decks by Jakub Kubryński

Other Decks in Programming

Transcript

  1. @jkubrynski @jkubrynski AUTONOMOUS AUTONOMOUS DEPLOYMENTS DEPLOYMENTS IN MODERN DISTRIBUTED SYSTEMS

    IN MODERN DISTRIBUTED SYSTEMS JAKUB KUBRYNSKI JAKUB KUBRYNSKI [email protected] / @jkubrynski [email protected] / @jkubrynski
  2. $ WHOAMI $ WHOAMI 15+ PROFESSIONAL EXPERIENCE 15+ PROFESSIONAL EXPERIENCE

    DEVSKILLER CO-FOUNDER DEVSKILLER CO-FOUNDER CONSULTANT & TRAINER CONSULTANT & TRAINER SPRING CLOUD CONTRACT CO-AUTHOR SPRING CLOUD CONTRACT CO-AUTHOR
  3. WHO NEEDS WHO NEEDS AUTONOMY? AUTONOMY? BUSINESS - FOR THE

    REAL AGILE BUSINESS - FOR THE REAL AGILE
  4. AUTONOMY IS HARD AUTONOMY IS HARD BECAUSE WE NEED TO

    COORDINATE BECAUSE WE NEED TO COORDINATE DEPENDENCIES DEPENDENCIES
  5. DEFERRED CHANGE DEFERRED CHANGE IT'S ABOUT SPLITTING ONE BREAKING IT'S

    ABOUT SPLITTING ONE BREAKING CHANGE INTO A SET OF BACKWARD CHANGE INTO A SET OF BACKWARD COMPATIBLE CHANGES COMPATIBLE CHANGES
  6. MIGRATION 1/2 MIGRATION 1/2 1. ADD 1. ADD datetime datetime

    COLUMN COLUMN 2. DEPLOY VERSION 2.0 2. DEPLOY VERSION 2.0 - READ FROM - READ FROM date date - WRITE TO - WRITE TO date+datetime date+datetime 3. MIGRATE DATA 3. MIGRATE DATA date => datetime date => datetime
  7. MIGRATION 2/2 MIGRATION 2/2 4. DEPLOY VERSION 3.0 4. DEPLOY

    VERSION 3.0 - READ FROM - READ FROM datetime datetime - WRITE TO - WRITE TO date+datetime date+datetime 5. DEPLOY VERSION 4.0 5. DEPLOY VERSION 4.0 - READ FROM - READ FROM datetime datetime - WRITE TO - WRITE TO datetime datetime 6. REMOVE COLUMN 6. REMOVE COLUMN date date
  8. DEFERRED CHANGES DEFERRED CHANGES IN THE API IN THE API

    Step Server Client 1 date date 2 date+datetime date 3 date+datetime datetime 4 datetime datetime
  9. CONTRACT CONTRACT Request ======= Method: GET URL: /courses/dna Headers: -

    Accept: application/json Response ======== Status: 200 OK Headers: - Content-Type: application/json Body: {"name":"DNA", "status":"ACTIVE"}
  10. TALK IS CHEAP ;-) TALK IS CHEAP ;-) LET'S SEE

    THE CODE LET'S SEE THE CODE