cluster: unknown

Senior .NET Engineer

I build distributed systems that survive production.

Specializing in high-throughput microservices, resilient sagas, and zero-downtime infrastructure. Currently based in London.

Evidence

A live .NET 9 cluster, running in your browser.

This isn't a mock. Trigger a checkout to see a real MassTransit saga state machine orchestrate across four microservices. Click 'Inject Fault' to see the cluster automatically compensate.

Your order

Demo Widget

£39.99

Qty 1

Subtotal£39.99
Tax£0.00
Total£39.99

Behind the scenes · CheckoutSaga.cs

Choreography · cross-service event flow

Each row is one message — direct HTTP at the top, RabbitMQ events between services after that. No central transaction.

Browser
bff-web
checkout-orchestrator
catalog-svc
payments-svc
POST /api/demo/saga/startVisitor clicks Pay
POST /api/checkoutsBFF proxies to checkout-orchestrator
StockReservationRequestedSaga: Initial → Initiated · publish via RabbitMQ
StockReservedCatalog: Product.ReserveStock + outbox publish
PaymentSessionRequestedSaga: Initiated → StockReserved · publish
PaymentSessionCreatedPayments: create Stripe session + outbox publish
PaymentCompletedOn Stripe webhook · saga: → Completed (final)
http = direct HTTP call · event = published via RabbitMQ outbox
compensation = saga's failure-recovery path (red rows)
Bridge Events Log
TimeEventStatus
Awaiting saga initiation...

Inject failure

Architecture

Patterns for scale and reliability.

Detailed breakdowns of the decisions that define the platform. Focusing on how we handle distributed state, data consistency, and failure at scale.

Saga vs Two-Phase Commit

When you can have ACID across services, when you cannot, and why the answer in 2026 is almost always sagas.

11 min read min readRead dive →

The Transactional Outbox

Why dual-write is the most expensive bug in event-driven systems, and the small amount of plumbing that fixes it forever.

9 min read min readRead dive →

Zero-Downtime Secret Rotation

How we rotate database credentials and API keys in a live distributed system without dropping a single request.

8 min read min readRead dive →