Client: Global provider of technology solutions for retail industry

Industry: Retail

Pull and visualize important KPI metrics for a retail client

Tech: Java, Spring, Kafka, RabbitMQ, Cassandra, InfluxDB, Grafana



Speak to us about your software development requirements:



Gather insights for store performance, acquire metrics and present the information to retail managers so that they can analyse the performance of the various stores they own. The challenge is that this system must work in near real time (present metrics as they are gathered) and it must be fault tolerant.


We decided to leverage RabbitMQ as an already present message queue to react on various events (some existing, some that need to be built). After an event is received, the whole component should do various aggregation and store the calculated result. Because of its messaging and data retention capabilities, we decided to use Kafka as it can store events in mid-state and it can apply light processing. We also decided to dockerize the entire infrastructure and implement it as microservices.


An isolated component of a bigger system which accepts the event, which then triggers the pipeline for aggregation and calculation. The results are pre-processed and stored in Cassandra. We have attached a monitoring stack (ELK, Grafana and InfluxDB) so we can maintain it. The whole component is functionally tested end-to-end with blackbox suite, using Cucumber and RabbitMQ as triggering event and HTTP to verify results.


The result is an isolated component for KPI metrics which aids store managers and gives them valuable insights in store performance. The component is extensible, since it is end-to-end tested) and maintainable because of its rich monitoring stack.


Speak to us about your software development requirements: