Open to Engineering Manager / Director rolesLet's connect
Architecture

Systems thinking, made visible.

Architecture decisions are never purely technical. Every choice has tradeoffs — operational complexity, team bandwidth, business timelines.

Systems thinking applied to real problems — cloud migrations, monolith decomposition, performance investigations, and the trade-offs behind each architectural choice.

Taming 50 Million Callbacks with Event-Driven Architecture

Read article

A legacy .NET HttpHandler buried inside the customer portal was processing webhook callbacks synchronously — and at 20M+ messages a month, vendor retry storms inflated that to 75 million callbacks with 90-second processing latency. We replaced it with an Azure Function that acknowledges in milliseconds and routes to channel-isolated processors via Service Bus, dropping latency to sub-second and eliminating the retry cascade entirely.

Key Tradeoffs

  • Speed over completeness. Acknowledge first, process later
  • Isolation over simplicity.
  • Serverless cost for predictable scale.
  • Standardization over flexibility.
  • Independent deploys, coordinated schemas.

From Busy Flag to Service Boundaries

Read article

A monolithic worker processing six event-driven workloads behind a single in-memory busy flag couldn't scale horizontally, couldn't deploy independently, and was hiding a race condition on its most critical data collection. Using a phased Strangler Fig migration, we decomposed it into five independent modern .NET Worker Services — sequenced by risk, validated by shadow runs, and delivered without a single outage.

Key Tradeoffs

  • Operational complexity for independent failure domains.
  • Redis dependency for safe horizontal scaling.
  • Shadow run duration for cutover confidence.
  • Strangler Fig pace for rollback safety.
  • Shared NuGet contracts for consistency.

Multi-tenant architecture

A future-state model focused on cost efficiency, testability, and flexibility — moving from isolated single-tenant deployments to shared infrastructure with explicit tenant boundaries.

Key Tradeoffs

  • Reduced infrastructure duplication and cost
  • Higher design discipline required at every layer
  • Tenant isolation must remain clear even when infra is shared

Technical debt sequencing

A structured approach to paying down debt in the right order — starting with the debt that blocks the highest-value architectural moves.

Key Tradeoffs

  • Slower initial progress compared to opportunistic fixes
  • Higher long-term velocity as blockers are cleared
  • Requires communicating debt roadmap to non-technical stakeholders

Cost optimization strategy

Identifying infrastructure waste — over-provisioned resources, misaligned scaling policies, and redundant services — and eliminating it without sacrificing reliability.

Key Tradeoffs

  • Risk of under-provisioning if optimization is too aggressive
  • Improved unit economics and infrastructure budget
  • Better understanding of actual load patterns and bottlenecks