Blog

Insights from real-world software architecture, system design, and engineering leadership

GraphQL Solved Facebook's Problem. Does It Solve Yours?

15 min

GraphQL let Facebook's clients write their own queries because no server team could predict every path through its graph. Every team importing it should show it has the same problem, and a team that locks GraphQL down to persisted queries has already listed every query it will send, so it needs GraphQL only when its screens take so many changing paths that an endpoint for each costs more than securing a query language.

Read post →

The API Gateway Shouldn't Know Your Business

14 min

Business rules end up in the API gateway because it's the easiest place to apply a rule to every request, and there they lose their owner, miss traffic that skips the gateway, and leave the domain's tests. Keep a rule in the gateway only if the gateway team could change it correctly on its own, and admit a business rule only as emergency debt with an owner and a removal date.

Read post →

Architecture Is a Belief About Where Authority Belongs

14 min

SOLID, normalization, least privilege, and bounded contexts share a structural belief: that where authority lives determines what the system can absorb. This post develops that into two properties for judging an authority claim, contour and bond, and traces through an order workflow how authority gets misplaced at the outset and how, once correctly placed, it erodes through locally reasonable optimizations.

Read post →

Why the Fastest Incident Responders Slow Down Before They Fix

14 min

Reproduction is the fulcrum of effective troubleshooting, because when the evidence fits more than one cause, without it you're guessing about the problem and guessing about the fix. The fastest path to a proven fix restores service first, then gathers facts, tests assumptions, and proves causation, and teams practice that discipline before the incident so it's there when they need it.

Read post →

Are You Using Hexagonal Architecture, or Just Dependency Injection?

11 min

Some teams that say they use hexagonal architecture reach part of its goal, a database they can swap in tests, through layered code and framework dependency injection, without the structure Cockburn described. The difference shows up in who owns the interfaces and whether every driver can reach the business rules without a controller, and knowing which one you built tells you which benefits you actually have.

Read post →