CQRS bir tasarım desenidir. Bu tasarım deseninin amacı nedir ve neyi amaçlamaktadır avantajlarından bahsedeceğim.
CQRS’un açılımından da anlaşılacağı üzere CQRS komutların ve sorguların birbirinden ayrılmasını amaçlamaktadır. Yazılım projelerimizde kullandığımız Create, Read, Update ve Delete işlemleri (Command) Komut olarak ayırırken sorgulama işlemlerimizi ise Query kısmına karşılık gelmekte.
Command ve Query işlemlerini ayırarak, command ve query DTO (Data Transfer Object)’lerimizi ayırıyoruz. Domainimizin business logic’e göre ayırmış oluyoruz. Bunun avantajı ise servislerimizin ayırılması ve daha optimize ve ölçeklenebilir bir sisteme geçmiş oluyoruz. Bu servisleri ayırma cümlesi mikroservisleri çağırıştırabilir.
CQRS tasarım deseni eski bir desen olsa da mikroservislerin artması ile birlikte popüler olmuştur. Yapmış olduğumuz tasarım deseninde command ve query’den kısmını ayırtmak write ve read kısımlarını ayırmak. Mikroservis mimarisi kullandığımız sistemlerde veritabanından veri çekerek ona uygun DTO’lar yardımı ile read ve write işlemlerimizi ayırıyoruz.
Veritabanında write ve read için birbirilerine senkronize olan veritabanlarını ayırıyoruz. Event bazlı haberleşeme servislerimizin haberleşerek write ve read operasyonlarını da ayırarak ölçeklenebilir hale getiriyoruz.
Write Db ile Read Db arasındaki senkronizayon işlemleri için farklı yöntemler bulunmaktadır. En çok kullanılan yöntemlerden birisi event sourcing işlemleridir. Event handling yaparak CQRS yapabilmekteyiz.
Avantajları
- Düşük bağımlılık
- Ölçeklendirme
- Görevleri ayrıştırabilme
- Domain ayrımı yapabilme
- Performans ölçeklendirebilme
- Farklı veritabanları için kullanabilme
Dezavantajları
- Kod karmaşıklığı
- Hata yönetimi
Gateway uygulamamız üzerinden mikroservisimize erişebiliyoruz ve routing işlemini yapabilmekteyiz. Aynı mikroservisimizin bir çok instancesi olsa bile bizim bilmemiz gereken uygulama adı ve gateway portu yeterli olmaktadır ve oldukça kolay. Bu sayedede Load Balancing işlemini de Spring Cloud Gateway API yönetmektedir.
Sonraki Spring Cloud Dersleri’nde görüşmek üzere.
No Comment! Be the first one.