Middle+
CQRS (Komut Sorgu Sorumluluk Ayrımı) nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
CQRS (Komut Sorgulama ve Sorgulama Sorumluluğu Ayrımı) — bir tasarım deseni olup, uygulamada okuma (sorgular - queries) ve yazma (komutlar - commands) işlemlerini ayırır.
Temel ilkeler:
- İşlemlerin ayrılması: Komutlar sistem durumunu değiştirir, ancak veri döndürmez (yaratılan kaynağın kimliği hariç). Sorgular veri döndürür, ancak durumu değiştirmez.
- Farklı veri modelleri: Genellikle, komutlar ve sorgular için kendi görevlerine uygun optimize edilmiş veri modelleri kullanılır. Örneğin, yazma işlemi için ilişkisel veritabanı, okuma için ise belirli görünümler için optimize edilmiş NoSQL veritabanı kullanılabilir.
- Komutların asenkron yürütülmesi: Komut sonrası durum değişikliği, özellikle Event Sourcing ile birlikte kullanıldığında, asenkron gerçekleşebilir.
Avantajlar:
- Ölçeklenebilirlik: Okuma ve yazma işlemleri bağımsız olarak ölçeklenebilir.
- Performans: Her iki tarafın (sorgu/komut) kendi görevlerine göre optimize edilmesi.
- Esneklik: Karmaşık alanlar için daha esnek mimari.
- Sorumlulukların ayrılması: Okuma ve yazma mantığının net ayrımı.
Dezavantajlar:
- Karmaşıklık: CQRS'nin uygulanması mimari karmaşıklık katabilir.
- Tutarlılık: Okuma ve yazma modelleri arasında veri tutarlılığı sorunları (sonuçta tutarlılık) yaşanabilir.
Ön uçta uygulama: CQRS genellikle arka uçta kullanılsa da, bu deseni bilmek, istemci ile sunucu arasındaki etkileşim mimarisini anlamak için faydalıdır, özellikle Event Sourcing kullanan veya yüksek performans gerektiren okuma/yazma işlemleri olan uygulamalarda. Frontend, API aracılığıyla CQRS ile etkileşime geçer; bu API'ler, komutlar (POST, PUT, DELETE) ve sorgular (GET) için endpoint'leri açıkça ayırır.