Decomposing PagerDuty's Monolith in Production
Haven't we all said at least once, "Burn it with fire! Let's start this whole thing from scratch!" We came pretty darn close to that.
Growing from a scrappy little startup to a large enterprise company is not trivial. This is especially true when you are making resilience, uptime, and availability the core of your business. At PagerDuty, we started out 10 years ago with a little Rails app that has seen its fair share of rewrites and refactoring, but like a lot of other organizations, we found ourselves with a Rails monolith on our hands. For the past couple of years, we've been carving out pieces of that monolith, but this year we migrated several key components of PagerDuty’s core product into distributed services.
Moving away from Rails and MySQL with zero downtime was a massive undertaking that required coordination across the engineering organization. However, it also gave us the opportunity to solve the problems that arise when a monolithic application starts to buckle under its own weight. In this talk, I will share lessons learned during our journey from monolith to services and the measurable improvements in our operational and development process.
More specifically, I'll discuss:
- The technical, product, and business challenges to breaking down a monolith
- How decomposing the monolith freed our thinking around data models and representing complex relationships
- How this project breathed new life into our sometimes overloaded database infrastructure
- The operational benefits of our new distributed service ecosystem in terms of down time, availaibility, and operational pain
- How much and in what way this project improved our development processes
The audience will learn how to leverage a distributed service architecture to lighten the load on existing databases and considerations for incrementally decomposing an application running in production. They’ll also learn to rethink data modeling, and how all of this can lead to a leaner, a more efficient, most importantly, a happier development process.