Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
HOW WE GET RID OF OUR MONOLITH
DON’T
How we started
• built on top of a standard e-commerce platform
• a lot of custom code to support a wide combination of pr...
The challenges of a growing business
• serious performance issues
• own developers don’t feel comfortable with the code
• ...
Finding a way out
You don’t have to replace everything at once!
What part of the software causes the highest amount of pain?
• category pages
• product detail pages
Planning
Current Setup
Legacy System
Session
Storage
RDBMS
Webserver
Idea
Legacy System
Session
Storage
RDBMS
Webserver New Software
FURY Frontend
Key-Value
Storage
getCategoryPage(341);
"<html><head>…</head><body>…</body></html>"
FURY Frontend
Key-Value
Storage
["SBU06HE","TEOD3HE","ANW04HD"]
Search
search("{'category':341, 'filters':{...}}");
getTil...
Webserver
Key-Value
Storage
Search
FURY Frontend FURY Backend
FURY Components
Webserver
Key-Value
Storage
Search
FURY Frontend FURY Backend
Legacy
RDBMS
Legacy System
Session
Storage
Collect & Export
Webserver
Key-Value
Storage
Search
FURY Frontend FURY Backend
Legacy
RDBMS
Legacy System
Session
Storage
FURY Requests
200...
Webserver
Key-Value
Storage
Search
FURY Frontend FURY Backend
Legacy
RDBMS
Legacy System
Session
Storage
Requests to Legac...
Webserver
Key-Value
Storage
Search
FURY Frontend FURY Backend
Legacy
RDBMS
Legacy System
Session
Storage
Requests to Legac...
Learnings
• We have full responsibility now
• No framework needed
• No relational database needed
Goods and Bads
• fully object-oriented
• easy refactoring thanks to 100% code coverage
• not enough automated acceptance t...
Deployment
Webserver (Router)
Webserver
FURY Frontend
Server A
K/V
Storage
Search
FURY Backend
Webserver
FURY Frontend
Server B
K/V
S...
Webserver (Router)
Webserver
FURY Frontend
Server A
K/V
Storage
Search
FURY Backend
Webserver
FURY Frontend
Server B
K/V
S...
Webserver (Router)
Webserver
FURY Frontend
Server A
K/V
Storage
Search
FURY Backend
Webserver
FURY Frontend
Server B
K/V
S...
RDBMS
Read
Slave
Webserver
FURY Frontend
Server A
K/V
Storage
Search
FURY Backend
Webserver (Router)
Build Server
Deploy C...
RDBMS
Read
Slave
Webserver
FURY Frontend
Server A
K/V
Storage
Search
FURY Backend
Webserver (Router)
Build Server
Deploy C...
RDBMS
Read
Slave
Webserver
FURY Frontend
Server A
K/V
Storage
Search
FURY Backend
Webserver (Router)
Build Server
Deploy C...
RDBMS
Read
Slave
Webserver
FURY Frontend
Server A
K/V
Storage
Search
FURY Backend
Webserver (Router)
Build Server
Deploy C...
RDBMS
Read
Slave
Webserver
FURY Frontend
Server A
K/V
Storage
Search
FURY Backend
active = B Webserver (Router)
Build Serv...
We are very close to launch!
What next?
• party hard!
• identify the next pain points we want to work on
• replace the next parts of the legacy system ...
https://www.instagram.com/kartenmacherei/
Q&A
https://www.facebook.com/kartenmacherei/ +49 40 468996861
jobs@kartenmachere...
Don't Fear the Walking Dead @ PHPUGHH
Don't Fear the Walking Dead @ PHPUGHH
Don't Fear the Walking Dead @ PHPUGHH
Don't Fear the Walking Dead @ PHPUGHH
Upcoming SlideShare
Loading in …5
×

Don't Fear the Walking Dead @ PHPUGHH

881 views

Published on

Legacy software can be like a zombie: it somehow still works, but nobody would consider it alive and well anymore and the thought of having to touch it makes you want to run away. So what can you do to get rid of it?

We are currently replacing our monolithic e-commerce platform with a shiny new custom-tailored solution and want to show you what we do and what we have already learned.

Published in: Software
  • Be the first to comment

Don't Fear the Walking Dead @ PHPUGHH

  1. 1. HOW WE GET RID OF OUR MONOLITH DON’T
  2. 2. 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
  3. 3. 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
  4. 4. Finding a way out
  5. 5. You don’t have to replace everything at once!
  6. 6. What part of the software causes the highest amount of pain? • category pages • product detail pages
  7. 7. Planning
  8. 8. Current Setup Legacy System Session Storage RDBMS Webserver
  9. 9. Idea Legacy System Session Storage RDBMS Webserver New Software
  10. 10. FURY Frontend Key-Value Storage getCategoryPage(341); "<html><head>…</head><body>…</body></html>"
  11. 11. FURY Frontend Key-Value Storage ["SBU06HE","TEOD3HE","ANW04HD"] Search search("{'category':341, 'filters':{...}}"); getTiles(["SBU06HE","TEOD3HE","ANW04HD"]); ["<div class="category-item">…</div>", …]
  12. 12. Webserver Key-Value Storage Search FURY Frontend FURY Backend FURY Components
  13. 13. Webserver Key-Value Storage Search FURY Frontend FURY Backend Legacy RDBMS Legacy System Session Storage Collect & Export
  14. 14. Webserver Key-Value Storage Search FURY Frontend FURY Backend Legacy RDBMS Legacy System Session Storage FURY Requests 200OK
  15. 15. Webserver Key-Value Storage Search FURY Frontend FURY Backend Legacy RDBMS Legacy System Session Storage Requests to Legacy System 404NOTFOUND
  16. 16. Webserver Key-Value Storage Search FURY Frontend FURY Backend Legacy RDBMS Legacy System Session Storage Requests to Legacy System 404NOTFOUND 200 OK
  17. 17. Learnings • We have full responsibility now • No framework needed • No relational database needed
  18. 18. 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)
  19. 19. Deployment
  20. 20. Webserver (Router) Webserver FURY Frontend Server A K/V Storage Search FURY Backend Webserver FURY Frontend Server B K/V Storage Search FURY Backend
  21. 21. 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
  22. 22. 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
  23. 23. RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage Search FURY Backend Webserver (Router) Build Server Deploy Code active = B
  24. 24. RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage Search FURY Backend Webserver (Router) Build Server Deploy Code Collect & Export active = B
  25. 25. 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
  26. 26. 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
  27. 27. RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage Search FURY Backend active = B Webserver (Router) Build Server Deploy Code Collect & Export
  28. 28. We are very close to launch!
  29. 29. 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
  30. 30. https://www.instagram.com/kartenmacherei/ Q&A https://www.facebook.com/kartenmacherei/ +49 40 468996861 jobs@kartenmacherei.de http://www.kartenmacherei.de/recruiting

×