Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
3 posts found #read-model
Projections: Building Read Models with Inline, Async, and Live Projections
Software Architecture PART 07

Projections: Building Read Models with Inline, Async, and Live Projections

A projection is a function that turns events into a read model shaped by a specific question; Inline runs in the same transaction as the events, Async runs in the background with the daemon, and Live is never stored. A stock badge, a monthly stock movement report, and reservations waiting to ship from the Bookstore stock ledger; checkpoints, changing a projection and rebuilding it, dead letters, and a failed rebuild emptying a read model.

7 Nov 2026 13 min 5
A Separate Read Model: Materialized Views, Synchronization, and Living with Eventual Consistency
Software Architecture PART 03

A Separate Read Model: Materialized Views, Synchronization, and Living with Eventual Consistency

A separate read model stores the screen's row precomputed from domain events; updated in the same transaction it stays immediately consistent, updated asynchronously in a separate database you have to live with eventual consistency. Inline projections, PostgreSQL materialized views, an asynchronous projector with a checkpoint, waiting on a position for read-your-own-writes, idempotent updates and a full rebuild, with real output.

7 Nov 2026 14 min 4
What Is CQRS? From CQS to Command Query Responsibility Segregation
Software Architecture PART 01

What Is CQRS? From CQS to Command Query Responsibility Segregation

CQRS splits one model into two, one for writing (commands) and one for reading (queries); Greg Young took Meyer's method-level CQS principle up to the model level. We show with a real compiler error and a load count why an aggregate does not fit a list screen, then cover the three levels of CQRS, how it differs from Event Sourcing and MediatR, and Fowler's 'only where it pays off' warning.

7 Nov 2026 12 min 5
Blog Map