Working as a back-end developer for a cloud-based software company about to enter the “blitz growth” phase is an exciting challenge. We’re adding new enterprise customers every day, and most of them come with complex requirements and huge piles of data. It forces you to ask questions like:
How much faster can we make our guest cache and host cache download times?
The answer: eight times faster, on average. We also sped up the sign-in cache by 64%.
As we onboard more users, our Dev Team is constantly working to make sure our platform is faster, more secure and more reliable than it currently needs to be. Optimizing our system to stay ahead of those demands requires some foresight — kind of like buying a new aquarium before your pet piranha outgrows it. And of course, because we are always on-line, we make these improvements on the fly.
The last time our CTO, Cameron Wiebe, called us together to speed up the system, I thought of two ways to improve our cache strategy (for non-developers, a “cache” is a part of the system that stores data in order to deliver it somewhere else when it’s requested later). These cache strategy adjustments dramatically reduced the amount of data going back and forth between Traction Guest and the iPads. For users, this reduced wait times and data usage.
First, I realized that the system was returning “empty” information to the iPads, needlessly filling the pipeline with useless data. For instance, if a guest decided not to enter a drink preference, the system was still returning that non-decision to the iPads. It was a waste of bandwidth, so I modified the system to only return actual information to the iPads. That adjustment significantly sped up the process.
Secondly, every day we were downloading the last 1000 sign-ins from the server’s visitor cache to the iPads. It turns out that it’s much more efficient to set up users to download cached sign-ins by setting a date-range instead of an absolute number. Loading the visitor cache this way makes the system more flexible for administrators and pushes less data between the server and the iPads.
Another developer, Nemanja, made the third adjustment. He decided to break the cache into smaller pieces before saving it to the iPads. Storing the cache this way gives users access to the same information while taking up less space.
In the midst of such massive growth, it can be tempting to let your attention wander to all the exciting new features in various stages of development. While they are important, sustainable platform development is all about smart growth. That means making sure that the foundation is sound before worrying about doors and windows.
It’s a never-ending job; as long as your piranha keeps growing, you’re always going to need another tank.
Written by Danillo Souza, Developer at Traction Guest.