Welcome to Railway Launch Week 01. The theme of this week is Scale. Throughout the week we’ll be dropping some amazing new features to help your business and applications scale to millions of users.
If this is your first time hearing about us, we’re an infrastructure company that provides instant application deployments to developers.
Failtown. Population: Us
“In summary, this is fundamentally a bad idea. So, do you want to invest?”
This was my pitch to investors in 2020.
We wanted to rethink the entire build, deploy, and observability stack for the modern web. At a fundamental level, we knew the current generation of application development tools wasn’t going to let developers ship the next generation of applications. Given how fragmented the landscape was, we believed we had an opportunity to make the experience an order of magnitude better.
We wanted to build the future of software development where we wouldn’t end up in a DevOps pit, stuck in an endless cycle of gluing config together, forever playing YAML battleship with CI.
So we got started. We shipped the original version of Railway with just databases in 2021. Later that year, we added the ability to deploy applications and web servers. By year end, we’d scaled to 100k+ users.
But as we scaled, things started to creak and crack. With every new issue, self doubt slowly crept in.
We believed our solutions would scale — but what if they didn’t? And even if they did, could we scale our internal team operations around them? We started wondering if the status quo was the status quo for a reason. What if Kubernetes WAS the solution we needed all along?
Then we flinched. Or more accurately, I flinched.
We spent almost all of 2022 trying to build “Railway on Kubernetes.” We already had an experience we knew users loved, so we tried to retrofit it onto the existing off-the-shelf technology. The “industry standard.” The stable bet.
The result was disastrous. It was overly complex. It was brittle. It never even made it into production. It burned out the engineer most passionate about the transition and almost killed the company. A total and unequivocal failure.
During 2022, we didn’t ship a single infrastructure-level feature. Nada. Zip. Zilch. We were too busy discussing what the “best representation of a Project/Environment/Service” would look like.
The 4 stages of Team Development: “Storming, norming, conforming, underperforming”
By the end of 2022, needless to say, we were feeling the pain. Eye popping user growth combined with our failure to scale our infra were threatening to knock our train off the rails.
New Year, New Us
January to March was a blur. Since our inception we’ve been experiencing 20%+ month-over-month growth, and these months were no exception. We added 100K+ new users with just a team of 12. The only way to describe it was “like that one scene from Silicon Valley where they struggle to keep the servers online during the livestream”.
Fun? A little. Sustainable? Absolutely not. And by late March, we very much felt that.
So we kicked off a War Room. We pulled in the entire company and we listed everything that wasn’t working. We signed our names beside the items we thought were going to kill us, sorted them by severity, and flew to Southeast Asia to spend a week hashing out a plan.
By April, that plan was crystal clear: we had a 6-month runbook to take us from where we were to where we needed to be. We looked at each other, took a deep breath, and got after it.
We spent that whole month fixing everything that would get in our way. “Clear the table, and then we will eat”, to quote one of our engineers. We scaled our logging/metrics infrastructure, resolved all our DataDog errors, and got to “PagerDuty zero” (or as close as you can really get on that one at <1x/wk).
In May, we shipped our first two infrastructure features in over a year: an eBPF/Wireguard IPv6 mesh network and Horizontal Scaling. Progress!
In June, our new pricing went out to fix longstanding issues with abusers/fraudsters/cryptominers/etc. With this, we had our first real breath of fresh air in six months. We’d made great progress. There was still tons left to do, but now, instead of terrified, we were excited! We saw the light at the end of the tunnel, so we did what any sane and rational group of individuals would do in our scenario — we doubled down. We said to ourselves, “What if we did a launch week?”
It was totally insane. Three months earlier, everything was totally on fire. The e-ink wasn’t even dry on what we’d just shipped, and there was still another quarter of stuff ahead of us. But we wanted this, bad. And so we set an audacious goal not only to ship everything we wanted on that list from three months ago, but to do it with style, and write about it.
And so we ran it back — this time, harder, better, faster, stronger. Cronjobs, Changesets, Global Edge Network, Volumes, Logs V2, Metrics V2, and more! The last three months things were flying off the shelves.
And finally, we got there; regions, our white whale. Our most requested feature. The one we wanted to build for the past 2 years. Ding. Your train has arrived.
They say the day you delete all the Kubernetes code from your codebase is the day you truly start living
Welcome to V2
So that’s the story of our last nine months. It was painful, it was messy, but we couldn’t be happier with where we are as a result. Our platform is rock solid, and feature complete!
What that means is you, our beloved users, can now ship literally anything on the platform. And we’re gonna show you how.
Each day this week, a Railway Engineer will be showing you what we’ve built, why we’ve built it, and how we built it to help you scale to millions of users around the world.
We’re here to make sure that nobody else has to go through the same pain we faced.
This is our vision for infrastructure. No more flinching, just full steam ahead.
Now without further adieu: Welcome to Launch Week!
Today is Day 1 of Launch Week. Head over to the Launch Week landing page to learn more!