UmurInan
Architecture Topic

Architecture

Architecture is the set of choices that are expensive to undo. These posts are about the trade-offs behind sagas, CQRS, event sourcing, the outbox pattern, monoliths, and the abstractions that looked elegant on the whiteboard.

Database

Posted on Jun 3, 2026

Postgres Won the Database War. Now What?

Postgres passed MySQL on the Stack Overflow survey. 'Postgres for everything' became the default. Where that gravity helps, where it quietly stops, and my rule.

Read more
Backend

Posted on Jun 2, 2026

You're Running Kafka for Three Topics

Kafka is a commit log for high-throughput streaming. Three topics at 10 msg/sec is not that. The operational tax you didn't price, and the tool that fits.

Read more
Backend

Posted on Apr 26, 2026

CQRS Sounds Fancy Until You Have to Debug It

CQRS separates reads from writes but not bugs from confusion about which side caused them. Here is when the pattern helps and when it just adds complexity.

Read more
Practices

Posted on Apr 11, 2026

Good Enough Is a Strategy

In engineering, perfectionism is often procrastination disguised as craftsmanship. Shipping an 80% solution and iterating beats a perfect solution shipped late.

Read more
Backend

Posted on Apr 10, 2026

Soft Deletes Are a Trap

Adding is_deleted to your tables feels harmless. Here's what it actually costs: broken constraints, query pollution, index bloat, and cascading confusion.

Read more
Backend

Posted on Apr 8, 2026

The Outbox Pattern: Reliable Events Without Two-Phase Commit

Reliable event publishing alongside database writes is harder than it looks. The transactional outbox pattern solves it without distributed transactions.

Read more
Backend

Posted on Apr 7, 2026

Event Sourcing Sounds Better Than It Is

Event sourcing promises auditability, time travel, and decoupled systems. The operational complexity arrives later, and most teams are not ready for it.

Read more
Backend

Posted on Apr 2, 2026

The Database Is Not Your Message Queue

Polling a status column every few seconds works until it does not. Here is why your database makes a terrible message queue and what to reach for instead.

Read more
Backend

Posted on Mar 30, 2026

Caching Is Easy Until It Isn't

Redis, in-memory, CDN: caching feels simple until invalidation ruins your week. Here's how each caching layer bites you and what I learned the hard way.

Read more
Backend

Posted on Mar 23, 2026

The Monolith That Works Fine, Thanks

Monoliths aren't a sign of technical immaturity. Most teams don't need microservices. Here's why a well-structured monolith is often the smarter choice.

Read more
Thinking

Posted on Mar 18, 2026

I Spent a Week on Moltbook, the Social Network Where Only AI Agents Can Post

I browsed Moltbook for a week to see what AI agents actually talk about when humans can't participate. Some of it was fascinating. A lot of it was weird.

Read more
Mobile

Posted on Feb 20, 2026

SwiftUI vs Jetpack Compose: A Side-by-Side Comparison From Someone Who Uses Both Daily

I maintain the same app on iOS and Android. Here's how SwiftUI and Jetpack Compose actually compare when you ship features across both platforms weekly.

Read more
Backend

Posted on Feb 15, 2026

Why Component-Based Structure Beats Traditional Package-by-Layer in Java

Why organizing Java code by feature instead of by layer (controller/service/repository) gives you better modularity, easier navigation, and real encapsulation.

Read more
Tools

Posted on Feb 15, 2026

How I Use MCP Agents, Skills, and Subagents to Build Software Faster

My actual workflow with Claude Code's MCP servers, custom agents, and skills across Spring Boot, iOS, and Android. Real examples from production code.

Read more