lastminute.com logo

Technology

An evolving architecture

massimiliano_mazzarolo
massimiliano mazzarolo

Over the past few years, constant changes in software development techniques, frameworks and tools led us to rethink how our architecture might evolve over time to sustain changes and support demand from business.


We have a long story behind, and the way the lastminute.com’ systems have been built has changed over the years. In the beginning we had a monolithic architecture with few big applications running on VM; today, with more than 300 microservices active, the landscape is totally different.

For this reason, we started to look at the architecture with a different perspective, segregating responsibilities in domains. We were heavily influenced by the Domain Oriented Microservice Architecture concept introduced by Uber, and we’re constantly evolving our services to be accommodated in the following way.

We decided to extensively adopt the API gateway pattern by introducing gateways at the boundaries of every domain; although we currently support REST API and message-driven communications, in the future we might extend the range of supported protocols.

architecture kafka domain service api gateway
An overview of our domains architecture

We have two distinct technologies to manage event-driven communications today, to leverage at best different characteristics.

To manage communication between different domains we use Apache Kafka: a formal contract for domain events is established by using avro schema stored into a Schema Registry. In this way, long-term storage of events is both safe and secure, and we can leverage all the well-known characteristics of Kafka.

To manage communication inside the same domain we use RabbitMQ; in this case, contracts are managed by establishing a partnership between the teams responsible for keeping the communication healthy. RabbitMQ has plenty of useful routing capabilities available out of the box and a rich integration with our core framework - app framework - that is based on Spring Boot.

Want to discover more?

This is the second in a series of articles where we talk about our pink world. If you want to discover more, read:


About massimiliano mazzarolo

massimiliano_mazzarolo
Director of Supply Area

Massimiliano is our Chief Architect. Despite 25 years of experience he’s still obsessed with software architecture and development. He lives in Milan (Italy).


Read next

Observability as a Product of the Software Factory

Observability as a Product of the Software Factory

emanuele_colombo
emanuele colombo

A feature isn't really ready to ship until it is observable. How we turned dashboards and alerts into code that coding agents can write under the same checks as the rest of our software, and why the metrics registry this produces as a side effect matters as much as the dashboards themselves. [...]

From Months to Weeks: The Smart Way to Let AI Do a Migration

From Months to Weeks: The Smart Way to Let AI Do a Migration

antonino_gitto
antonino gitto
timothy_russo
timothy russo

How we migrated 137 modules to a new dependency-injection pattern with AI, turning a quarter-long slog into a few focused weeks by teaching the AI instead of delegating to it, working in small supervised steps, and letting the method compound. [...]