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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Sebastian Heuer
September 30, 2016
Technology
110
0
Share
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
44
Typescript - A Marriage Counselor for Frontend and Backend
sebastianheuer
0
47
The Myth of Untestable Code
sebastianheuer
0
39
Deployment without the Hassle @ IPC 2016
sebastianheuer
1
62
99% is not enough
sebastianheuer
0
130
A Developer's Survival Guide for the Microservice Era
sebastianheuer
2
390
PHPUGHH - Deployment with OS Packages
sebastianheuer
0
86
How to manage your Project's Toolchain in 2016
sebastianheuer
1
55
Don't Fear the Walking Dead - How to get rid of a monolith
sebastianheuer
0
85
Other Decks in Technology
See All in Technology
Kaggle未経験社員をメダリストに育てる「AIドラゴン桜」
lycorptech_jp
PRO
0
650
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
140
GitHub Copilot CLI の Rubber Duck 機能を使ってコーディングの品質をあげよう #techbaton_findy
stefafafan
2
1.2k
形式手法特論:公平性制約の位相的特徴づけ #kernelvm / Kernel VM Study Kansai 12th
ytaka23
1
570
GitHub Copilot のこれまでとこれから: From Copilot to Collaborative Agents
yuriemori
1
230
責任あるソフトウェアエンジニアリングの紹介4章・5章 / RSE_Ch4-5
ido_kara_deru
0
370
ルールやカスタム機能、どう使う?理想の出力を引き出すために今知りたいIBM Bob 5つの機能
muehara
0
120
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
データ分析基盤の信頼を支える視点と設計
yuki_saito
2
760
Kiro CLI v2.0.0がやってきた!
kentapapa
0
210
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
140
最低限これだけ押さえれ大丈夫_Claude Enterprise/Team企業展開ガバナンス入門
tkikuchi
1
500
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
160
Building an army of robots
kneath
306
46k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.5k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
370
Music & Morning Musume
bryan
47
7.2k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
180
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
520
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
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