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 zombie

together with Sebastian Thoß at code.talks 2016

Avatar for Sebastian Heuer

Sebastian Heuer

September 30, 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. Next steps • open-source our CQRS RESTful Framework • replace

    the next parts of the legacy system with new, self-contained components / services
  18. "one hundred fifty-seven quinvigintillion, seven hundred eighty-six quattuorvigintillion, six hundred

    fifty-seven trevigintillion, seven hundred forty-seven duovigintillion, three hundred forty unvigintillion, one hundred eighty-six vigintillion, (…) nine hundred forty-five quintillion, eight hundred twenty-eight quadrillion, two hundred seventy trillion, eighty billion, …"