The Boring Technology Behind Our Scaling Strategy
Why we chose a monolithic worker architecture to handle millions of jobs.
Andreas Hatlem
Author
In a world of microservices and Kubernetes complexity, we made a controversial choice for our background worker: we made it boring. Extremely boring.
The "Reliable Monolith" Approach
Our worker service handles millions of jobs—scheduled emails, reputation checks, warmup ramps—but it runs as a single, optimized Node.js process. Why? Because complexity breeds failure.
We use a robust "tick" system that wakes up every minute to process scheduled jobs. It’s simple, but it scales. If we ever need to go bigger, we have Redis locking ready to go for horizontal scaling, but honestly, a single optimized process can handle a surprising amount of load.
Sleep Better at Night
We designed the system to be crash-resistant. If a job fails, it retries with exponential backoff. If the worker restarts, it picks up exactly where it left off. We built this so we (and you) can sleep at night, knowing that your 2 AM campaign will go out exactly at 2 AM.
Ready to improve your email?
Start sending beautiful, reliable emails with GetMailer.