Shipping a Replacement Architecture in Elixir
summary
A company replaces a Rails monolith with Elixir and Phoenix in about eight months with a three‑person core team, migrates from DynamoDB to Postgres (largest table ~9M rows, ~20M total) using Flow to parallelize the import into an hour, runs an event architecture on GenStage event bus, cuts EC2 instances from ~40 to 5, drops DB cost ~91%, drops p95 latency to ~30ms, ships ~2,000 tests (~70% coverage) and runs stably in production.
AI-written summary · about
chapters (37)
- 0:00Introduction
- 2:06We did a rewrite
- 2:20Software grows over time
- 2:50Key issues
- 4:11DynamoDB
- 5:26Rewrites
- 6:06Why Elixir
- 7:10The old system
- 10:23The system after shipping
- 11:46Results
- 15:43Tour
- 15:58Intermediary API
- 17:26How it works
- 18:07Encoding
- 18:49serialize
- 19:17umbrella wraps
- 19:33mono repo
- 20:02phoenix apps
- 21:26docker base workloads
- 22:39core business logic
- 23:47tests
- 24:06event system
- 24:22event bus
- 26:04consumer
- 27:14consumers
- 28:20moving records
- 28:32Flow
- 29:53Schemas
- 30:25Flow Code
- 32:05Dynamo to Postgres
- 32:21Parallel Processing
- 33:50Challenges
- 34:06Challenges Recap
- 37:10Takeaways
- 38:12Dont move databases at the same time
- 39:05Write code thats easy to delete
- 40:16Losing one customers data
related talks
27mScaling a Rails Monolith w/Event Driven Microservices
37mFrom the ground to the stars
49mElixir in an Enterprise Telecommunications Product
35mFrom Monolith to State-of-the-Art Banking
56mFrom Homogeneous Monolith to Heterogeneous Microservices Architecture
38mMaintaining highly distributed services with Erlang: 20y experiences in fintech
42mHow Rails fosters a diverse and competitive tech ecosystem in the era of big tech
15mMicroservices with Elixir
