Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Reliability Patterns: Timeouts, Retries, Backoff with Jitter, Circuit Breakers and Load Shedding
Against a slow or failed dependency you need, in order, a timeout chosen from p99.9, jittered retries at a single layer and only for idempotent operations, a retry budget, a circuit breaker and bulkhead per dependency, and finally load shedding and graceful degradation. Real simulation output for retry amplification (27 and 243 calls), jitter, a 10% retry budget and a circuit breaker, failover, and .NET's standard resilience handler defaults.
Microservices in Production: Distributed Tracing, Resilience and Independent Deployment
Running microservices in production takes three things: distributed tracing that follows a request across services (with W3C traceparent), timeouts, retries and circuit breakers thought through at the service level, and independent deployment of every service with its own pipeline, backward compatibility and contract tests. Real trace output with .NET's Activity, retries per layer turning into 64 requests, the trap of tying readiness to downstreams, and where can-i-deploy fits in CI.