Babette Wagner

How to Destroy a Monolith?

How do you decommission a 500,000-line monolith with zero downtime? It starts with migrating the data, not refactoring the code.

How to Destroy a Monolith?
#1about 2 minutes

The challenge of a high-traffic monolithic system

The system handles user flows for major brands with one million daily sessions, managing user data and provisioning it to partners.

#2about 3 minutes

Why the monolith was difficult to maintain

The application's 500,000 lines of code, heavily customized frameworks, and data center limitations made even small changes disproportionately difficult.

#3about 2 minutes

Why the code-first refactoring approach failed

An initial attempt at incremental refactoring and service extraction failed due to tight coupling with the legacy code and a complex data model.

#4about 3 minutes

Adopting a data-first migration strategy

The successful strategy involved migrating data to a new location first, which enabled rebuilding components and drastically simplifying the data model.

#5about 3 minutes

Implementing event-driven data synchronization with AWS

An event-driven pattern using AWS SQS and Lambda was created to sync every data change from the old system to the new database in parallel.

#6about 1 minute

Replacing user flows with a SaaS solution

Instead of rebuilding authentication and authorization, a software as a service (SaaS) solution like Ory was used to leverage expert knowledge and accelerate development.

#7about 1 minute

Building and securing the new microservices architecture

Splitting the monolith into microservices allowed for mature, granular control over security, including authentication at the network, path, and field level.

#8about 2 minutes

Executing a zero-downtime switchover process

A phased rollout and parallel systems enabled a switch to the new registration and login flows with zero downtime, changing the single source of truth seamlessly.

#9about 3 minutes

Adopting a modern tech stack for faster development

Using a cloud-native framework like Quarkus and focusing on writing "glue code" between services drastically reduced implementation time and improved maintainability.

#10about 1 minute

Testing against production with continuous deployment

The team tests new components against production services in the pipeline, relying on extensive monitoring, alerting, and a fast, continuous deployment process.

#11about 2 minutes

Balancing consistency with rebuilding over refactoring

Maintaining a consistent tech stack is a trade-off with innovation, and for complex legacy systems, rebuilding components is often more effective than refactoring.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

Related Articles

View all articles
CH
Chris Heilmann
WWC24 Talk - Brenda Romero - Stay: Surviving and Thriving in Tech
Brenda Romero discusses her tech career journey, overcoming burnout, and inspiring future game developers at WWC24.Here is what she had to say in the video:Hey everyone! Thanks for joining us!Reflections on a Rough YearLast year, I gave a talk about ...
WWC24 Talk - Brenda Romero - Stay: Surviving and Thriving in Tech
CH
Chris Heilmann
All the videos of Halfstack London 2024!
Last month was Halfstack London, a conference about the web, JavaScript and half a dozen other things. We were there to deliver a talk, but also to record all the sessions and we're happy to share them with you. It took a bit as we had to wait for th...
All the videos of Halfstack London 2024!
AG
Andre Braun, GitLab
Now is the time for industrialized software development
Now is the time for industrialized software development Recently, I received a letter from my car’s manufacturer alerting me to a recall. They had discovered a defective part and wanted to replace it. It was easily fixed, and I might have forgotten a...
Now is the time for industrialized software development

From learning to earning

Jobs that call for the skills explored in this talk.

Java & Quarkus Architect

Java & Quarkus Architect

Paradigma Digital
Municipality of Valencia, Spain

Java
Azure
Kafka
Agile Methodologies
Continuous Integration
+1
Java & Quarkus Architect

Java & Quarkus Architect

Paradigma Digital
Municipality of Madrid, Spain

Java
Azure
Kafka
Agile Methodologies
Continuous Integration
+1