Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
End to End: Preparing Bookstore for 10x Growth — Measure, Decide, Apply, Verify
Preparing Bookstore for 10x growth isn't sharding; it's adding an index, a connection budget, archiving, a read replica and partitioning in order, each measured. Under a campaign load "My orders" p99 stayed at 4.0 ms (target 50 ms); when the primary was killed under load and the replica promoted, writes paused for 7.1 seconds, but no request failed and all 3,970 acknowledged orders survived. Gains and costs of each rung, ADRs, failover and restore drills, a checklist.
Read/Write Splitting in .NET: Routing to Read Replicas and the Read-Your-Writes Problem
Moving reads to a replica takes more than two contexts; you need a router that knows when the replica is behind. In the lab, customers reading from a replica with apparently zero lag missed 4 of 1,000 new orders, and 300 of 300 once replay was paused; a router that checks a lag threshold and the LSN of the user's last write missed none. Npgsql prefer-standby, SQL Server read-only routing and hot standby conflicts.