You go for a run, and when you're done, your buddy, adidas Running, will tell you how you did. Maybe you hit a new goal this run or need encouragement to work harder next time. No matter what, behind the scenes there is a dedicated team of engineers relying on the stable foundation of RabbitMQ.
Ever since sports tracking apps saw the light of day, it's almost like a workout without tracking, somehow is less valuable to us. Imagine a run streak on day 1,000 without functioning measurements! What a disappointment!
Today, we're so used to the data and statistics generated from our physical activities. The numbers indicate growth and progress and motivate people to do better, but they can also tell if you are struggling with your health, which might be a wake-up call for some. That's how important these statistics have become to us. That also underlines the importance of a well-functioning application infrastructure, especially for two of the world's most popular training apps: adidas Running and adidas Training.
Another string on adidas's lyre
adidas hardly needs any further presentation. The classic brand known for the three stripes is seen worldwide on everything from shoes to clothing and accessories. In 2015, adidas built on its brand by acquiring Runtastic, making training apps available to its loyal customers.
Alexander Lackner is an infrastructure engineer with Runtastic, the company responsible for developing the adidas Running and Training apps, keeping them running smoothly, and providing them with new content. He tells a story of a relatively young application that has grown explosively in popularity, not least during the pandemic.
– Most gyms were closed, which also applied to group training and places in general where people were used to doing sports. Physical activity in the outdoors grew massively overnight, and we saw a huge spike in the number of users. We were overwhelmed by the wave of tasks we had to handle simultaneously.
This could have been a bigger problem than it was for Runtastic.
– We have been running RabbitMQ in basically all of our services from the beginning. That helped a lot when we needed it the most. RabbitMQ made it easy for us to scale up and handle the heap of workload coming in all at once.
Microservices that communicate through RabbitMQ
adidas training apps are built on a microservice infrastructure, meaning different application functions are divided into smaller pieces called microservices. They communicate via a message queue, in this case, RabbitMQ. For example, messages get generated in the adidas training app every time a user starts an activity. The different services then exchange these messages and “listen“ to each other, depending on whether the service “needs” the information. For instance, if a sports activity ends, the leaderboard service listens, automatically updating it with the correct information.
Another example of when RabbitMQ comes in handy is when sending push notifications.
– You can imagine it gets sent out to a great number of users, so it's a lot of messages simultaneously. This can generate a queue; still, it's not too often that we have had issues with queues getting unmanageable long.
– RabbitMQ is a stable foundation for us and has worked smoothly since the beginning, leaving us with time to focus on other topics rather than fixing errors. If we get alerts regarding RabbitMQ, it's usually not RabbitMQ that is the issue, but some service in the back that is not sending messages or is sending too many messages, Alexander Lackner said.
adidas hosts some of its queues at CloudAMQP, a hosted RabbitMQ service. You can too!