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

Modernizing through evolution not revolution

Modernizing through evolution not revolution

Due to unavoidable compromises, over time, projects inevitably lean more towards growth and depth than general modernization, to the point that they become difficult to maintain. So, what happens when the bugs add up and the monster emerges? Refactor? Rewrite from scratch? The speaker shall expand and explain what to look out for, from both a technical and business perspective.

Presented at CFSummit 2022, Las Vegas, US

Guust Nieuwenhuis

October 10, 2022
Tweet

More Decks by Guust Nieuwenhuis

Other Decks in Technology

Transcript

  1. MODERNIZING THROUGH
    EVOLUTION NOT REVOLUTION


    GUUST NIEUWENHUIS

    View Slide

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

    View Slide

  3. MODERNIZING THROUGH
    EVOLUTION NOT REVOLUTION


    GUUST NIEUWENHUIS

    View Slide

  4. 10 YEARS
    Average software lifetime

    View Slide

  5. Spaghetti code


    Outdated framework


    Unsupported libraries


    Deprecated integrations


    No tests


    Not documented


    Difficult to develop


    Hard to maintain


    View Slide

  6. What’s next?

    View Slide

  7. View Slide

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

    View Slide

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

    View Slide

  10. A feeling isn’t sufficient


    Rewrite delays the release of the project


    More bugs and less functionality


    Expensive


    No guaranteed success


    View Slide

  11. So, what’s next?

    View Slide

  12. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  16. View Slide

  17. 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”

    View Slide

  18. 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”

    View Slide

  19. How?

    View Slide

  20. 1. Case

    View Slide

  21. 1. Case


    2. Boundary

    View Slide

  22. 1. Case


    2. Boundary


    3. Strategy

    View Slide

  23. 1. Case


    2. Boundary


    3. Strategy


    Bubble Context

    View Slide

  24. 1. Case


    2. Boundary


    3. Strategy


    Bubble Context

    View Slide

  25. 1. Case


    2. Boundary


    3. Strategy


    Bubble Context


    Anticorruption layer (ACL)

    View Slide

  26. 1. Case


    2. Boundary


    3. Strategy


    Bubble Context


    ACL Synchronisation

    View Slide

  27. 1. Case


    2. Boundary


    3. Strategy


    Event queue

    View Slide

  28. SAME HABITS, SAME MISTAKES!

    View Slide

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

    View Slide

  30. ONE MORE THING
    Steve Jobs


    Co-founder of Apple, Next and Pixar

    View Slide

  31. View Slide

  32. 3 applications


    Overlapping functionality


    Consolidate applications


    Minimum viable product (MVP)


    Won’t copy all functionality


    Business case drives rewrite!

    View Slide

  33. 3 applicaties


    Overlapping functionality


    Consolidate applications


    Minimum viable product (MVP)


    Won’t copy all functionality


    Business case drives rewrite!

    View Slide

  34. MODERNIZING THROUGH
    EVOLUTION NOT REVOLUTION


    [email protected]


    https://www.linkedin.com/in/guustnieuwenhuis

    View Slide

  35. View Slide