Architecture Writing

Decisions that are expensive to reverse: domain models, event-driven trade-offs, the money path, and when a modular monolith beats the microservices everyone is pitching.

The recurring argument here is restraint. Most architecture advice sells more structure; the reviews I actually run prescribe less of it, spent deliberately on the flows where ordering and replay genuinely matter. Complexity is a budget, and the money path deserves most of it.

The teardown series lives half on this shelf, because the best architecture lessons are other people’s production systems read closely — including where they got it wrong.

The most useful question in any review is not “what should we build?” but “which of these decisions would be expensive to reverse?” Usually there are three, and the rest can wait.

Event-Driven Pitfalls Ordering, replay and poison messages are the three failures that ruin most event-driven systems. What to design in first, and which guarantees you can skip. Zero-Downtime Migration Dual-write and backfill, done in the right order. A practical sequence for moving a live database without a maintenance window or a nervous rollback plan. Idempotency, Done Right Keys, time windows and where to store them. How to make a payments API safely retryable without quietly double-charging a customer during a network failure.