Mayweather vs McGregor
Engineering a PPV service for millions


My team built and launched the Pay-Per-View service for the Showtime broadcast of the Mayweather vs McGregor boxing match. We deployed a NodeJS API on scalable AWS servers and deployed clients for iOS, Apple TV, Android, and Web.  The web service included multiple DRM-encrypted video and audio streams, a customized HTML5 video player and built on a platform of Backbone/Marionette front end and credit card processing through Recurly.

60 days, 4.6 million purchases, and $600 million later, the Pay-Per-View service we had deployed was deemed a success. Stephen Espinoza, EVP and General Manager of Showtime Sports reported that the fight “generated four times the number of streaming buys than we projected” and “Overall, the streaming was a high point.”

Read more ↓

Project Background

During this time period I was working as a web developer for Showtime Networks in New York. My daily tasks projects were getting mind numbingly boring. Watching minor bug tickets come in from our quality assurance team while much of the rest of the company hastily rolled out a physical gift card program reminiscent of the 1990s.

One day my team was called in to a meeting. Showtime had secured the rights to broadcast Floyd Mayweather and Connor McGregors fight. This wasn't a world-altering decision but there were two major differences between this event and every other boxing event Showtime had broadcast. Firstly - This would be a landmark fight in sporting history where one of the best boxers on the planet (Mayweather) would be put in the ring with one of the best UFC fighters in the world. Secondly - they wanted to offer Pay-Per-View streaming not just on cable but on web, iOS, and Android.

Personally I'm not particularly a fan of boxing and more particularly, definitely not a fan of either of these two dudes as individuals for (various reasons). However, the fight would be huge, and the technical challenges our tiny team would face would be massive. This was the type of underdog challenge and excitement that I'd been waiting for.

The challenges were counted. How would they register? How would they pay? How could we encrypt the stream so it couldn't be pirated? How could we provide the stream on as many devices as possible? How do we handle the load of potentially millions of hits in the matter of minutes and millions of simultaneous live streams? This would prove to be an engineers dream, or nightmare.

We had less than 60 days to engineer, test, reengineer, re-test, and eventually deploy the fully functional pay-per-view streaming platform. Ultimately there were 7 of us that were responsible for writing and deploying all of the code for this. One iOS developer, one Android developer, several NodeJS developers, an operations manager, and other primarily front-end developers. The platform consisted of a NodeJS API running on many EC2 instances, a high performance scalable database, and an orchestra of caching layers including Redis, DNS, and client-side caching.