Read Replicas Are NOT CQRS (Stop Confusing This)

CodeOpinion (Derek Comartin)
CodeOpinion (Derek Comartin)Feb 19, 2026

Why It Matters

Understanding when to apply outbox, CQRS, or event sourcing prevents unnecessary complexity and ensures that system architecture aligns with real business objectives, protecting both reliability and development velocity.

Key Takeaways

  • Outbox pattern solves dual-write consistency, not just finance.
  • CQRS separates commands and queries, unrelated to read-replica scaling.
  • Event sourcing stores immutable facts; current state derived from events.
  • Over‑engineering occurs when patterns exceed business requirements and add complexity.
  • Choose architecture based on trade‑offs, not hype or assumed scalability.

Summary

In the video, Derek Lamartin dismantles the blanket claim that the outbox pattern, CQRS, and event sourcing are inherently over‑engineered solutions. He argues that the real question is whether these patterns address a concrete business need, not whether they belong to a particular industry or scale. By clarifying the purpose of each technique, he reframes the discussion from hype to pragmatic trade‑off analysis.

Lamartin explains that the outbox pattern resolves the classic dual‑write problem: persisting a state change and publishing an event in a single transaction, then asynchronously dispatching the message. CQRS, he notes, is about separating command (write) and query (read) responsibilities, not about deploying a master‑replica database architecture. Event sourcing, meanwhile, treats an immutable stream of business facts as the source of truth, allowing any current state or analytical view to be derived from that log.

He illustrates each point with concrete examples: a shipment lifecycle (dispatch, load, depart, deliver) demonstrates natural event streams; materialized views show how read‑heavy systems can pre‑compute results; and a simple outbox table highlights reliable message delivery. Notable quotes include, “If you’re using events as a statement of fact… probably not over‑engineering,” and the reminder that “architecture is a business decision, not a technical one.”

The takeaway for developers and architects is clear: introduce patterns only when their benefits outweigh the added operational complexity. Misapplying these tools can increase cognitive load, monitoring overhead, and maintenance costs, while proper use can improve consistency, scalability, and analytical flexibility. Ultimately, the decision hinges on concrete requirements, not on buzzwords or assumed performance gains.

Original Description

CQRS isn’t “two databases,” and read replicas aren’t CQRS. CQRS, the Outbox pattern, and Event Sourcing are often called “overengineering,” and I push back with clear definitions and real-world failure modes. We’ll break down why Outbox exists (the dual-write problem), how CQRS is simply separating command and query code paths (even with the same database), and why logging events to ClickHouse/Redshift is analytics, not Event Sourcing. If you’ve heard “outbox is only for finance” or “replicas are enough so CQRS is useless,” this is the nuance people miss.
🔗 Kurrent (formely EventStoreDB)
💥 Join this channel to get access to a private Discord Server and any source code in my videos.
🔥 Join via Patreon
✔️ Join via YouTube
0:00 Intro
1:23 Outbox
3:54 CQRS
7:05 Event Sourcing

Comments

Want to join the conversation?

Loading comments...