Writing

Building a resilience library in the open

Deep dives into the architecture of NResilience - single-loop execution, memory budgets, and the low-level trade-offs of building a high-performance resilience engine for .NET.

31 posts10 partsRSS
/
4 min read

Stress-tested against Polly

I ran NResilience and Polly 8 through a sustained-load stress suite for 32 minutes. Here are the numbers.

11 min read

A deep dive into the circuit breaker

The breaker state machine, adaptive trips that measure instead of guess, the 100ms guarded rejection, the recovery ramp, and equal jitter - how each piece works and why it is there.

11 min read

A deep dive into retries and the retry budget

Why attempt limits cannot stop a retry storm, how a token bucket funded by successful traffic can, the two things it exempts, the hint it refuses to overstate, and the nested-retry marker for the loops it cannot see.

2 min read

Beyond the basics: The road to v1.0

A final synthesis of the NResilience series, reflecting on the journey from a single retried call to a high-performance resilience engine.

4 min read

Shipping a resilience library

A meta-look at the quality gates, analyzer bundling, and CI processes that ensure NResilience's promises of performance and correctness.

5 min read

The small decisions that add up

An essay on the deliberate design choices in NResilience, from guarded rejections to live quantiles and the anatomy of a Verdict.

4 min read

One loop, one allocation

A deep dive into the NResilience flat executor architecture, its allocation budgets, and why a single loop is faster than a layered pipeline.

5 min read

gRPC in depth

Explore how NResilience handles gRPC status classification, per-service scoping, and the critical math behind wire deadlines.

12 min read

HTTP in depth

Learn how NResilience handles per-host state, transport timeouts, wire idempotency, and nested retry detection in .NET HTTP clients.

8 min read

Tests that don't flake

How to write deterministic resilience tests using scripted callbacks, fake clocks, and event recording.

7 min read

Deadlines that travel

How to propagate deadlines and criticality across services in ASP.NET Core, avoiding the nested-retry storm and the "zombie request" problem.

Page 1 of 3