Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Don't Fear the Walking Dead - How to get rid of...
Search
Sebastian Heuer
September 30, 2016
Technology
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Don't Fear the Walking Dead - How to get rid of a zombie
together with Sebastian Thoß at code.talks 2016
Sebastian Heuer
September 30, 2016
More Decks by Sebastian Heuer
See All by Sebastian Heuer
The State of Asynchronous PHP
sebastianheuer
0
56
Typescript - A Marriage Counselor for Frontend and Backend
sebastianheuer
0
48
The Myth of Untestable Code
sebastianheuer
0
48
Deployment without the Hassle @ IPC 2016
sebastianheuer
1
65
99% is not enough
sebastianheuer
0
140
A Developer's Survival Guide for the Microservice Era
sebastianheuer
2
390
PHPUGHH - Deployment with OS Packages
sebastianheuer
0
91
How to manage your Project's Toolchain in 2016
sebastianheuer
1
65
Don't Fear the Walking Dead - How to get rid of a monolith
sebastianheuer
0
97
Other Decks in Technology
See All in Technology
markdown-poster Introduction
kazamori
0
400
サーバー常駐型の 簡易障害調査AI エージェントを作ってみた話
masayoshi
1
320
本番に近いテストをもっと手軽に - Postmanで広がるAPIテストの世界 / Expanding the World of API Testing with Postman
yokawasa
1
130
Cloudflare製品を活用した AIガバナンス実践入門 / AI governance with Cloudflare Service
delta_tech
1
120
Windows の互換機能 - 古いプログラムはなぜ動作できるのか
murachiakira
PRO
0
130
Introduction to Bill One Development Engineer
sansan33
PRO
0
480
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
510
AWSとGitHub Actionsの責任境界と 組織で安全に使用する取り組み
nealle
1
220
あなたの知らないバージョン命名規則
sat
PRO
2
850
カーネルまで探検して理解するふたつの自動計装
sumiyae
0
340
Claude Codeで開発以外の業務も爆速化しよう!
minorun365
PRO
11
9k
EMの役割で 変わったこと・変わらなかったこと
sansantech
PRO
1
190
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
310
Paper Plane (Part 1)
katiecoart
PRO
1
10k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
A Tale of Four Properties
chriscoyier
163
24k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
290
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Transcript
HOW TO GET RID OF A ZOMBIE DON’T
None
None
None
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
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
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
None
None
FURY Frontend Key-Value Storage getCategoryPage('hochzeit'); "<html><head>…</head><body>…</body></html>"
None
FURY Frontend Key-Value Storage ["SBU06HE","TEOD3HE","ANW04HD"] Search search("{'category':'hochzeit', 'filters':{}}"); getTiles(["SBU06HE","TEOD3HE","ANW04HD"]); ["<div
class="category-item">…</div>", …]
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 OK
Webserver Key-Value Storage Search FURY Frontend FURY Backend Legacy RDBMS
Legacy System Session Storage Requests to Legacy System 404 NOT FOUND
Webserver Key-Value Storage Search FURY Frontend FURY Backend Legacy RDBMS
Legacy System Session Storage Requests to Legacy System 404 NOT FOUND 200 OK
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 tests • dependencies to legacy software (database changes, API calls)
A/B Deployment
Webserver (Router) Webserver FURY Frontend Server A K/V Storage Search
FURY Backend Webserver FURY Frontend Server B K/V Storage Search FURY Backend
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
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
RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage
Search FURY Backend Webserver (Router) Build Server Deploy Code active = B
RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage
Search FURY Backend Webserver (Router) Build Server Deploy Code Collect & Export active = B
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
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
RDBMS Read Slave Webserver FURY Frontend Server A K/V Storage
Search FURY Backend active = B Webserver (Router) Build Server Deploy Code Collect & Export
What's next?
Client /product
Client /checkout/cart
Client /checkout/cart Cart Service
Client /checkout/cart Cart Service
11. Oktober 2016
Next steps • open-source our CQRS RESTful Framework • replace
the next parts of the legacy system with new, self-contained components / services
"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, …"
https://www.instagram.com/kartenmacherei/ Q&A https://www.facebook.com/kartenmacherei/ +49 40 468996861
[email protected]
http://www.kartenmacherei.de/recruiting