Slide 1

Slide 1 text

MODERNIZING THROUGH EVOLUTION NOT REVOLUTION GUUST NIEUWENHUIS

Slide 2

Slide 2 text

ABOUT ME Guust Nieuwenhuis Managing Partner @ We Are North Full Stack Web Wizard Masa CMS Born in The Netherlands Living in Belgium Soccer coach Mountainbiker

Slide 3

Slide 3 text

MODERNIZING THROUGH EVOLUTION NOT REVOLUTION GUUST NIEUWENHUIS

Slide 4

Slide 4 text

10 YEARS Average software lifetime

Slide 5

Slide 5 text

Spaghetti code Outdated framework Unsupported libraries Deprecated integrations No tests Not documented Difficult to develop Hard to maintain

Slide 6

Slide 6 text

What’s next?

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Flights booking engine Performance issues Decided to rewrite from the ground up Kept adding new functionality to the “old” engine Development of the “new” engine trying to catch up Financial disaster

Slide 9

Slide 9 text

REWRITE CODE FROM SCRATCH IS THE SINGLE WORST STRATEGIC MISTAKE THAT ANY SOFTWARE COMPANY CAN MAKE Joel Spolsky 
 Co-founder Trello and Stack Over fl ow

Slide 10

Slide 10 text

A feeling isn’t sufficient Rewrite delays the release of the project More bugs and less functionality Expensive No guaranteed success

Slide 11

Slide 11 text

So, what’s next?

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

12+ years old web application New separate API for mobile app New report builder module Integrated new module in old application Sharing the database Feature flags

Slide 14

Slide 14 text

12+ years old web application New separate API for mobile app New report builder module Integrated new module in old application Sharing the database Feature flags

Slide 15

Slide 15 text

12+ years old web application New separate API for mobile app New report builder module Integrated new module in old application Sharing the database Feature flags

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

25+ years old client-server app Need to move to “The Cloud” New module developed Domain Driven Design Microservices architecture Events between “old” and “new”

Slide 18

Slide 18 text

25+ years old client-server app Need to move to “The Cloud” New module developed Domain Driven Design Microservices architecture Events between “old” and “new”

Slide 19

Slide 19 text

How?

Slide 20

Slide 20 text

1. Case

Slide 21

Slide 21 text

1. Case 2. Boundary

Slide 22

Slide 22 text

1. Case 2. Boundary 3. Strategy

Slide 23

Slide 23 text

1. Case 2. Boundary 3. Strategy Bubble Context

Slide 24

Slide 24 text

1. Case 2. Boundary 3. Strategy Bubble Context

Slide 25

Slide 25 text

1. Case 2. Boundary 3. Strategy Bubble Context Anticorruption layer (ACL)

Slide 26

Slide 26 text

1. Case 2. Boundary 3. Strategy Bubble Context ACL Synchronisation

Slide 27

Slide 27 text

1. Case 2. Boundary 3. Strategy Event queue

Slide 28

Slide 28 text

SAME HABITS, SAME MISTAKES!

Slide 29

Slide 29 text

WANT TO READ MORE? Domain Driven Design Bounded Context Strangler Fig Pattern Anti Corruption Layer Eric Evans Martin Fowler Anti Patterns Event Driven Architecture Microservices Feature Flags

Slide 30

Slide 30 text

ONE MORE THING Steve Jobs Co-founder of Apple, Next and Pixar

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

3 applications Overlapping functionality Consolidate applications Minimum viable product (MVP) Won’t copy all functionality Business case drives rewrite!

Slide 33

Slide 33 text

3 applicaties Overlapping functionality Consolidate applications Minimum viable product (MVP) Won’t copy all functionality Business case drives rewrite!

Slide 34

Slide 34 text

MODERNIZING THROUGH EVOLUTION NOT REVOLUTION [email protected] https://www.linkedin.com/in/guustnieuwenhuis

Slide 35

Slide 35 text

No content