Raven Controls: using Mercure to keep high performance
Published on December 20, 2022
Read a new case study made with our partner Brian McCluskey, director of engineering at Raven Controls. In this interview, he explains all the reasons why his team uses the Mercure protocol.
Can you introduce yourself and your project?
Raven Controls are a start up delivering mission critical event and crisis management software. Our software has been deployed at some of the world’s biggest events, including UEFA Euro 2020 & COP26 and we work with the biggest names in music, sports & more, globally.
One of the key capabilities of Raven is getting information into the right hands as quickly as possible so that decisions can be made quicker and incidents actioned and resolved faster.
Can you give us the technical context of your project?
Our web application and APIs are a Symfony application and we leverage React Native for our mobile app targeting iOS and Android. We’ve architected an event driven system and use SQS & Symfony Messenger to process events. Realtime updates and notification are obviously a critical part of our system which is where Mercure comes in. We use Redis for our caching layer and as it was already part of our stack it made sense to use it as our transport for Mercure.
Everything runs on AWS in Elastic Container Service and we have loads of awesome tooling like GitLab, Sentry and more.
Why did you choose Mercure.rocks for your solution?
We choose Mercure to provide the realtime capabilities in our system for several reasons. The fact that Mercure is batteries included. The protocol defines how Authentication, Automatic Reconnection, Pub/Sub etc should work and an implementation of the Hub brings these things working out of the box. With Websockets you have to create these things yourself or every vendor brings a different implementation which leads to vendor lock in.
Some of the unique features Mercure has like gathering missed events, and the subscription API, the open nature of it, and of course there are also integrations for Symfony.
What are the results in the short term, the first metrics seen?
We adopted Mercure very early on in the project but compared to polling in an MVP we eliminated over 50% of our traffic. Our system is also designed to deal with what can be life threatening scenarios, the latency that polling would bring would cost time in critical situations and Mercure has helped us eliminate that. The ability to gather missed events has been a real win for us as stadia and arenas are often massive concrete structures built in areas with poor connectivity, this is great for users of our mobile app to instantly gather what happened when out of signal without having to poll our APIs constantly.
Could you tell us more about the next evolutions of your project?
We’re currently working on some Machine Learning projects. One predicts the key information relating to an incident and will display the results for selection in realtime, allowing a quicker time to creation of an incident, and also crucially, a quicker time to incident resolution as this will notify the right people of the incident faster. Another is surfacing threats by analysing information received from various sources. So plenty of use cases coming up where Mercure will be needed.
Thank you Brian for your time! Get more information about Raven Controls' projects with this talk given at the API Platform Conference 2022.