Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
3 posts found #scalability
Reliability Patterns: Timeouts, Retries, Backoff with Jitter, Circuit Breakers and Load Shedding
Software Architecture PART 10

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.

8 Nov 2026 12 min 5
Designing Rate Limiting: Token Bucket, Sliding Window and a Distributed Rate Limiter
Software Architecture PART 09

Designing Rate Limiting: Token Bucket, Sliding Window and a Distributed Rate Limiter

A single rate limit needs its counter in a single place: ASP.NET Core's built-in limiter keeps counters in each instance's memory, so three instances triple the limit; the fix is an atomic counter in the gateway or in Redis. A comparison of five algorithms, a distributed sliding window limiter with Redis and Lua with real output, 429, Retry-After, the IETF RateLimit header draft and the DoS risk of partition keys.

8 Nov 2026 13 min 4
From One Server to Millions of Users: Vertical and Horizontal Scaling and the Stateless Tier
Software Architecture PART 03

From One Server to Millions of Users: Vertical and Horizontal Scaling and the Stateless Tier

The precondition for scaling the application tier horizontally is being stateless: session, the Data Protection key ring, IMemoryCache, local files and scheduled jobs must move outside the instance. In a real two-instance experiment moving session to Redis alone fixes nothing, because session and authentication cookies are encrypted with Data Protection keys; once the key ring is shared too and SetApplicationName is set, the two servers behave like one application.

8 Nov 2026 11 min 3
Blog Map