Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Microservice'lerde Transaction Yok: Eventual Consistency'yi Tasarımla Kabullenmek
Service'ler arasında distributed transaction (2PC) kullanılmaz; anında tutarlılık gereken kural tek service'te tutulur, birden fazla service'e yayılan akış saga ve compensating action'larla, event'ler outbox ile kurulur. TransactionScope'un Linux ve macOS'ta verdiği gerçek hata, choreography ile çalışan bir checkout saga'sı, domain'deki ara durumlar ve 202 Accepted ile kullanıcıya gösterilen eventual consistency.
Saga'yı .NET'te Uygulamak: Persist Edilen State Machine, Timeout ve Compensation
Bir saga'yı .NET'te güvenilir kılmak için state'ini correlation id ile bulunan ve concurrency token taşıyan bir tabloda saklar, kararı (adım, message) çiftini eşleyen saf bir switch expression'a bırakır, command'ları aynı transaction'da outbox'a yazar ve her bekleme adımına o adıma bağlı bir timeout koyarsın. EF Core ve SQLite ile kayıp ödeme cevabı, timeout yarışı, geç gelen ödeme ve başarısız refund senaryoları gerçek çıktılarla; aynı saga MassTransit 8 ve Wolverine ile, lisans notlarıyla.