Ana hizmet
Servisler arası tutarlılığı tasarımla çözün
Dağıtık sistemlerde hataların çoğu kodda değil, servislerin birbirine nasıl bağlandığında saklanır. Tutarlılık sonradan eklenmez, baştan tasarlanır.
- Süre
- 4 ila 10 hafta
- Model
- Tasarım ve referans kod
- Çıktı
- Hedef mimari ve ADR seti
Tutarlılık sorunlarının işaretleri
Bu belirtiler genellikle ayrı ayrı hata kaydı olarak açılır ve tek tek kapatılır. Kök neden ise ortak bir tasarım eksikliğidir.
- Bir işlem yarıda kaldığında sistemler farklı durumlarda kalıyor ve elle düzeltiliyor.
- Mesaj kuyruğunda kaybolan veya iki kez işlenen mesajlar var.
- Bir servis yavaşladığında zincirdeki tüm servisler birlikte yavaşlıyor.
- Raporlama sorguları işlem veritabanını yoruyor.
- Aynı veri birden fazla serviste tutuluyor ve hangisinin doğru olduğu tartışılıyor.
- Bir olayı uçtan uca izlemek için birden fazla sistemin loglarına bakmak gerekiyor.
Desen seçimi bir mühendislik kararıdır
Event sourcing, CQRS, Saga veya Outbox birer çözüm değil; belirli bir problemi belirli bir maliyetle çözen araçlardır. Yanlış yerde kullanıldıklarında çözdüklerinden fazla karmaşıklık getirirler.
Tasarım, sistemin gerçekte hangi tutarlılık seviyesine ihtiyaç duyduğunu belirlemekle başlar. Her işlemin anında tutarlı olması gerekmez; nerede nihai tutarlılığın yeterli olduğunu bilmek, sistemin ölçeklenebilirliğini belirler.
Her önemli karar, gerekçesi ve reddedilen alternatifleriyle birlikte yazılır. Böylece ekibiniz tasarımı yalnızca uygulamakla kalmaz, neden böyle olduğunu da bilir.
Kapsam
Dahildir
- Sınırlı bağlamların (bounded context) belirlenmesi
- Senkron ve asenkron iletişim kararları
- Tutarlılık modeli ve işlem sınırları
- Saga ve telafi (compensation) akışları
- Outbox ve idempotency desenleri
- Olay şeması ve sürüm yönetimi
- Hata ve yeniden deneme politikaları
- Referans uygulama
Dahil değildir
- Tüm sistemin kodlanması
- Veritabanı yönetimi ve işletimi
- Performans testlerinin yürütülmesi
- Ürün gereksinimlerinin belirlenmesi
Tasarım nasıl ilerliyor
- Hafta 1-2Event Storming. İş süreçleri ekibinizle birlikte olaylar üzerinden çıkarılır. Bağlam sınırları bu çalışmadan doğar.
- Hafta 3-4Tutarlılık modeli. Hangi işlemin hangi tutarlılık seviyesine ihtiyaç duyduğu belirlenir. Servisler arası iletişim biçimleri bu karara göre seçilir.
- Hafta 5-8Referans uygulama. Seçilen desenler çalışan kodla gösterilir: bir Saga akışı, Outbox ile olay yayını ve idempotent bir tüketici.
- Hafta 9-10Devir. Tasarım dokümanı, karar kayıtları ve referans kod ekibinizle birlikte gözden geçirilir.
Elinize ne geçiyor
Tasarımın her parçası, ekibinizin uygulayabileceği somut bir çıktıya dönüşür.
Bu hizmet kimin için değil
- Tek bir veritabanı ve tek bir uygulamayla rahatça çalışan sistemler. Dağıtık mimari bir ihtiyaçtan doğmalı, bir hedef olmamalı.
- Tasarımı yalnızca bir çizim olarak isteyen ve uygulamayı ekibiyle tartışmaya açık olmayan kurumlar.
- Belirli bir deseni önceden seçmiş ve yalnızca onay bekleyen projeler.
Sık sorulanlar
Event sourcing kullanmamız gerekiyor mu?
Çoğu sistemde gerekmiyor. Event sourcing, geçmişin tam kaydının bir iş gereksinimi olduğu yerlerde değerlidir; diğer durumlarda gereksiz karmaşıklık getirir. Önerimiz sistemin ihtiyacına göre şekillenir.
Mikroservislere geçmeden bu tasarımı uygulayabilir miyiz?
Evet. Bağlam sınırları ve tutarlılık kuralları modüler bir monolit içinde de uygulanabilir. Çoğu durumda doğru ilk adım da budur.
Hangi teknolojilerle çalışıyorsunuz?
.NET, Go ve Python ekosistemleri; mesajlaşma tarafında Kafka ve RabbitMQ; veri tarafında PostgreSQL, MongoDB ve Redis. Tasarım teknolojiden bağımsızdır, referans uygulama ekibinizin kullandığı dilde yazılır.
Mevcut sistemimizde tutarlılık sorunları var, nereden başlamalıyız?
Mevcut bir sistemde önce sorunun nerede olduğunu ölçmek gerekir. Bu durumda Mimari Değerlendirme ile başlamanızı öneririz.
Kaynak kod ve dokümanlar kimde kalır?
Tamamı sizde. Tasarım dokümanları, diyagramlar ve referans kod ilk günden itibaren sizin mülkiyetinizdedir.
Tasarımınızı birlikte gözden geçirelim
Otuz dakikada sistemi anlatırsınız; biz tutarlılık sorunlarının nereden kaynaklandığına dair ilk görüşümüzü paylaşırız.
