Thanks to the collaboration with our partners using Booster Framework in Azure, version 2.2 has completely redesigned how the event processing is handled.
It now uses a combination of the services Azure Cosmos DB change feed and Azure Event Hubs in a way that it can process virtually any number of events in a given time without affecting the rest of the application and still keeping very low processing times.
How it works
Before this change, the event processor was only managed by the “Azure Cosmos DB change feed”, which forced Booster to only use a single processing unit (Azure Function App) for the event processing in most situations. While, with this approach, you can still process almost any number of events at a given time, you can experience long delays in situations where thousands of events are registered in a short period of time (in seconds). This is translated to read models that take tens of seconds to reflect the changes, event handlers that get executed long after the corresponding event is registered, etc.
Booster 2.2 now uses Azure Cosmos DB change feed just to send the event to Azure Event Hubs, where it is distributed optimally among partitions and sent to the corresponding event processor. The great advantage of this approach is that we can have many Azure Function Apps (not just one) processing events in parallel, reducing the latency to the minimum.
Despite this extra level of concurrency and parallelism, all the guarantees Booster offers about data consistency and the order of events are still kept.
Of course, this change doesn’t affect the developer experience or the code of any current Booster application.
Conclusions
Booster has always been focused on scalability (this is one of the reasons that made us take architectural decisions like using event-driven or CQRS), but this new version takes it to the level of the most demanding enterprises of the world.
We keep pushing hard to bring the best of the event-sourcing, CQRS, and serverless worlds to a framework that offers a neat developer experience focused on what matters. Is there something you think can be improved? Go ahead and make a suggestion! Remember that Booster is open-source.