Sayfalar

2 Mart 2025 Pazar

Mikroservis mimarisinde veri yönetim şekilleri

 Mikroservis mimarisinde en iyi veya en çok kullanılan veri yönetim yöntemi, sistemin ihtiyaçlarına bağlıdır. Ancak, genel olarak en çok tercih edilen ve ölçeklenebilirliği artıran yöntem "Database per Service" yaklaşımıdır.

Buna ek olarak, yüksek ölçeklenebilirlik, performans ve veri tutarlılığı sağlamak için aşağıdaki teknikler birlikte kullanılır:


1. En Çok Kullanılan ve Önerilen Yöntem: "Database per Service"

Bu yöntemde, her mikro servis kendi veritabanına sahiptir ve birbirlerinden bağımsız olarak çalışır.

Bağımsız ölçeklenebilirlik sağlar.
Mikro servislerin birbirini etkilemeden gelişmesini kolaylaştırır.
Farklı servisler için en uygun veritabanı seçilebilir (SQL veya NoSQL gibi).
Ancak, dağıtık veri tutarlılığı (Consistency) ve sorgulama karmaşıklığı gibi bazı zorlukları vardır.

Bu yüzden aşağıdaki ek teknikler ile desteklenir:


2. Okuma-Yazma Performansını Artırmak için CQRS + Read Replicas

  • CQRS (Command Query Responsibility Segregation): Okuma (Read) ve yazma (Write) işlemlerini farklı veri kaynaklarına yönlendirerek yükü dengeler.
  • Read Replicas: Okuma işlemleri için veritabanı kopyaları (replicas) oluşturularak yük dağıtılır.

Okuma işlemleri çok hızlı hale gelir.
Ana veritabanı üzerindeki yük azalır.
Yazma işlemleri tutarsızlık sorunları yaratabilir, bu yüzden eventual consistency göz önünde bulundurulmalıdır.


3. Dağıtık İşlemler İçin "Saga Pattern" Kullanımı

Veri tutarlılığı (Data Consistency) en büyük problemlerden biridir.

  • Saga Pattern, birden fazla mikro servis arasında uzun süren işlemleri yönetmek için kullanılır.
  • Event-Driven (Olay Tabanlı) yaklaşım ile servisler birbirleriyle haberleşir.

Dağıtık işlemlerin başarısız olması durumunda geri alma (rollback) sağlanabilir.
Senaryoya bağlı olarak karmaşık bir yapı oluşturabilir.


4. Büyük Ölçekli Sistemlerde: "Sharding"

  • Veriyi belli kriterlere göre bölerek (shard), birden fazla veritabanına dağıtmak.
  • Örneğin, kullanıcı verilerini bölgelere (region) veya müşteri kimlik numarasına göre ayırmak.

Yüksek ölçeklenebilirlik sağlar.
Veri sorgulama zorlaşabilir.


5. Event Sourcing + Message Queue (Kafka, RabbitMQ) Kullanımı

  • Tüm verileri olay tabanlı olarak kaydetmek ve servislere olaylar aracılığıyla iletmek.
  • Kafka, RabbitMQ gibi mesaj kuyrukları ile asenkron veri paylaşımı sağlanır.

Mikro servisler birbirinden bağımsız çalışabilir.
Veri geçmişini saklama avantajı sağlar.
Gerçek zamanlı tutarlılık yerine "eventual consistency" modeli uygulanır.


Sonuç: En Çok Kullanılan Kombinasyon

Gerçek dünyada büyük ölçekli sistemlerde en çok kullanılan yaklaşım şudur:
Database per Service yaklaşımı (her mikro servisin kendi veritabanı var)
CQRS + Read Replicas (Okuma ve Yazma ayrı yönetilir)
Saga Pattern (Dağıtık işlemler için)
Message Queue + Event Sourcing (Veri senkronizasyonu için)
Sharding (Çok büyük sistemlerde veriyi bölmek için)

Bu kombinasyon, yüksek ölçeklenebilirlik ve performans sağlarken bağımsız geliştirme ve dağıtımı da mümkün kılar.

Hiç yorum yok:

Yorum Gönder