Penalty Shootout

· 378 words · 2 minute read
Photo
Photo by Jannes Glas on Unsplash
Introducing CloudFront caching, developing microservices and supporting go live

What started as a finger exercise in cloud computing led to a challenging but cool project. The customer had built a football statistics white label application during the last couple of years. The idea is to offer an interactive overlay for sport video streams. With the overlay, the customer can interact with the UI to see near real time statistics and data about the club, the players and the tournament. Additionally, the timeline shows goals and match events, such as red cards, fouls etc. The frontend is available as a web app and an Android or IOS SDK.

I initially came to the project to introduce a CloudFront cache for their REST API to ease load on their backend services. There were aiming for well above 100,000 users and struggling to scale. After the caching was finished, I was to build an isolated satellite service in an existing Azure cluster, to unlock football data for international competitions. I.e. a new data provider. As I was just finishing the satellite service, in a series of unfortunate events, a backend developer became unavailable.

He was working on integrating the new data provider and had touched almost every service in a separate branch. It has never been tested in orchestration, and they were about to go live in roughly six weeks time. So I inherited all these branches and spent the next weeks trying to puzzle all the pieces together into a working whole. Unfortunately, some services and classes did not even compile. With lots of intuition, elbow grease, imagination and basically guessing what was supposed to happen and lots of help from the architect and eventually even the former developer in his spare time, we managed to put everything together. We smoothed out the edges during some live matches of a Japanese Football League and were in the fortunate position to quickly bring code to production. In the end, we survived our first live match in production with a potential customer and were able to go live successfully.

Challenges 🔗

  • Puzzle code together, from different branches in multiple services
  • Understand architecture
  • Tight deadlines

My Contribution 🔗

  • Configure CloudFront for REST API caching
  • Write a new service from scratch
  • Integrate feature branches, test code
  • Support go live
  • Develop features
  • Fix bugs