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

Don't Fear the Walking Dead - How to get rid of...

Don't Fear the Walking Dead - How to get rid of a monolith

Sebastian Heuer

May 10, 2016
Tweet

More Decks by Sebastian Heuer

Other Decks in Technology

Transcript

  1. How we started • built on top of a standard

    e-commerce platform • a lot of custom code to support a wide combination of product options Feature X Feature Y Feature Z Core Code Customization
  2. The challenges of a growing business • serious performance issues

    • own developers don’t feel comfortable with the code • adding individual features is too complex • upgrading is hard
  3. What part of the software causes the highest amount of

    pain? • category pages • product detail pages
  4. Webserver Key-Value Storage Search FURY Frontend FURY Backend Legacy RDBMS

    Legacy System Session Storage FURY Requests 200 OK
  5. Webserver Key-Value Storage Search FURY Frontend FURY Backend Legacy RDBMS

    Legacy System Session Storage Requests to Legacy System 404 NOT FOUND
  6. Webserver Key-Value Storage Search FURY Frontend FURY Backend Legacy RDBMS

    Legacy System Session Storage Requests to Legacy System 404 NOT FOUND 200 OK
  7. Learnings • we have full responsibility now • no framework

    needed • no relational database needed
  8. Goods and Bads • fully object-oriented • easy refactoring thanks

    to 100% code coverage • not enough automated acceptance tests • dependencies to legacy software (database changes, API calls)
  9. Webserver (Router) Webserver FURY Frontend Server A K/V Storage Search

    FURY Backend Webserver FURY Frontend Server B K/V Storage Search FURY Backend
  10. Webserver (Router) Webserver FURY Frontend Server A K/V Storage Search

    FURY Backend Webserver FURY Frontend Server B K/V Storage Search FURY Backend active = A
  11. Webserver (Router) Webserver FURY Frontend Server A K/V Storage Search

    FURY Backend Webserver FURY Frontend Server B K/V Storage Search FURY Backend active = B
  12. RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage

    Search FURY Backend Webserver (Router) Build Server Deploy Code active = B
  13. RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage

    Search FURY Backend Webserver (Router) Build Server Deploy Code Collect & Export active = B
  14. RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage

    Search FURY Backend Webserver (Router) Build Server Deploy Code Collect & Export Smoke Tests active = B
  15. RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage

    Search FURY Backend Webserver (Router) Build Server Deploy Code Collect & Export Smoke Tests Switch to A active = A
  16. RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage

    Search FURY Backend active = B Webserver (Router) Build Server Deploy Code Collect & Export
  17. What next? • party hard! • identify the next pain

    points we want to work on • replace the next parts of the legacy system with new, self-contained components / services