Experience of building high scalable product
Since 2010, LiftOff LLC has worked with over 45+ startups in going from idea stage to launching products, these 45+ products has been ‘Built with love, in India’. In this story, we would like to share the story of building FriendO — The Best Friend Game, Social Networking app for pre-teens that we built in 2016–17, that ranked #3 Free app on App Store > Social Networking category.
LiftOff’s product & engineering team built FriendO, an idea by Dov Engelberg, FriendO app provides an ability for the user to post a question about themselves to their friends network that builds a leaderboard of friends who get the answers right, this app was for pre-teens who are curious / know a lot about their friends — best actor, favourite color, food they dislike etc.,
FriendO app was built using React Native, powered by NodeJS (ExpressJS + MongoDB) backend was launched to App Store around April / May 2016, initial few months of FriendO usage was mostly by friends / family & launching them with promotion in the schools network (via internal boards etc.,), we iterated over the product in releasing enhancements & bug fixes over a period of 12–18 months, and started seeing some up tick in users after 16 months of going live.
FriendO started going viral & spread like a wild fire among pre-teens, and started seeing the 10X multiplier effect of daily users, that peaked at around 600,000 daily active users (DAU) with nearly 80K new users signing up every day to use the app & spending an average of 10m daily on the app.
We would not say the backend was built for scale from day #1, but it was architected in a manner that allowed us to refactor / optimise the APIs, data payload & make changes on App side to accommodate the same, below are some of the optimisation changes we did over few weeks to have a smooth experience for end consumers, while we worked several evenings / nights..
- Reduce the amount of payload returned in the API call, optimise to send only the required information
- Refactor / rewrote the random category question flow, as it had some costly read / write operations
- Reduce the write operations in read queries, so we could potential read it off from the secondary node
- Continuous query optimisation, by looking at slow performing queries in MongoDB
- We used New Relic, Crashlytics & logging system to understand the bottlenecks / pain points
- Upgrade the infrastructure on MongoDB & Heroku (from Hobby dyno to 16 dynos) — to more beefier hardware / specs as the traffic increased
- Being an early adaptor of React Native, we had to go through a lot of refactoring / optimisation on the app side
During the peak traffic, our API servers (running on Heroku) was handling 33K Requests Per Seconds with response time of 40ms response time, when over 7 million questions were asked every day by the 600K daily active users, at the MongoDB layer we were supporting 11K operations per second on M4 instance, Atlas MongoDB dedicated cluster, with CPU utilisation being under 40%.
As any other pre-teens apps, this moment of glory lasted a few months & users moved into another app, and usage dropped to normal levels. It was an amazing experience from product, engineering & business perspective for the team members at LiftOff.
Interested in building such high scalable backend platforms? do check our current open positions & apply. We would be starting a new product development every 3–6 months & you will have an opportunity to architect, design & build the entire product from scratch.