Belly Senior Software Developer, Open Source Manager

Scaling Belly past a million users

Took the core Rails app from 300k to over a million users, and co-built the monitoring system for 4,000+ iPads living in coffee shops.

Ruby on Rails Scaling IoT Monitoring Startups
Scaling Belly past a million users

Belly was a loyalty program for local businesses: an iPad on the counter, points for showing up. That meant a Rails API serving iOS, Android, and web clients, and a fleet of iPads on whatever wifi the coffee shop happened to have.

When I joined the core app had around 300,000 users; when I left it was past a million. Most of that was finding the ten queries that mattered, plus test coverage and stability work so we could keep shipping. The part I liked most was the terminals: I co-designed and built the management and monitoring system for 4,000+ devices in the field, so we knew a terminal was offline before the merchant called. I also built the reporting database the business analysts lived in, which kept them out of production.

Background

Belly was a loyalty program for local businesses: an iPad on the counter, a card or app for the customer, points for showing up. That meant a Rails API serving iOS, Android, and web clients, and a fleet of iPads living in coffee shops with whatever wifi the coffee shop had.

What I did

When I joined, the core Rails app had around 300,000 users. By the time I left it was past a million. Getting there was performance work, test coverage, and stability on the core app and API, plus shipping the features the business needed alongside the iOS, Android, and web teams.

The part I liked most was the terminals. I co-designed and built the management and monitoring system for 4,000+ Belly iPads in the field: is it online, is it checking in, is it on the right version, and can we tell before the merchant calls. I also built and supported a custom reporting database for the business analysts, and worked with the product directors to mine it for system performance and user behavior.

Things I learned

  1. Devices in the wild fail in ways a staging environment never will. Bad wifi is the default, not the exception.
  2. A separate reporting database saves the production one from analysts and saves the analysts from production.
  3. Going from 300k to 1M users is mostly finding the ten queries that matter.