Hey everyone, it’s been a couple of months since David shared our last post on performance, and I wanted to share an update on the progress we’ve made since that post.
Before saying much more, it’s important that you know that we still have a long way to go in terms of performance. We’d love to wave a magic wand to resolve the growing pains that come with a popular platform, but since we’re running short on those, we want to assure you that performance is something our team is actively addressing. Let me tell you what’s been happening behind the scenes at Adalo.
First, and most importantly, we worked hard to find the right hire to take Adalo’s infrastructure to the next level. We hired Colin O’Keeffe as our first Senior Infrastructure Engineer. Colin comes to us having previously worked on infrastructure at Basecamp, as well as in the Fintech industry in Europe. Colin hit the ground running on day 1, and we couldn’t be more excited to have him on the team!
However, hiring Colin wasn’t the only thing we’ve accomplished. Beyond that, we’ve been busy. Here are some of the other notable tasks we checked off our to-do lists:
- Increased available resources for our servers - We’ve experienced incredible growth this year and in the last few months especially, so to keep up with demand, we’ve increased our server capacity by over 50%.
- Autoscaling to handle the load - In addition to having more resources generally available to handle our growing community of makers, we have also implemented autoscaling. We experience quite a bit of variance in traffic throughout the week and during each day. Just like the name suggests, autoscaling allows us to automatically increase the amount of workers we’re using to have even more capacity at peak load times.
- Implementing automated alerts for when the system experiences stress - We’ve implemented an aggressive alerting system that notifies the team and me personally whenever the system experiences a peak load event. However, since we’ve implemented the autoscaling, we have not had to intervene when these alerts happen since the system automatically adds more resources on its own.
- Making better use of our resources - Colin has been extremely helpful in quickly identifying ways in which our infrastructure was not optimized and making the necessary changes, including the way in which we were establishing connections to our Redis database. We also identified a table that was not being auto vacuumed properly which was leading it to regularly run out of space.
- Fixing bugs and memory leaks affecting performance - We identified and fixed one memory leak and one particularly nasty bug that was affecting performance. The bug caused four network requests to be made for every character that was typed into any input field in an Adalo app. Now that it’s fixed, you should see more performant input fields.
- Implemented a status page - Though we have been investing an increasing amount in preventing issues from occurring in the first place, when they do happen, it’s important to have a clear and straightforward way to communicate with our community on what’s happening and when it will be resolved. We’ve launched adalo.com/status for just this purpose. Here you’ll find status updates regarding system outages, build issues, or major editor problems.
- Caching - In addition to making sure Adalo apps maintain their performance when we’ve got a lot of traffic, we’re also working on several projects to make sure that the baseline for Adalo apps is even faster. The first project to make it across the finish line in that regard is that we’re now using Fastly to cache apps so their initial load time is much quicker.
There’s still more to do 💪
I’m really proud of our team and the progress we’ve made in the last six weeks, but the reality is that we’re just getting started. Here are several of the projects we’re currently working on (in no particular order of importance):
- Migrating logic from your users’ devices to our servers - We’re working to migrate much of the application logic processing from your users’ devices to our servers. This means that your users will spend less time looking at loading screens and spend more time interacting with your app.
- Improving image load times - We know that images can make or break your application, and that’s why we are doing all that we can to ensure that when you use them, they load quickly.
- Optimizing API calls - We’re aware of current blocking API calls that contribute to slower load times, and we’re going to optimize these calls so they are no longer a problem.
- Migrating to AWS - It’s been apparent that for Adalo to be a global platform, we’ll need to enhance our infrastructure beyond what Heroku can provide. Think of servers located closer to where your users are, etc.
- Speed up list loading times - Lists are core to most of our user’s apps and we recognize that they can use a makeover. We’ll be creating benchmarks and measuring improvement to ensure that they load quickly and smoothly.
- Faster saving of new records - No one likes to wait after submitting a form or inputting some data. For that reason, we’ll be focusing on removing latency in those areas of Adalo apps.
As you can see, we’ve got our hands full. But as some would say, with a great platform comes great responsibility 😉 Hopefully you can see that we’re taking the responsibility seriously and are doing all that we can to provide the best no-code experience possible.
Thank you to all our makers who have helped us get this far. We appreciate your feedback and assistance. I’ll be back with another update in the new year to share the results of our next batch of improvements.
Director of Engineering, Adalo