Bulut-yönetilen veritabanları (RDS/Aurora/Cloud SQL/Atlas/Azure SQL)
Belirti
Amaç: Bulut-yönetilen (managed) veritabanlarını kendi kendine yönetilen (self-managed) kurulumlardan ayıran temel farkları öğren; yedek, parametre, failover, izleme, yükseltme ve bağlantının bulutta nasıl çalıştığını kavra.
1. Zihniyet farkı: sunucuya değil servise erişirsin
Managed veritabanlarında OS'e, dosya sistemine veya veritabanı sürecine kabuk (shell) erişimin YOKTUR; SSH yapamaz, konfig dosyalarını elle düzenleyemez, süper kullanıcı olamazsın. Yalnızca sağlayıcının verdiği yönetim API/konsolu ve normal SQL bağlantısı vardır. AWS RDS/Aurora: yönetim tüm kaynak (instance/cluster) düzeyinde, sunucu gizli. GCP Cloud SQL: yalnızca instance API'si, OS yok. MongoDB Atlas: tam yönetilen küme, mongod'a erişim yok. Azure SQL Database: PaaS, altta ne sunucu ne OS görünür (Managed Instance biraz daha fazla kontrol verir). Bu yüzden 'dosyaya bak', 'süreç öldür', 'OS aracını çalıştır' gibi self-managed reflekslerinin çoğu geçersizdir.
2. Yedekleme: otomatik snapshot + point-in-time recovery (PITR)
Yedeği sen zamanlamaz, sağlayıcı otomatik alır; geri dönüş genelde 'belirli bir ana geri yükle' (PITR) veya snapshot'tan yeni instance oluşturma şeklindedir; mevcut instance'ın üzerine yazılmaz. AWS RDS/Aurora: otomatik yedekler + saklama penceresi; PITR ile saniye hassasiyetinde geri yükleme yeni bir instance/cluster olarak açılır; manuel snapshot da alınabilir. GCP Cloud SQL: otomatik yedekler + binary log ile PITR; geri yükleme yeni instance'a. MongoDB Atlas: sürekli cloud backup + PITR (M10+); snapshot'tan restore. Azure SQL: otomatik yedekler yerleşik, 1-35 gün saklama, herhangi bir ana PITR ve silinen DB için restore. Ortak kural: yedek yapılandırmasını (pencere, saklama süresi) doğrula ve düzenli restore testi yap.
3. Parametreler: konfig dosyası değil, parameter group / flags
postgresql.conf veya my.cnf'i elle düzenlemek yerine sağlayıcının parametre soyutlamasını kullanırsın; bazı parametreler kilitlidir ve bir kısmı yeniden başlatma (static) ister. AWS RDS/Aurora: DB parameter group (ve cluster parameter group) ile ayar; dynamic parametreler anında, static olanlar reboot ile uygulanır. GCP Cloud SQL: 'database flags' konsoldan/gcloud ile ayarlanır. MongoDB Atlas: sınırlı 'Additional Settings' + oplog boyutu vb.; çoğu iç parametre yönetilir. Azure SQL: sunucu düzeyi ayarların çoğu yönetilir; davranış SCOPED CONFIGURATION ve service tier seçimiyle değişir. Uygulamadan önce parametrenin dynamic mi static mi olduğunu kontrol et.
4. Yüksek erişilebilirlik / failover: yönetilen Multi-AZ ve replikalar
Failover'ı sen kurmaz, bir kutu işaretleyip sağlayıcıya bırakırsın; standby ve otomatik geçiş yönetilir, bağlantı sabit bir endpoint üzerinden yeni primary'ye yönlenir. AWS RDS: Multi-AZ (senkron standby, otomatik failover); Aurora: çok replikalı depolama + otomatik failover, cluster endpoint yazar'a yönlenir. GCP Cloud SQL: HA yapılandırması (regional, yedek bölgede standby) tek tıkla; okuma replikaları ayrıca eklenir. MongoDB Atlas: replica set zaten yerleşik, çok bölgeli/çok bulutlu yayılım seçilebilir, failover otomatik. Azure SQL: yerleşik HA (Business Critical'de yerel replikalar), zone-redundant seçeneği ve bölgeler arası active geo-replication / failover group. Uygulama daima endpoint'e bağlanmalı, sabit IP'ye değil.
5. İzleme: sağlayıcının metrik ve log servisi
OS araçlarını (top, iostat) çalıştıramadığın için izlemeyi sağlayıcının metrik platformundan yaparsın; CPU, bağlantı sayısı, IOPS, replikasyon gecikmesi ve depolama metrikleri buradadır. AWS: CloudWatch metrikleri + Enhanced Monitoring + Performance Insights (sorgu düzeyi analiz). GCP Cloud SQL: Cloud Monitoring (eski Stackdriver) + Query Insights. MongoDB Atlas: yerleşik Atlas metrics/charts + Performance Advisor + gerçek zamanlı panel. Azure SQL: Azure Monitor + SQL Analytics + Query Performance Insight. Eşik alarmlarını (storage doluluğu, CPU, bağlantı limiti, replica lag) mutlaka kur.
6. Sürüm yükseltme ve bakım: konsoldan, bakım penceresinde
Binary'yi elle güncellemek yerine bir hedef sürüm seçersin; küçük sürüm yamaları çoğunlukla otomatik, büyük sürüm yükseltmeleri planlı ve genelde kesinti/HA failover ile olur. AWS RDS/Aurora: engine version seçimi + otomatik minor upgrade seçeneği + Blue/Green Deployments ile düşük riskli major upgrade. GCP Cloud SQL: maintenance window + self-service major version upgrade. MongoDB Atlas: sürüm yükseltme tek tıkla, yuvarlanan (rolling) biçimde kesintisize yakın. Azure SQL: platform tarafından otomatik yamalanır (sürüm kavramı büyük ölçüde soyutlanmıştır); compatibility level ile davranış ayarlanır. Her zaman önce test/staging kopyada dene ve bakım penceresini iş dışı saate al.
7. Bağlantı ve güvenlik: endpoint + IAM/TLS
Bağlantı her zaman sağlayıcının verdiği DNS endpoint'i üzerinden ve şifreli (TLS) yapılır; ağ erişimi ve kimlik bulut kimlik sistemine bağlanabilir. AWS RDS/Aurora: instance/cluster endpoint + Security Group ile ağ + isteğe bağlı IAM database authentication + TLS (rds-ca sertifikası). GCP Cloud SQL: public IP + Authorized Networks veya private IP/VPC, Cloud SQL Auth Proxy, IAM database authentication, TLS. MongoDB Atlas: SRV connection string (mongodb+srv://), IP access list + private endpoint/peering, SCRAM veya IAM/X.509, TLS zorunlu. Azure SQL: sunucu FQDN endpoint + firewall/Private Link + Microsoft Entra ID (eski Azure AD) kimlik doğrulama + TLS zorunlu. Kural: bağlantı dizesinde sabit IP değil endpoint kullan, TLS'i zorla ve mümkünse bulut IAM kimliğiyle bağlan.