Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Data Ownership ve Database per Service: Shared Database'den Neden Kaçınılır?
Shared database, hiçbir contract'ta görünmeyen bir coupling yaratır; her service'in verisi ona private olmalı ve başkaları bu veriye API composition, event'le replike edilen local kopya ya da CQRS read model ile ulaşmalı. SQL Server'da schema seviyesinde yetkiyle sınırı zorlamak, BookRenamed ile version kontrollü kopya, snapshot farkı, reference data ve raporlama için CDC.
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.