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

BENEVOL 2016 - Safer Software Upgrades With Continuous Deployment and Model Driven Development

BENEVOL 2016 - Safer Software Upgrades With Continuous Deployment and Model Driven Development

Efficient and seamless upgrades will enable Continuous Deployment. Doing upgrades often makes the upgrade smaller and easier, which will lead to safer upgrades. Model-Driven Development leads to higher abstraction, which will lead to safer upgrades, because more is automated.

This was presented at Benevol (http://benevol2016.org/)

Michiel Overeem

December 08, 2016
Tweet

More Decks by Michiel Overeem

Other Decks in Technology

Transcript

  1. Safer Software Upgrades With Continuous
    Deployment and Model Driven Development
    Michiel Overeem, AFAS Software

    View Slide

  2. Current state of our ERP product
     Windows application, Web capabilities built on top
     MS SQL as datastore
     4 a 5 upgrades a year
     Patches on demand
     Upgrades have downtime

    View Slide

  3. Current state of our ERP product
     Windows application, Web capabilities built on top
     MS SQL as datastore
     4 a 5 upgrades a year
     Patches on demand
     Upgrades have downtime
    Cloud first

    View Slide

  4. Current state of our ERP product
     Windows application, Web capabilities built on top
     MS SQL as datastore
     4 a 5 upgrades a year
     Patches on demand
     Upgrades have downtime
    Model driven

    View Slide

  5. How to keep Profit NEXT running
    while everything changes?
    Enterprise Application Software
    in a
    model-driven, cloud-based platform

    View Slide

  6. Application
    (code + data)
    Application
    (code + data)
    model
    model
    Cloud manager
    model
    generator
    deployer
    Application
    (code + data)
    model
    model
    model
    model
    model
    Application
    (code + data)
    Application
    (code + data)
    Application
    (code + data)
    Application
    (code + data)
    Application
    (code + data)
    Anatomy of Profit NEXT
    Wait, should we
    generate or
    interpret this
    model?

    View Slide

  7. Model Modelv2
    Application Applicationv2
    Evolved into
    Translated into
    Translated into
    Deployed to Upgraded on

    View Slide

  8. Tabel met resultaten
    32 papers, 124 opinions, 12 quality characteristics
    M. Overeem, S. Jansen, An Exploration of the ‘It’ in ‘It Depends’: Generative versus Interpretive MDD, MODELSWARD 2017
    But meta-model,
    architecture, platform
    play a role!

    View Slide

  9. Model Modelv2
    Application
    Evolved into
    Translated into
    Translated into
    Deployed to Upgraded on
    M Mv2
    Yoder, J. W., & Johnson, R.
    The Adaptive Object-Model Architectural Style.
    WICSA3 ’02
    improved turn-around times &
    process sharing (multi-tenancy)

    View Slide

  10. What about the data?

    View Slide

  11. Model Modelv2
    Application
    Data
    Applicationv2
    Datav2
    Evolved into
    Translated into
    Stores data Stores data
    Is converted to
    Translated into

    View Slide

  12. View Slide

  13. Event sourcing explained
    accountId Balance owner
    1234567 0 Michiel
    Current view only Event stream
    Event
    BankAccountCreated
    (accountId: 1234567, owner: Michiel);
    DepositPerformed
    (accountId : 1234567, amount: 100,
    balance: 100);
    WithdrawalPerformed
    (accountId: 1234567, amount: 50,
    balance: 50);
    OwnerChanged
    (accountId: 1234567, newOwner:
    Marten);
    accountId Balance owner
    1234567 50 Marten

    View Slide

  14. Streams in a store
    Store
    Backaccount Stream #1234567
    BankAccountCreated
    Backaccount Stream #7654321
    DepositPerformed WithdrawalPerformed
    BankAccountCreated DepositPerformed DepositPerformed

    View Slide

  15. Challenges for Profit Next
    • Much more data than traditional current view.
    • No standardized language (like SQL) that helps
    in expressing transformations.
    • Data changes cannot be scheduled, zero-
    downtime is needed.

    View Slide

  16. Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Executed by
    Lazy transformation
    Upcasting
    Multiple versions
    Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Executed by
    Executed by
    Lazy transformation
    Upcasting
    In place
    transfor-
    mation
    Multiple versions
    Copy and
    transfor-
    mation
    Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Deployed with
    Executed by
    Executed by
    Data upgrade
    Application upgrade
    Lazy transformation
    Upcasting
    In place
    transfor-
    mation
    Multiple versions
    Copy and
    transfor-
    mation
    Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Big Flip
    Rolling
    Upgrade
    Blue-Green
    Combined with
    Deployed with
    Executed by
    Executed by
    Data upgrade
    Application upgrade
    Lazy transformation
    Upcasting
    In place
    transfor-
    mation
    Multiple versions
    Copy and
    transfor-
    mation
    Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Big Flip
    Rolling
    Upgrade
    Blue-Green
    Expand-
    Contract
    Blue-
    Green
    Deployed with
    1. Operations to express data conversion,
    categorized on single versus multiple
    stream.
    2. Techniques that can execute the single-
    stream-operations.
    3. Techniques that can execute the
    multiple-stream-operations.
    4. Strategies to deploy the upgraded
    application.
    5. Strategies to execute the data
    conversion.
    M. Overeem, M. Spoor, S. Jansen, The Dark Side of Event Sourcing: Managing Data Conversion, SANER 2017

    View Slide

  17. Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Executed by
    Lazy transformation
    Upcasting
    Multiple versions
    Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Executed by
    Executed by
    Lazy transformation
    Upcasting
    In place
    transfor-
    mation
    Multiple versions
    Copy and
    transfor-
    mation
    Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Deployed with
    Executed by
    Executed by
    Data upgrade
    Application upgrade
    Lazy transformation
    Upcasting
    In place
    transfor-
    mation
    Multiple versions
    Copy and
    transfor-
    mation
    Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Big Flip
    Rolling
    Upgrade
    Blue-Green
    Combined with
    Deployed with
    Executed by
    Executed by
    Data upgrade
    Application upgrade
    Lazy transformation
    Upcasting
    In place
    transfor-
    mation
    Multiple versions
    Copy and
    transfor-
    mation
    Basic &
    Complex
    Event
    Basic &
    Complex
    Stream
    Basic
    Store
    Complex
    Store
    Big Flip
    Rolling
    Upgrade
    Blue-Green
    Expand-
    Contract
    Blue-
    Green
    Deployed with
    1. Operations to express data conversion,
    categorized on single versus multiple
    stream.
    2. Techniques that can execute the single-
    stream-operations.
    3. Techniques that can execute the
    multiple-stream-operations.
    4. Strategies to deploy the upgraded
    application.
    5. Strategies to execute the data
    conversion.
    M. Overeem, M. Spoor, S. Jansen, The Dark Side of Event Sourcing: Managing Data Conversion, SANER 2017
    Switch the upgrade strategy
    (run-time versus deploy-time
    conversion) on the
    operations as needed.

    View Slide

  18. Model Modelv2
    Application
    Data
    Applicationv2
    Datav2
    Evolved into
    Translated into
    Stores data Stores data
    Is upgraded to
    Is converted to
    Translated into
    M Mv2
    Can we use the model
    diff for both application
    upgrade as data
    conversion?

    View Slide

  19. Model Modelv2
    Application
    Data
    Applicationv2
    Datav2
    Evolved into
    Translated into
    Stores data Stores data
    Is upgraded to
    Is converted to
    Translated into
    M Mv2
    How to garantuee
    safety on updating the
    interpreted model?

    View Slide

  20. Model Modelv2
    Application
    Data
    Applicationv2
    Datav2
    Evolved into
    Translated into
    Stores data Stores data
    Is upgraded to
    Is converted to
    Translated into
    M Mv2
    Can we use the same
    techniques for changes
    originated in the
    platform

    View Slide

  21. Safer upgrades with
    Continues Deployment (efficient, seamless)
    and
    Model-Driven Deployment (abstraction)
    Michiel Overeem
    [email protected]
    @michielovereem

    View Slide