Session

Scaling Beyond a Million Ticket Sales per Day

Speaker(s): Parin Turakhia

BookMyShow is India’s leading entertainment destination, and is present across 650 cites, now including Singapore, Dubai, Indonesia and beyond. It serves more than 1 billion page views and 1 million tickets per day for movies like Avengers & Bahubali 2, averaging 27 tickets per second.

The BookMyShow (BMS) transaction platform had been built on a relational database management system (RDBMS), but we needed to migrate it to something faster to scale and provide a consistent customer experience despite the influx in traffic.

To achieve this, BMS migrated to Redis. As a result:

  • Conversion in the online ticketing industry is approx 3-4%, considering the conversion 90% of the transaction is in an abandoned state as people want to check the best seats and showtimes. So the initial state for a transaction is stored in Redis as a key-value store against a transaction ID. These keys are set with leveraging EXPIRE feature eliminating problems of data purge and huge DB size. All the critical unique identifiers like transaction or payment id’s are generated using Redis INCR.
  • Considering 1 billion page views, loading movie lists, cinemas, showtimes, etc is a challenge. This data is stored in a RDBMS, but for performance consideration, we pre-generate the data using various bots in a key-value format and store in multiple logically shared Redis DBs for fast data retrieval.
  • One of the key features is to provide real-time seat availability for a particular show. Using Redis Pub/Sub on every state change for a seat, the change is pushed to the queue and subscribers to update the change across the Redis datastore