Distributed Systems Design
Defining service boundaries and API contracts, choosing between synchronous and event-driven communication, and designing for partial failure from the start.
Software Architect — distributed systems & scalable design
I work on service boundaries, failure modes, and the trade-offs between consistency and availability — the decisions that determine whether a system survives its own success.
I spend most of my time upstream of the code — drawing service boundaries, mapping data flow, and reasoning about what happens when a dependency goes down at 3am. The implementation matters less than whether the architecture holds under load.
That means thinking in terms of consistency models, failure domains, and blast radius before a single endpoint gets written — then leaning on AI tooling to accelerate the build once the design is sound.
Defining service boundaries and API contracts, choosing between synchronous and event-driven communication, and designing for partial failure from the start.
Capacity planning, horizontal scaling, and caching strategy — designing systems that degrade gracefully instead of falling over under load.
Fault tolerance, graceful degradation, and instrumentation that tells you what actually broke — SLOs, tracing, and clear failure domains.
Working through the trade-offs between strong and eventual consistency for a system currently split across too many single points of failure — mapping out where to introduce a message queue versus where it'd just add latency for no reason.