$30 off During Our Annual Pro Sale. View Details »

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

    View Slide

  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

    View Slide

  3. WHY DISTRIBUTED
    WHY DISTRIBUTED
    SYSTEMS?
    SYSTEMS?
    SCALABILITY
    SCALABILITY
    POLYGLOT
    POLYGLOT
    PARALLEL DEVELOPMENT
    PARALLEL DEVELOPMENT

    View Slide

  4. DISTRIBUTED
    DISTRIBUTED
    SYSTEMS
    SYSTEMS
    VS
    VS
    MICROSERVICES
    MICROSERVICES

    View Slide

  5. MICROSERVICES
    MICROSERVICES
    BRING
    BRING
    AUTONOMY
    AUTONOMY
    DYNAMIC SCALABILITY
    DYNAMIC SCALABILITY

    View Slide

  6. WHO NEEDS
    WHO NEEDS
    AUTONOMY?
    AUTONOMY?

    View Slide

  7. WHO NEEDS
    WHO NEEDS
    AUTONOMY?
    AUTONOMY?
    BUSINESS - FOR THE REAL AGILE
    BUSINESS - FOR THE REAL AGILE

    View Slide

  8. AUTONOMY IS HARD
    AUTONOMY IS HARD
    BECAUSE WE NEED TO COORDINATE
    BECAUSE WE NEED TO COORDINATE
    DEPENDENCIES
    DEPENDENCIES

    View Slide

  9. DISTRIBUTED SYSTEMS
    DISTRIBUTED SYSTEMS
    ALL ABOUT
    ALL ABOUT
    COMMUNICATION
    COMMUNICATION

    View Slide

  10. COORDINATION
    COORDINATION
    WITHOUT RELEASES
    WITHOUT RELEASES
    IS IT POSSIBLE?
    IS IT POSSIBLE?

    View Slide

  11. BACKWARD
    BACKWARD
    COMPATIBILITY
    COMPATIBILITY
    OVER
    OVER
    RELEASES
    RELEASES

    View Slide

  12. 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

    View Slide

  13. LET'S TALK ABOUT
    LET'S TALK ABOUT
    ROLLING UPDATES
    ROLLING UPDATES

    View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. HOW TO MIGRATE COLUMN TYPE?
    HOW TO MIGRATE COLUMN TYPE?
    DATE -> DATETIME
    DATE -> DATETIME

    View Slide

  25. 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

    View Slide

  26. 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

    View Slide

  27. 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

    View Slide

  28. LET'S TALK ABOUT
    LET'S TALK ABOUT
    CONTRACT TESTS
    CONTRACT TESTS

    View Slide

  29. 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"}

    View Slide

  30. View Slide

  31. TALK IS CHEAP ;-)
    TALK IS CHEAP ;-)
    LET'S SEE THE CODE
    LET'S SEE THE CODE

    View Slide

  32. QUESTIONS?
    QUESTIONS?

    View Slide

  33. THANKS
    THANKS

    View Slide