İçeriğe atla
Makale

DBaaS (Database as a Service) Nedir? Yönetilen Veritabanı

DBaaS'ta sağlayıcının ve sizin işinizi, yedek ve zamanda geri dönmeyi, replikasyonu, ölçeklemeyi, sanal makineden farkını ve ödünleşimleri anlattık.

Oğuzhan Gerçek··8 dk okuma
DBaaS (Database as a Service) Nedir? Yönetilen Veritabanı

Kısa cevap: DBaaS (database as a service, hizmet olarak veritabanı), veritabanının bir sağlayıcı tarafından işletildiği bulut hizmetidir; kullanıcı veritabanını konsoldan ya da API'den açar, altındaki sunucuyla uğraşmaz. Amazon RDS, Azure SQL Database ve Google Cloud SQL tipik örnekler. Donanım, işletim sistemi, yama, otomatik yedek ve failover sağlayıcıya geçer; veritabanlarının yönetimi, sorgu ayarı, kullanıcı yetkileri ve verinin kendisi müşteride kalır. Karşılığında sunucuya erişim ve bazı ayarlar kısıtlanır, sağlayıcıya bağımlılık artar; yedeklerin hangi bölgede durduğu da ayrıca denetlenmelidir.

DBaaS nedir?

AWS'nin tanımıyla Amazon RDS, bulutta ilişkisel bir veritabanını kurmayı, işletmeyi ve ölçeklemeyi kolaylaştıran, yaygın veritabanı yönetim işlerini üstlenen bir web hizmeti. Microsoft'a göre Azure SQL Database, yükseltme, yama, yedekleme ve izleme gibi yönetim işlerinin çoğunu kullanıcı müdahalesi olmadan yürüten tam yönetilen bir PaaS veritabanı motoru. Google'a göre Cloud SQL de MySQL, PostgreSQL ve SQL Server için tam yönetilen bir ilişkisel veritabanı hizmeti. Model NoSQL'de de var: AWS'ye göre DynamoDB'de sunucu açmak ya da yazılım kurup yamalamak gerekmiyor (NoSQL yazımız).

NIST'in SP 800-145 tanımındaki üç hizmet modeli SaaS, PaaS ve IaaS; DBaaS bunların arasında ayrıca yer almıyor. Microsoft'un Azure SQL Database için yaptığı gibi PaaS sayılabilir: NIST'in tanımında PaaS kullanıcısı alttaki ağı, sunucuları, işletim sistemini ve depolamayı yönetmez. Modellerin farkını IaaS yazımızda, veritabanı yönetim sistemini VTYS yazımızda anlattık.

Sorumluluk paylaşımı: sağlayıcı ne yapar, size ne kalır?

AWS'nin karşılaştırmasına göre RDS'te donanımdan işletim sistemine, veritabanı yazılımının yamasından yedeğe ve yüksek erişilebilirliğe kadar işletim AWS'de; uygulama optimizasyonu müşteride (DBA yazımız). Müşteride kalanları Google'ın Cloud SQL listesi daha ayrıntılı sayıyor:

  • Veritabanı ve performans: Veritabanlarını ve kullanıcının yazdığı kodu oluşturup yönetmek, performansı iş yüküne göre ayarlamak. AWS de sorgu ayarını (query tuning) müşterinin işi sayıyor.
  • Kurulum kararları: Sürümü, konumu ve boyutu seçmek; yüksek erişilebilirliği ve felaket kurtarmayı yapılandırmak. Google yüksek erişilebilirliği ancak bu ayarın açıldığı sunucularda üstleniyor.
  • Veri ve erişim: Microsoft'a göre veri sınıflandırması, şifreleme kararları, hesaplar ve erişim politikaları her modelde müşteride; uygulama yapılandırması ve kod güvenliği de öyle (SQL injection yazımız). AWS'ye göre ilk kurulumda oluşan ana kullanıcı (master user) uygulamalarda kullanılmamalı.
  • Ağ: AWS, veritabanının bir VPC içinde çalıştırılmasını öneriyor; yeni açılan veritabanının güvenlik duvarı, security group kurallarının izin vermediği her bağlantıyı engeller.

Yedekleme ve zamanda geri dönme (PITR)

AWS'ye göre RDS, yedekleme penceresinde tek tek veritabanlarını değil, veritabanı sunucusunun (DB instance) tamamını depolama snapshot'ıyla yedekler. Saklama süresi 0-35 gün: konsoldan açılan sunucuda varsayılanı 7, API ya da CLI ile açılanda 1 gün; 0 otomatik yedeği kapatır. İşlem günlükleri beş dakikada bir S3'e yüklenir ve saklama süresindeki herhangi bir ana dönülebilir. Azure SQL Database'de saklama 1-35 gün, varsayılanı 7 gün; uzun süreli saklama 10 yıla kadar çıkıyor.

RDS'te zamanda geri dönme kaynak sunucuyu değiştirmez, yeni bir sunucu açar. Bu sunucu varsayılan parametre ve seçenek gruplarıyla gelir; uygulamanın da ona yönlendirilmesi gerekir. Sunucu silinirken otomatik yedekleri saklama seçeneği işaretlenmezse yedekler de silinir. Yedeğin işe yaradığını yine geri yükleme testi gösterir; yedek türlerini yedekleme yazımızda, hizmet olarak yedeklemeyi BaaS yazımızda, veri kaybı hedefinin hesabını RPO ve RTO rehberimizde anlattık.

Yüksek erişilebilirlik ve okuma kopyaları

  • Multi-AZ: RDS'in Multi-AZ DB instance kurulumu, başka bir erişilebilirlik bölgesinde (Availability Zone) senkron güncellenen ve okuma trafiği almayan bir yedek sunucu (standby) tutar. Arızada geçiş otomatiktir ve AWS'ye göre tipik olarak 60-120 saniye sürer; DNS kaydı değiştiği için uygulama bağlantılarını yeniden kurmalıdır.
  • Okuma kopyası (read replica): RDS'te değişiklikler kopyaya asenkron aktarılır. Kopya yalnız okuma bağlantısı kabul eder, okuma yükünü birincil sunucudan alır ve felakette bağımsız bir veritabanına dönüştürülebilir.

Senkron ve asenkron replikasyon farkını replikasyon yazımızda, bölge kaybına karşı planı DRaaS yazımızda ele aldık.

Ölçekleme

Üç kaynağın ölçeklenme kuralı farklı:

  • İşlem gücü: RDS'te sunucu sınıfını değiştirmek kesinti yaratır; AWS'ye göre Multi-AZ bu kesintiyi en aza indirir. Azure SQL Database'de tek veritabanı kesintisiz ama elle büyütülüp küçültülür; serverless katmanda işlem gücü iş yüküne göre kendiliğinden ölçeklenir ve saniye başına faturalanır.
  • Depolama: RDS'te otomatik ölçekleme açıksa boş alan en az beş dakika boyunca %10 ya da altında kaldığında disk büyür. Ters yönü yok: ayrılmış alan sonradan azaltılamaz.
  • Okuma kapasitesi: Okuma kopyası eklenerek artırılır; yazmalar birincil sunucuya gider.

DBaaS, sanal makine ve kurum içi veritabanı farkı

AWS'ye göre kurum içinde sunucunun, işletim sisteminin ve veritabanı yazılımının bütün sorumluluğu sizde. Veritabanını bir sanal makinede (EC2) çalıştırınca donanım sağlayıcıya geçer, ama işletim sistemini ve veritabanı yazılımını elle güncellerken yapılan bir hata uygulamayı durdurabilir.

Sanal makinenin kazancı kontrol: NIST'in IaaS tanımında kullanıcı işletim sistemini denetler ve istediği yazılımı kurar. SP 800-146'ya göre iş yüklerinin taşınabilirliği de genellikle IaaS'ta daha kolay sağlanıyor. DBaaS modeli kurum içinde de kurulabilir: OpenStack'in Trove projesi kendini OpenStack için Database as a Service olarak tanımlıyor. Yönetilen platform modelini yönetilen platform hizmetleri sayfamızda anlattık.

DBA'nın işi nasıl değişir?

DBaaS kurulum ve yama yükünü azaltır ama DBA'nın işini ortadan kaldırmaz:

  • Sürüm takvimi: RDS küçük sürümleri bakım penceresinde kendiliğinden yükseltebilir. Uyumsuz değişiklik içerebilen ana sürüm yükseltmesini ise siz başlatırsınız; AWS önce bir test sunucusunda denemeyi öneriyor. Standart destek bitince RDS Extended Support, MySQL ve PostgreSQL için ek ücretle en fazla 3 yıl ek süre tanır; ardından RDS ana sürümü kendisi yükseltir.
  • Bakım: Bazı bakım işleri sunucuyu kısa süre çevrim dışı bırakır. Haftalık 30 dakikalık pencereyi siz seçmezseniz RDS onu rastgele bir güne koyar.
  • Performans: Azure SQL Database'in otomatik ayar özelliğinde gerileyen sorgu planı yerine son iyi planı zorlama seçeneği varsayılan olarak açık, indeks oluşturma ve silme kapalı.

Günlük işletimi veritabanı platformu ve operasyonları, ekiplerin kendi veritabanını açabildiği platform katmanını veritabanı platform mühendisliği hizmetimizde ele alıyoruz.

Ödünleşimler: bağımlılık, maliyet, ayar sınırları ve veri konumu

Sık sorulan sorular

DBaaS ne demek? Database as a service, yani hizmet olarak veritabanı demek. Kurulum, yama, yedek ve yüksek erişilebilirlik sağlayıcının işidir; kullanıcı veritabanını açıp uygulamasını bağlar.

Yönetilen veritabanı ile DBaaS aynı şey mi? Çoğu zaman aynı anlamda kullanılır. AWS, Microsoft ve Google bu hizmetleri yönetilen (managed) ya da tam yönetilen (fully managed) veritabanı diye tanımlıyor.

DBaaS örnekleri nelerdir? İlişkisel tarafta Amazon RDS, Azure SQL Database ve Google Cloud SQL; NoSQL tarafında Amazon DynamoDB bilinen örnekler.

DBaaS platformu kendi veri merkezimizde kurulabilir mi? Evet, kurum içi bir bulut platformunun üzerinde kurulabilir. OpenStack'in Trove projesi kurulum, yapılandırma, yama, yedek, geri yükleme ve izleme işlerini otomatikleştirmeyi hedefliyor; platformun kendisini işletmek ise kuruma düşer.

Kaynaklar