I build distributed backend systems with event-driven architectures, clean service boundaries, and APIs across REST, GraphQL, and gRPC that hold up under real production conditions. I care about the decisions that live below the code where the boundaries of consistency live, how data flows between services and what happens to systems when failures happen at the worst possible time.
I apply domain-driven design to define bounded contexts and aggregate boundaries, use the transactional outbox pattern to guarantee reliable event delivery without distributed transactions, and design for failure from the start with idempotent consumers, circuit breakers, dead letter queues, and resilient retry handling.
I work with Kafka and RabbitMQ for asynchronous event pipelines, paying close attention to delivery guarantees, consumer failure scenarios, and processing reliability under partial system failure.
On the data side, I use PostgreSQL with deliberate attention to indexing and query planning and Redis with caching strategies such as cache-aside and write-through, thoughtfully chosen around actual read/write tradeoffs rather than defaults. I care about how data is modeled just as much as how it is stored.
- β‘ Backend Engineering β Production-grade systems with clean architecture and strong domain boundaries.
- π§± Microservices β Loosely coupled, resilient, and independently deployable services.
- π API Design β REST, GraphQL, and gRPC chosen according to actual problem requirements.
- π¨ Event-Driven Architecture β Reliable async pipelines with strong delivery guarantees.
- π§ System Design β DDD, CAP tradeoffs, Outbox Pattern, and CQRS applied where they deliver value.
- ποΈ Databases & Caching β PostgreSQL with thoughtful indexing + Redis strategies matched to workloads.
- βοΈ DevOps & Cloud β Docker, Kubernetes, AWS, and CI/CD with production readiness in mind.
- π‘οΈ Reliability & Testing β Practices focused on real failure modes and long-term maintainability.


