DynamoDB Global Tables (Küresel Tablolar), DynamoDB tablolarınızı birden fazla AWS bölgesinde (region) otomatik olarak çoğaltmanıza olanak tanıyan tam yönetilen bir çözümdür. Bu özellik, verilerinizin küresel ölçekte yüksek erişilebilirliğe sahip olmasını ve kullanıcılarınıza düşük gecikmeli erişim sunmanızı sağlar.
Küresel bir uygulama geliştiriyorsanız, kullanıcılarınızın coğrafi konumlarına en yakın bölgeden veri okuması ve yazması performans açısından kritiktir. DynamoDB Global Tables, bu ihtiyacı karşılamak için tasarlanmıştır.
<h2 id="nasil-calisir">Nasıl Çalışır?</h2>DynamoDB Global Tables, verilerinizi asenkron olarak diğer bölgelere replike eder. Bir bölgedeki tabloya yapılan her yazma işlemi, diğer tüm replika bölgelerine otomatik olarak yayılır.
Replikasyon
Global Tables, "multi-master" (çoklu yönetici) yapısını kullanır. Yani, uygulamanız herhangi bir bölgedeki tabloya yazma işlemi yapabilir ve bu değişiklikler diğer bölgelere yansıtılır. AWS, bu replikasyon işlemini genellikle bir saniyenin altında tamamlar.
Çakışma Çözümü (Conflict Resolution)
Aynı veri öğesi üzerinde farklı bölgelerde neredeyse aynı anda değişiklik yapılırsa ne olur? DynamoDB Global Tables, bu durumu "Last Writer Wins" (Son Yazan Kazanır) yöntemiyle çözer. En son yapılan güncelleme geçerli kabul edilir ve tüm bölgelere bu sürüm dağıtılır.
<h2 id="avantajlari">Avantajları</h2>- Düşük Gecikme (Low Latency): Kullanıcılar, kendilerine en yakın AWS bölgesindeki veriye erişir, bu da okuma ve yazma sürelerini minimize eder.
- Yüksek Erişilebilirlik (High Availability): Bir AWS bölgesinde kesinti yaşansa bile, uygulamanız diğer bölgeler üzerinden çalışmaya devam edebilir.
- Felaket Kurtarma (Disaster Recovery): Verilerinizin birden fazla bölgede kopyasının bulunması, veri kaybı riskini ortadan kaldırır.
- Kolay Yönetim: Replikasyon işlemleri tamamen AWS tarafından yönetilir, sizin ekstra bir altyapı kurmanıza gerek kalmaz.
DynamoDB Global Table oluşturmak oldukça basittir. AWS Yönetim Konsolu, AWS CLI veya Terraform gibi araçlarla bu işlemi gerçekleştirebilirsiniz.
Aşağıda AWS CLI kullanarak basit bir Global Table oluşturma örneği verilmiştir:
aws dynamodb create-global-table \
--global-table-name MyGlobalTable \
--replication-group RegionName=us-east-1 RegionName=eu-central-1
Bu komut, us-east-1 ve eu-central-1 bölgelerinde replikasyona sahip MyGlobalTable adında bir küresel tablo oluşturur.
Not: Global Table oluşturmadan önce, DynamoDB Streams özelliğinin etkinleştirilmiş olması gerekir.
Daha fazla teknik detay için AWS DynamoDB Global Tables Dokümantasyonu'nu inceleyebilirsiniz.
<h2 id="sik-karsilasilan-zorluklar">Sık Karşılaşılan Zorluklar</h2>- Veri Çakışmaları: Eş zamanlı yazma işlemlerinde "son yazan kazanır" kuralı geçerlidir. Bu durum bazı uygulamalar için uygun olmayabilir.
- Replikasyon Gecikmesi: Verilerin bölgeler arası senkronizasyonu anlık değildir (asenkron). Çok hassas tutarlılık gerektiren durumlarda dikkatli olunmalıdır.
- Maliyet: Veri transfer ücretleri ve yazma kapasitesi (WCU) kullanımı, her bölge için ayrı ayrı hesaplanır ve maliyeti artırabilir.
DynamoDB Global Tables, küresel ölçekte hizmet veren uygulamalar için vazgeçilmez bir özelliktir. Düşük gecikme süresi ve yüksek erişilebilirlik gereksinimlerini karşılamak için mükemmel bir çözümdür. Ancak, tutarlılık modellerini ve maliyet yapısını iyi anlamak önemlidir.
<h2 id="sss">Sıkça Sorulan Sorular (SSS)</h2>1. DynamoDB Global Tables kullanmanın maliyeti nedir?
Maliyet, kullanılan depolama alanı, okuma/yazma kapasitesi ve bölgeler arası veri transferine göre belirlenir. Replikasyon için kullanılan yazma kapasitesi (rWCU) ayrıca ücretlendirilir. Detaylı bilgi için AWS Fiyatlandırma sayfasına bakabilirsiniz.
2. Hangi tutarlılık modelini kullanmalıyım?
Global Tables varsayılan olarak "Eventual Consistency" (Nihai Tutarlılık) modelini kullanır. Bölgeler arası güçlü tutarlılık (Strong Consistency) desteklenmez.
3. Mevcut bir tabloyu Global Table'a dönüştürebilir miyim?
Evet, mevcut bir tabloyu Global Table'a dönüştürebilirsiniz. Ancak, tablonun DynamoDB Streams özelliğinin etkinleştirilmiş olması gerekir.
Daha fazla bilgi için AWS Danışmanlığı ve Kubernetes Danışmanlığı sayfalarımızı ziyaret edebilirsiniz. Ayrıca ana sayfamıza buradan ulaşabilirsiniz.
Kaynak / Source: https://awsfundamentals.com/blog/dynamodb-global-tables