Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Uçtan Uca: Bookstore'u 10 Kat Büyümeye Hazırlamak — Ölç, Karar Ver, Uygula, Doğrula
Bookstore'u 10 kat büyümeye hazırlamak sharding değil; index, connection bütçesi, arşiv, read replica ve partitioning'in ölçülerek sırayla eklenmesi. Kampanya yükünde "Siparişlerim" p99'u 4,0 ms kaldı (hedef 50 ms); yük altında primary öldürülüp replica promote edildiğinde yazmalar 7,1 saniye durdu, ama hiçbir istek hata vermedi ve onaylanmış 3.970 siparişin hepsi korundu. Basamakların kazancı ve bedeli, ADR, failover ve restore tatbikatı, kontrol listesi.
High Availability ve Failover: RPO/RTO, Listener, Patroni ve Uygulamanın Failover'a Dayanması
Uygulama failover'a ancak idempotent yazma ve failover'ı bekleyen bir retry ile dayanır; async replica ise kayıpsız değildir. Lab'da async replica ile 50 sipariş kayboldu; varsayılan EF Core retry'ı "No suitable host was found" hatasını tekrar denemediği için 98 sipariş düştü, genişletilmiş strategy ve Host Recheck Seconds=1 ile sıfır hata ve sıfır çift kayıt. RPO/RTO, HA ve DR, AG listener, Patroni ve SqlClient ConnectRetryCount.
Replica Set ve Sharding: Election, Oplog, Shard Key Seçimi ve Hot Shard
Replica set primary çöktüğünde yeni primary'yi yaklaşık 10 saniyede seçer ve bu sürede yazmalar durur; sharding'de ise shard key, yazmaların bir shard'a yığılıp yığılmayacağını belirler. Gerçek çıktılarla: kill -9 sonrası iki başarısız yazma ve 10 saniyelik boşluk, delayed member'dan silinen siparişi geri almak, orderedAt key'iyle son 2.000 siparişin tek shard'a gitmesi, targeted ve scatter-gather sorgular ve beş dakikalık resharding.