Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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?

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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!

Slide 9

Slide 9 text

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)

Slide 10

Slide 10 text

What about the data?

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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.

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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.

Slide 18

Slide 18 text

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?

Slide 19

Slide 19 text

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?

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Safer upgrades with Continues Deployment (efficient, seamless) and Model-Driven Deployment (abstraction) Michiel Overeem m.overeem@afas.nl @michielovereem