Projections: Creating Read-Optimised Data

Data continuously flows through organisations, and on its way, it's transformed many times to serve different purposes. Functional design emphasises data transformation—projections— rather than repeatedly mutating state in a single database. One particularly useful form of projection is the creation of read-optimised data structures tailored to well-defined use cases.

Kafka – Managing Breaking Changes in a Multi-Team Environment

In my article Kafka Versioning I have briefly covered different ways of handling versions and using schemas to manage changes to the data structures. However, merely understanding these concepts falls short when operating within an environment characterized by numerous teams and bounded contexts. It is necessary to identify patterns and principles for navigating model changes successfully.

Navigating Kafka: Strategies for Managing Schema Changes

I have worked with DDD for many years, and learned to not share databases and to use anti-corruption layers between systems and services. Therefore, I was at first very reluctant to connect Kafka directly to the databases. Wouldn't that recreate the monolith that we have been working so hard to get rid of?

Understanding Event Types in Kafka

Defining an event may seem straightforward, and when I wrote my first Kafka article I thought of all events as business events. I've now realized that there are various types, with Change Data Capture (CDC) events emerging as one of the most prevalent.