Microservices Mimarisinde Veri Yönetimi: Database per Service Pattern

0 yanıt12 görüntülenme
  • microservice
  • mimari
  • dağıtık sistem
Microservices mimarisinde her servisin kendi veritabanına sahip olması önerilen bir pattern'dir. Database per Service pattern, servisler arası coupling'i azaltır ve bağımsız deployment imkanı sunar. Her servisin kendi veritabanı olması, veri modelinin servis ihtiyacına göre optimize edilmesini sağlar. Örneğin, User servisi PostgreSQL kullanırken, Session servisi Redis ve Analytics servisi ClickHouse kullanabilir. Polyglot persistence, her workload için en uygun veritabanını seçme imkanı sunar. Ancak bu yaklaşım distributed data management zorlukları getirir. Cross-service query'ler doğrudan yapılamaz ve API composition veya CQRS pattern'leri kullanılmalıdır. Distributed transaction'lar two-phase commit yerine saga pattern ile yönetilmelidir. Saga pattern, distributed transaction'ları协调 etmek için kullanılır. Her adım bir local transaction'dır ve başarısızlık durumunda compensating transaction'lar çalıştırılır. Choreography-based saga'da event'ler ile servisler koordine edilir. Orchestration-based saga'da merkezi orchestrator transaction akışını yönetir. Event sourcing ve CQRS birlikte kullanıldığında güçlü bir veri yönetimi yaklaşımı sunar. Event sourcing tüm state değişikliklerini event olarak saklar. CQRS okuma ve yazma modellerini ayırarak her birini optimize eder. Event store olarak Kafka veya EventStoreDB kullanılabilir. Data consistency eventual consistency ile sağlanır. Strong consistency microservices mimarisinde pratik değildir ve performans sorunlarına yol açar. Outbox pattern ile event publishing ve database update atomic olarak gerçekleştirilir.
Forum istatistikleri
Toplam Konu
Toplam Mesaj
Toplam Üye
Son Üye