Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Status Field'ı Her Yerden Güncelleniyorsa: Transition Table, State Machine ve Status History
Status kolonunu her endpoint'in yazabildiği bir field olmaktan çıkar: istemci durum değil aksiyon göndersin, izinli geçişleri tek bir yerde (transition table, domain method veya Stateless) tut, her geçişi gerekçesiyle aynı transaction'da status history'ye yaz ve rowversion ile çift onayı engelle.
Numaralandırma: Fatura ve Sipariş Numaraları, Gapless Sequence ve Yıllık Sıfırlama
Ardışık olması gereken fatura numarası identity, MAX + 1 ya da SEQUENCE ile değil, onay transaction'ının içinde (Series, Year) key'li bir counter tablosundan lock alan bir UPDATE ile alınmalıdır; boşluk kabul edilen sipariş numaraları için SEQUENCE yeterlidir. Yazı GİB'in 16 karakterlik belge numarası biçimini, 50 concurrent onayla boşluksuzluğu, lock süresinin throughput'a etkisini ve fatura tarihine göre yıllık sıfırlamayı gerçek çıktılarla gösteriyor.
Optimistic Concurrency Uçtan Uca: rowversion'dan ETag'e, If-Match ve 412 ile Çakışma Ekranı
Optimistic concurrency'yi web'de uçtan uca kurmak için rowversion'ı ETag olarak dışarı açmak, güncellemede If-Match'i zorunlu tutmak (yoksa 428), uyuşmazlıkta 412 ile güncel değerleri dönmek ve istemcide field bazlı three-way merge yapmak gerekir. Bu yazı EF Core Concurrency yazısının devamı olarak HTTP ve Angular tarafını gerçek çıktılarla gösteriyor.