Friday, October 23rd was setting up to be an awesome day. On Wednesday, we had just released our first Horizontal List component, on Thursday we dropped the news that every Adalo app now has its own API, and on Friday we were about to announce our new Sign In with Apple component (back to back to back days of feature drops!). That’s when everything stopped. Our first large outage was underway.
If you were on Adalo at the time, the experience was painful to say the least. Our editor was up and running so you could still make changes to your app, but as soon as you went to preview your app, none of the changes were there. Basically what was happening was that our servers couldn’t save everything fast enough and all of those changes ended up getting backed up into a queue. That doesn’t sound too awful, until you realize the queue was over 17,000 saves and growing.
After a few agonizing hours, we were able to increase our server capacity, and watch as the queue started decreasing before everything was back to normal. So what should have been a fun Friday night, ended up being a ball of stress for me. After hours of rolling restlessly I was finally able to fall asleep around 2am. But by 4am it was happening again! 😱 Luckily our dev team was already working on another fix to get everything back under control. Things have finally settled down since then, but we clearly have a lot of work ahead of us to make things better.
Before we jump into the rest of the story, I want to take a moment to thank our team for working hard on a Saturday morning to fix everything. Definitely a “proud founder” moment for me.
Scaling a startup is a challenge.
The nature of a startup is that you’re constantly in a resource, time, and prioritization battle. There’s always more you could be doing, but by definition you don’t have enough people and time to do everything. This inevitably leads to tradeoffs between short-term and long-term projects.
Think about it for a moment like you’re building a city. There are clear short-term things you need, like houses for people to sleep in and places for people to get food. But then there are long-term things you need to put in place for when your city is booming like roads, sewage, and other basic infrastructure. The challenge here is how to balance these. You could focus on building the best roads and infrastructure possible, but if you only have 100 people in your city, then focusing on just the infrastructure might in turn mean your city doesn’t have enough houses to attract any new residents. This is the same dilemma that all startups face at some point.
Up until this point, it had always been so much fun to see new amazing apps built on Adalo. And it was humbling to hear stories of people who quit their day jobs to work on their Adalo app. But it wasn’t until right then that I felt how much pressure there is on us. You all are pouring your souls into what you’re creating — whether that’s a side hustle, a full blown startup, an app your business will run on, or an app for a client counting on you to deliver. This realization really put things into perspective.
In my previous post, I wrote about Adalo’s focus on building a strong foundation for the future, including improving the performance of your apps & being able to quickly resolve major bugs. This experience has made that focus even more clear.
Prioritizing Scalability, Stability, & Performance
In the spirit of being more transparent, here’s our plan:
- First things first, we’re going to create a platform status page for Adalo. A lot of Adalo makers suggested we set up a page where anyone can quickly see what the status of our platform is. We hear you. Expect a V1 of this shortly.
- We’re going to improve the stability of our servers. This is the largest project from this list and it’s already underway. At a high level, we’re migrating our infrastructure from Heroku to AWS. Right now, it’s split between AWS and Heroku, but we’re going all in. AWS will allow us to autoscale our database and be better prepared to handle large and uneven loads. So no matter how large your Adalo app gets we’ll be able to handle it.
- We’re going to increase the performance of your Adalo apps with four specific projects. The first is what we’re calling Region Based Sharding. When we first started Adalo, we didn’t realize how quickly it would go global. So right now our servers are located in the US, but we’re going to be adding servers in different regions, and dynamically loading your app from whatever server is closest. Less distance = faster loading. The second and third projects directly address how fast the lists and images in your app load. Up until this point, we haven’t done much work to optimize those. That’s about to change. And finally, the fourth project, which has actually been underway for a while now, is moving a lot of logic that’s being processed from your users’ devices to our servers. This means that when your app has components or lists with complicated filtering, logic, or computations, all of that data will be ready to go before your app is even loaded.
- And finally, we’re hiring a Senior Infrastructure Engineer! If you or anyone you know is excited about the types of projects I just discussed, we would be beyond excited to talk with them. So please, please, please pass along our job listing.
Adalo isn’t just for MVPs.
When we started Adalo, our vision was to create a platform that could work for any idea—big or small. So if you’re just tinkering around with a little project to help out a few people, we wanted to enable you to quickly bring your vision to life at an affordable price. But if your little idea starts to blossom into something huge, we want Adalo to be able to grow with you.
Over the last few months, we’ve made big strides here. Our Component Marketplace, External Collections, Custom Actions, and Collection API were all designed for you to bring the power of other platforms into Adalo and allow you all the flexibility to make whatever app you were dreaming of. But we’re not even close to finished. Adalo apps need to perform just as well as apps built with code, and they each need to do that even when they are used by hundreds of thousands and even millions of people!
We're just getting started and now to infinity & beyond!