Sobes.tech
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:

  1. İş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.
  2. 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.
  3. 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.