CQRS

  • Proje büyük ve kompleks operasyonlar içeriyorsa,
  • Business logic değişken ise ; projenin heading noktası tam olarak bilinmiyorsa,
  • Bir takımın yazma modelinin parçası olan karmaşık etki alanı modeline, başka bir takımın da okuma modeline ve kullanıcı arabirimlerine odaklanabileceği senaryolar,
  • Scalability (ölçeklenebilirlik) sorunları varsa,
  • Eğer uygulama write-oriented ise ; yani bizim uygulamamız kendi datasını okumuyorsa, bu işi bizim yerimize başka uygulamalar yapıyorsa,
  • Diğer sistemlerle entegre çalışan, alt sistemlerdeki geçici arızaların diğerlerinin kullanılabilirliğini etkilememesi gereken bir uygulamaysa.
  • Ek sütunlar ya da bir işlemin parçası olmayan ancak doğru şekilde güncellenmesi gereken propertyler : bu gibi verilerin read ve write gösterimleri arasında genellikle bir uyumsuzluk olabilir,
  • Komutlar (commands) sync olarak işlenmek yerine, async olarak işlenmek için queue’de olabilir,
  • Her entitiy, verileri yanlış contex’te gösterebilecek read ve write işlemlerine tabidir ;bu da güvenlik ve yetki (security & permission) işlemlerini yönetmeyi zorlaştırabilir,
  • İşlemler aynı data set üzerinde paralel olarak gerçekleştiğinde veri uyumsuzluğu (data contention) ortaya çıkabilir,
  • Geleneksel yaklaşım, data store ve data access layer üzerindeki yük ve bilgi almak için gereken sorguların kompleksliği nedeniyle performans üzerinde olumsuz bir etkiye sahip olabilir.
  • Eğer projemiz basit CRUD operasyonlarını içeriyorsa CQRS kullanmak gereksiz yere karmaşıklığı arttırabilir. Bu yüzden uygulamanın senaryosu dikkate alınmalı ve kompleks işlemlerin olmadığı yerlerde CQRS kullanılmamalıdır. Ayrıca CQRS yapısı tüm mimaride kullanılmak zorunda değildir. Büyük bir yazılım mimarisinin alt gruplarında, daha küçük parçalarında ihtiyaca yönelik olarak kullanılabilir.
  • CQRS mantık olarak oldukça basit görünse de, uygulamayı daha karşmaşık hale getirebilir. Kullanımında bu durum göz önünde bulundurulmalı ve senaryo iyi analiz edilmelidir..
  • Read data modeli write modelindeki değişiklikleri yansıtacak şekilde güncellenmelidir. Kullanıcının eski okuma verilerine dayalı bir request’i bu durumu olduğunda tespit etmek zor olabilir.Yani , CQRS de tutarlılık sağlanmalıdır.

--

--

Mathematical Engineer & Software Developer | www.linkedin.com/in/beyza-celep

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store