strangle the monolith
play

Strangle The Monolith A Data Driven Approach Amjad Sidqi, Associate - PowerPoint PPT Presentation

Strangle The Monolith A Data Driven Approach Amjad Sidqi, Associate Director | Pivotal Labs David Julia , Director | Pivotal Labs HARD TO CHANGE The Situation The Data Driven Strangler How to Get Started The Situation The Data Driven


  1. Strangle The Monolith A Data Driven Approach Amjad Sidqi, Associate Director | Pivotal Labs David Julia , Director | Pivotal Labs

  2. HARD TO CHANGE

  3. The Situation The Data Driven Strangler How to Get Started

  4. The Situation The Data Driven Strangler How to Get Started

  5. The Scenario Additional business features Cost Estimator for medical procedures Financial Penalties for inaccurate estimations

  6. Existing 3rd Party Web UI Architecture Monolith Source Source Source … Source System 1 System 2 System 3 System N

  7. Main Member-Facing Account Secure Messages Peeking Inside Web UI Customization the Monolith Member Liability Member Store Estimator SOAP ...etc. Service Component Source System Source System Source System … Source 1 2 3 System N

  8. Main Member-Facing Account Secure Messages Peeking Inside Web UI Customization the Monolith Member Liability Member Store Estimator SOAP ...etc. Service Component Source System Source System Source System … Source 1 2 3 System N

  9. Commit to the rewrite: A new API that returns the same results & supports “tiered” networks

  10. Initial approach The expert leads the way

  11. The Strangler Pattern: An Iterative Rewrite Benefits of a rewrite with reduced risk, faster time to value Does require investment in the approach. Hollow Inside of Strangler Fig Strangler Fig

  12. Uncertainty Complex flows create anxiety Fundamental assumptions were wrong

  13. Pssst… This isn’t working

  14. Strangler is great for decomposition. BUT We couldn’t know what logic to build in our new services.

  15. The Situation The Data Driven Strangler How to Get Started

  16. Enter The Data Driven Strangler + = ☺

  17. 3rd Party Web UI 3rd Party Web UI Pass-through & Log (in prod) Project X Monolith Collect Request/Response Data Source Source Source System 1 System 2 System 3 1 week

  18. It was like turning on the lights

  19. 3rd Party Web UI 3rd Party Web UI Log Both Results Project X Project X & Default Monolith Monolith Collect Request/Response Data Calculation Module for Both Defaulting → No Risk of Bad Result Source Source Source System 1 System 2 System 3 Source System Source System Source System 1 2 3 2 weeks

  20. Web App UI Automate Project X Analysis Monolith Calculation Module Log The Deltas! Source System Source System Source System 1 2 3 3 weeks

  21. We optimized for near real time feedback loops

  22. Let’s focus on what matters ...

  23. % Error Cases ✖ Avg. $ Diff ✖ Avg. Requests/Day = Possible Financial Impact/Day

  24. Web App UI Started to turn off path to old system for some Project X cases Monolith Calculation Module Starting to strangle stable cases Source System Source System Source System 1 2 3 5 weeks

  25. When Possible Financial Impact/Day < Cost to Maintain Legacy Then...

  26. 3rd Party Web UI Shut down the Legacy Project X Project X Calculation Path Calculation Module Only call into our new calculation module We’ve now strangled a large part of the monolith! Source System Source System Source System 1 2 3 13 weeks

  27. This made us feel great!

  28. The Situation The Data Driven Strangler How to Get Started

  29. Did any of that sound familiar? Are you thinking of a rewrite?

  30. Is legacy technology holding you back?

  31. Data-Driven Strangler is Not a Silver Bullet

  32. 1. Rewrite from scratch 2. Buy off the shelf Options 3. Do nothing 4. Containerize 5. Strangler Pattern

  33. Is it core to your business? Somewhere you want to differentiate? Build vs Buy → Build & Buy Will the buy option require a lot of customization-- building logic into the system? Often, the best option is both: Build the differentiating parts, “buy” commodity components (eg don’t build your own SendGrid, don’t build Stripe, don’t build your own cloud platform).

  34. ● No delivery pressures ● Low strategic importance When to ‘Do ● Stable enough if not touched nothing’? ● Opex costs under control

  35. Painful deployment Slow to augment process What about Containerizing? Doesn’t actually solve your problem Fragmented Technical Debt business rules Hard to test

  36. When should you rewrite? ● Original product was way off the mark, didn’t achieve goals (eg no user adoption). Maturity/Traction of product

  37. When should you rewrite? ● Original product was way off the mark, didn’t achieve goals (eg no user adoption). ● Original product does not have traction Maturity/Traction of product

  38. When should you rewrite? ● Original product was way off the mark, didn’t achieve goals (eg no user adoption). ● Original product does not have traction ● Significant deviation from original intent of product, going after a new market Maturity/Traction of product

  39. When should you rewrite? ● Original product was way off the mark, didn’t achieve goals (eg no user adoption). ● Original product does not have traction ● Significant deviation from original intent of product, going after a new market ● Technology holding you back (Mainframe, Visual Basic overly-customized SFDC or AEM) Maturity/Traction of product

  40. When should you rewrite? ● Original product was way off the mark, didn’t achieve goals (eg no user adoption). ● Original product does not have traction ● Significant deviation from original intent of product, going after a new market ● Technology holding you back (Mainframe, Visual Basic overly-customized SFDC or AEM) Maturity/Traction of product ● You can redefine the business process around the new system.

  41. ● Well established product with significant user base When to use the ● A significant risk to revenue streams Strangler Pattern ● Lots of necessary complexity in your existing product (eg complex regulatory compliance rules) ● You don’t know the business rules in the existing system

  42. Learnings/Takeaways ● This sounds technical but don’t compromise User Centred Design ● An opportunity to remove complexity Get laser focused on what really matters 80:20 ● ● Don’t rebuild like for like ● When rewriting take an iterative approach

  43. How do you do this in your organization? Start Small Put together a business case around a subset of the capabilities that will deliver value over a matter of months, not years. Frame it as a “no regrets” move with near term benefits. Quantify Outcomes Establish a baseline and measure against it (dev cycle time is good, but cost/revenue/acquisition metrics are even better) Use one win to build momentum for the next By starting small, you can prove out the process and build support to keep going. Once you have a first win, a technical foundation, and understanding of the system, you can “double down” and scale the effort.

  44. With the support of Pivotal!

  45. Get in Touch! We Love Feedback email: djulia@pivotal.io What would you like to Twitter: @DavidJulia hear more about? What questions do you still have? And… email: asidqi@pivotal.io We are hiring

Recommend


More recommend