Skip to content

Services · Infrastructure

Microservices & event-driven architecture

Axar7 designs fully asynchronous, event-driven systems, mainly on Kafka and Amazon SQS: small services that talk through events, so each stage can be scaled on its own and a failed step can run again safely. OCRed reads around a million scanned pages a day for a European toll agency through Node.js and Python services, and Factoreal's event pipeline handled more than 10,000 events per second.

See the work

Updated

On record

scanned pages read a day
~1M
OCRed case study →
events per second
10,000+
Factoreal case study →

01How it works

Microservices & event-driven architecture, step by step

  1. 01

    A reference on the bus

    Files land in drop folders on the agency's servers. A Node.js file watcher picks each one up and puts an event on the bus that carries a reference to the file, not the file itself.

  2. 02

    Services consume, then emit

    A Python OCR microservice consumes the event, extracts the text and passes it on to the next stage. The services communicate through events rather than direct calls, so each stage can be scaled on its own.

  3. 03

    Mapped, scored, approved

    The mapping service matches the document to its layout's template, maps each value to its field with a confidence score and stages the result. A reviewer compares it with the original scan, then corrects or approves it: nothing is committed without approval.

  4. 04

    Retried without duplicates

    Approved data is committed to the target database. Every step is idempotent and retryable: if a step fails and runs again, it cannot create a duplicate record. Batching and retry semantics do the same job in Factoreal's pipeline, absorbing bursts instead of dropping events.

02Scope

What we build

  • Service boundaries drawn around the stages of the work
  • Event-driven communication between services
  • Idempotent, retryable processing steps
  • Human approval steps where data has to be right
  • Operational dashboards, roles and audit trails

03Proof

Where we have done this

  1. 01

    OCRed

  2. 02

    Factoreal

  3. 03

    DictionarE

04Stack

What we build it with

  • Kafka
  • Amazon SQS
  • RabbitMQ
  • ZeroMQ
  • Socket.IO
  • Apache NiFi
  • Node.js
  • Python
  • FastAPI
  • Pandas
  • NumPy
  • Docker

05Questions

Common questions

Why events instead of direct calls between services?

So each stage can be scaled on its own. In OCRed the Node.js watcher, the Python OCR service and the mapping service communicate through events rather than direct calls.

What happens when a step fails halfway?

It runs again. Every ETL step in OCRed is idempotent and retryable, so a rerun cannot create a duplicate record.

How much volume have these systems handled?

OCRed processes around a million scanned pages a day; Factoreal's event pipeline handled more than 10,000 events per second.

Do you work with Apache NiFi?

Yes. Apache NiFi was part of Factoreal's data pipeline.

Which message brokers do you use?

Mainly Kafka and Amazon SQS, in a fully asynchronous, event-driven design. We have also worked with RabbitMQ and ZeroMQ, and with Socket.IO for real-time updates to the interface.

How long does an event-driven build take?

It depends on the project. Simpler requirements take a few weeks, up to a month; complex builds take months.

06Related

Related services

See the work in action. Start your project with us.

Start a project