14 Haz 2025·8 dk okuma

Küçük ekipler için yönetilen vs kendi sunucuda PostgreSQL: tercihler ve bedeller

Yönetilen vs kendi sunucunuzda PostgreSQL: küçük ekipler için yedeklemeler, yükseltmeler, performans kontrolü ve toplam sahip olma maliyetini karşılaştırın.

Küçük ekipler için yönetilen vs kendi sunucuda PostgreSQL: tercihler ve bedeller

Gerçekte neyi seçiyorsunuz

İnsanlar “yönetilen PostgreSQL” derken genellikle PostgreSQL’i sizin için çalıştıran ve rutin işleri halleden bir bulut servisini kastediyorlar. “Kendi sunucusunda PostgreSQL” ise VM, çıplak metal veya container üzerinde sizin çalıştırdığınız ve etrafındaki her şeyin takımınızın sorumluluğunda olduğu durumu ifade eder.

En büyük fark PostgreSQL’in kendisi değil. Asıl fark, çevresindeki operasyonel işler ve gece 2'de bir şey bozulduğunda kimin sorumlu olduğudur. Küçük takımlar için bu operasyon boşluğu riski değiştirir. Kimsenin derin veritabanı operasyon deneyimi yoksa aynı sorun “sıkıntı”dan “üretim kesintisi”ne hızla dönüşebilir.

Yönetilen vs kendi sunucusu PostgreSQL aslında sahiplik hakkında bir karar:

  • Yedeklemeler ve geri yüklemeler (ve işe yaradığını kanıtlama)
  • Yükseltmeler ve güvenlik yamaları
  • Performans, depolama büyümesi ve bağlantı limitlerinin izlenmesi
  • Geceleri geciken yanıtlar veya veritabanı başlamadığında kimin çağrılacağı

Son madde dramatik gelebilir ama pratiktir. Yönetilen bir kurulumda sağlayıcı birçok görevi otomatikleştirir ve genellikle destek ile çalışma kitapları sağlar. Kendi sunucunuzdaysa daha fazla kontrole sahip olursunuz ama disklerin dolması, hatalı konfigürasyon değişiklikleri, başarısız yükseltmeler, gürültülü komşu VM’ler ve unutulmuş uyarılar gibi tüm keskin kenarları da miras alırsınız.

Yanlış seçim genelde birkaç öngörülebilir şekilde kendini gösterir. Takımlar ya kimsenin pratik bir geri yükleme yolu olmadığı için saatler kaybeder ya da sorguları profilize edip ayarlamak için zaman olmadığı için yavaş sorgularla yaşar. Yönetilen kurulumlar depolama ve I/O büyürse veya panikle replika eklerseniz faturalarda sürpriz yapabilir. Kendi sunucuda ise sürekli bebek bakımı gibi gözüken işlerin maliyetini sayana kadar ucuz gibi görünür.

Örnek: 4 kişilik bir ekip, AppMaster gibi no-code bir platformda dahili bir operasyon uygulaması inşa ediyor ve veri modeli için PostgreSQL kullanıyor. Ekip iş akışlarına ve özelliklere odaklanmak istiyorsa yönetilen bir veritabanı genelde aylık “operasyon günü” sayısını azaltır. Katı kontrol ihtiyaçları (özel eklentiler, alışılmadık ağ yapıları, sıkı maliyet sınırları) varsa kendi sunucuda barındırma daha uygun olabilir, ama bunun için gerçekten uçtan uca bir sahibi olması gerekir.

Yedekleme ve geri yükleme: insanların denemeyi unuttuğu kısım

Yedeklemeler bir onay kutusu değildir. Bir hata veya kesintiden sonra verilerinizi yeterince hızlı ve yeterince güncel şekilde geri alabileceğinizin taahhüdüdür. Yönetilen ile kendi sunucunuzu karşılaştırırken küçük takımlar genellikle burada en büyük farkı hisseder.

Çoğu ekip için üç katmana ihtiyacınız vardır:

  • Temel güvenlik için planlı otomatik yedeklemeler
  • Riskli değişikliklerden önce manuel snapshot’lar (ör. şema güncellemeleri)
  • Birinin yanlışlıkla sildiği verinin öncesine dönebilmek için zaman noktasına kadar kurtarma (PITR)

İki terim beklentileri ayarlar:

RPO (Recovery Point Objective) kaybedebileceğiniz veri miktarıdır. RPO’nuz 15 dakika ise en fazla 15 dakika veri kaybıyla geri dönebilecek yedekler ve loglar gerekir.

RTO (Recovery Time Objective) ise ne kadar süreyle kapalı kalabileceğinizdir. RTO’nuz 1 saat ise geri yükleme süreciniz bu hedefi tutturabilecek kadar pratik ve denenmiş olmalıdır.

Geri yükleme testi genelde atlanan şeydir. Birçok ekip çok geç fark eder ki yedeklemeler var ama eksik, geri yüklenmesi çok yavaş veya doğru anahtar/izin olmadığı için kullanılamaz durumdadır.

Kendi sunucuda gizli işler çabuk çıkar: saklama kuralları (kaç gün yedek tuttuğunuz), dinlenmede ve aktarımda şifreleme, erişim kontrolleri ve kimlik bilgileri/anahtarların nerede tutulduğu. Yönetilen servisler genelde varsayılanlar sağlar, ama yine de bunların RPO, RTO ve uyumluluk ihtiyaçlarınıza uygun olup olmadığını doğrulamanız gerekir.

Seçmeden önce bunları net cevaplayabildiğinizden emin olun:

  • Tam bir geri yüklemeyi nasıl yaparım ve tipik olarak ne kadar sürer?
  • PITR destekleniyor mu ve en küçük geri yükleme granülaritesi nedir?
  • Varsayılan saklama ve şifreleme ayarları nedir, değiştirebilir miyim?
  • Kimler yedeklere erişebilir ve geri yükleme yapabilir; bu nasıl denetlenir?
  • Üretimi kesintiye uğratmadan geri yüklemeleri nasıl düzenli test ederiz?

Basit bir alışkanlık yardımcı olur: her çeyrekte geçici bir ortama geri yükleme drili planlayın. AppMaster gibi araçlarla oluşturulmuş uygulamalarda arka planda PostgreSQL olsa bile bu drill “yedeklerimiz var”ı gerçek güvene çevirir.

Yükseltmeler ve yamalama: operasyonel yükü kim taşır

Yükseltmeler basit gelir ama neyi etkilediklerini unutmayın: veritabanı motoru, eklentiler, istemci sürücüleri, yedekler, izleme ve bazen uygulama kodu. Bir DBA yoksa asıl soru “yükseltmeyi kim güvenli hale getirir ve eğer güvenli olmazsa kim çağrılır?”dır.

Küçük vs büyük yükseltmeler (neden farklı hissedilir)

Küçük güncellemeler (ör. 16.1 → 16.2) çoğunlukla hata düzeltmeleri ve güvenlik yamalarıdır. Genelde düşük risklidir ama yine de yeniden başlatma gerektirir ve belirli bir eklenti davranışına bağımlıysanız sorun çıkabilir.

Büyük yükseltmeler (ör. 15 → 16) farklıdır. Sorgu planlarını değiştirebilir, özellikleri kullanımdan kaldırabilir ve bir taşıma adımı gerektirebilir. Yükseltme aracı çalışsa bile performansı doğrulamak ve eklentiler/ORM’lerle uyumluluğu kontrol etmek için zaman ayırmak istersiniz.

Güvenlik yamaları: aciliyet ve zamanlama

Güvenlik düzeltmeleri sprint planınızı beklemez. Kritik bir Postgres veya OpenSSL açığı çıktığında, yamayı bu gece uygulamak mı yoksa planlı pencereye kadar riski kabul etmek mi kararını biri vermelidir.

Yönetilen servislerde yamalar büyük ölçüde sizin için halledilir, ama tam zamanlama üzerinde sınırlı kontrole sahip olabilirsiniz. Bazı sağlayıcılar bakım penceresi seçmenize izin verir; diğerleri kısa bildirimle güncellemeleri itebilir.

Kendi sunucuda tüm takvim sizin olur. Birinin bültenleri takip etmesi, önem derecesini değerlendirmesi, kesintiyi planlaması ve yamanın ana ve replika sunuculara uygulandığını doğrulaması gerekir.

Kendi sunucuda güvenli yükseltmeler genelde vazgeçilmezler ister: üretime yakın bir staging ortamı, yalnızca ikili dosyalar değil veri açısından da rollback planı, eklenti ve sürücü uyumluluk kontrolleri ve kesinti süresini tahmin etmek için gerçekçi bir prova. Ardından kısa bir doğrulama kontrol listesi gerekir: replikasyon, yedekler ve sorgu performansı.

İş saatleri ve sürümler etrafında planlama

En güvenli yükseltmeler kullanıcıların fark etmediği yükseltmelerdir. Küçük ekipler için bu, veritabanı işlerini sürüm ritminizle hizalamak demektir. Büyük bir özellik yayın günüyle aynı güne yükseltme yapmaktan kaçının. Destek yükünün düşük olduğu bir pencere seçin ve sonrasında metrikleri izlemek için birinin hazır bulunmasını sağlayın.

Pratik bir örnek: PostgreSQL üzerine kurulu dahili bir araç dağıtırsanız (örneğin AppMaster ile oluşturulup barındırılan bir uygulama), büyük bir yükseltme yalnızca “DB işi” değildir. API sorgularınızın yük altında nasıl davrandığını değiştirebilir. Sessiz bir yayın planlayın, üretime benzeyen bir kopyada test edin ve canlı veritabanına dokunmadan önce net bir devam/durdur karar noktası belirleyin.

Yönetilen servisler yorgunluğu azaltır. Kendi sunucunuz direksiyon simidini size verir. Asıl fark operasyonel yüktür.

Performans ayarı ve kontrol: özgürlük vs sınırlar

Performans, yönetilen ile kendi sunucusunda PostgreSQL arasındaki farkın en çok hissedildiği yer olabilir. Yönetilen bir serviste genelde güvenli varsayılanlar, panolar ve bazı ayar düğmeleri elde edersiniz. Kendi sunucuda neredeyse her şeyi değiştirebilirsiniz, ama kötü sonuçların sorumluluğu da size aittir.

Neyi değiştirip değiştiremeyeceğiniz

Yönetilen sağlayıcılar genellikle superuser erişimini, bazı sunucu bayraklarını ve düşük seviyeli dosya ayarlarını kısıtlar. Yaygın parametreleri (hafıza, bağlantı limitleri, loglama) ayarlayabilirsiniz ama her şeyi değil. Eklentiler de ayrım yaratır: popüler eklentilerin çoğu mevcut olabilir, ancak niş bir eklenti veya özel derlemeye ihtiyacınız varsa genelde kendi sunucunuz gerekir.

Çoğu küçük ekip egzotik bayraklara ihtiyaç duymaz. Sağlıklı kalmak için gerekenler: iyi indeksler, stabil vacuum davranışı ve öngörülebilir bağlantılar.

Gerçekten işe yarayan ayar çalışmaları

Çoğu PostgreSQL performans kazancı tekrarlanabilir, sıkıcı işlerden gelir:

  • Her gün çalıştırdığınız sorguları (filtreler ve join'ler dahil) indeksleyin
  • Autovacuum ve tablo bloat'ını bir kesinti olmadan önce izleyin
  • Gerçekçi bağlantı limitleri belirleyin ve gerektiğinde havuzlama kullanın
  • Hafızayı uygun boyuta ayarlayın ve gereksiz büyük scan’lerden kaçının
  • Her sürüm sonrası değilse bile her yayın sonrası yavaş sorguları gözden geçirin

“Tam kontrol” değişikliklerin yük altında ne yapacağını bilmeyen bir ekip için tuzak olabilir. Bağlantıları arttırmak, güvenlik ayarlarını devre dışı bırakmak veya hafızayı “optimize etmek” kolaydır ve rastgele zaman aşımı ile çöküşlere yol açabilir. Yönetilen servisler guardrail ekler: biraz özgürlükten vazgeçersiniz ama kendinizi incitme yollarını azaltırsınız.

Ayarlamayı yönetilebilir kılmak için onu kahramanca bir iş olarak değil rutin bakım gibi ele alın. En azından CPU ve hafıza baskısını, disk I/O ve depolama büyümesini, bağlantı sayıları ve beklemeleri/kilitleri, yavaş sorguların sıklığını ve hata oranlarını (zaman aşımı, deadlock) görebilmelisiniz.

Örnek: küçük bir ekip yeni bir müşteri portalı gönderir ve sayfalar yavaşlar. Basit yavaş-sorgu takibiyle bir API çağrısının tablo taraması yaptığını tespit ederler. Tek bir indeks eklemek dakikalar içinde çözüm sağlar. Görünürlük yoksa sunucuyu büyüterek tahminde bulunabilirler ve yine de yavaş kalabilirler. Gözlemlenebilirlik genelde her düğmeyi kontrol edebilmekten daha önemlidir.

Küçük ekipler için güvenlik ve uyumluluk temelleri

Bir operasyon aracı daha hızlı başlatın
Haftalarca sürecek altyapı işlerine takılmadan bir iç araç gönderin.
Uygulama Oluştur

Küçük ekipler için güvenlik gösterişli araçlardan ziyade her seferinde yapılan temel işlerdir. Yönetilen ya da kendi sunucunuz fark etmez, çoğu olay basit hatalardan kaynaklanır: veritabanının internetten erişilebilir olması, fazla yetkiye sahip bir kullanıcı hesabı veya rotasyona uğramayan sızdırılmış bir parola.

Sertleştirme ile başlayın. Veritabanınız sıkı ağ kuralları arkasında olmalı (mümkünse özel ağ veya sıkı bir izin listesi). Kimlik bilgileri ve veriler düz metin olarak gönderilmesin diye TLS kullanın. Veritabanı parolalarını üretim gizleri gibi ele alın ve rotasyon planı yapın.

Erişim kontrolünde en az ayrıcalık kuralı işe yarar. İnsanlara ve servislere sadece ihtiyaçları kadar izin verin ve nedenini dokümante edin. Destek yüklenicisinin siparişleri görmesi gerekiyorsa şema değişikliği yetkisine ihtiyacı yoktur.

İyi koruyan basit bir erişim kurulumunun öğeleri:

  • Uygulama trafiği için yalnızca gerekli izinlere sahip bir uygulama kullanıcısı (superuser olmasın)
  • Migrasyon ve bakım için ayrı admin hesapları
  • Analitik ve destek için salt okunur hesaplar
  • Paylaşılan hesap yok, kodda uzun ömürlü kimlik bilgileri yok
  • Bağlantılar ve yetki hataları için loglama açık

Yönetilen sağlayıcılar genelde daha güvenli varsayılanlarla gelir ama yine de bunları doğrulamalısınız. Genel erişimin varsayılan kapalı olup olmadığı, TLS’in zorlanıp zorlanmadığı, dinlenmede şifrelemenin nasıl ele alındığı ve hangi denetim logları/retention sağlandığını kontrol edin. Uyumluluk soruları genelde kanıtla ilgilidir: kim neyi, ne zaman ve nereden erişti?

Kendi sunucuda tam kontrol sizdedir ama ayağınızı tökezletmek de daha kolaydır. Yaygın hatalar 5432 portunu dünyaya açık bırakmak, eski çalışanların kimlik bilgilerini saklamak ve birinin görevi sahiplenmediği için güvenlik yamalarını ertelemektir.

AppMaster gibi bir platformda dahili bir araç inşa ediyorsanız, kural basit olsun: önce ağ erişimini kilitleyin, sonra rolleri sıkılaştırın, ardından gizli anahtar rotasyonunu otomatikleştirin. Bu üç adım çoğu önlenebilir güvenlik baş ağrısını engeller.

Güvenilirlik, failover ve destek beklentileri

Web ve mobil ekranlar ekleyin
Gün 1'den itibaren veri modelinize uyan web ve mobil UI'lar oluşturun.
Şimdi İnşa Et

Güvenilirlik sadece "%99.9 uptime" değildir. Bakım sırasında ne olduğu, kötü bir dağıtımdan ne kadar hızlı dönebildiğiniz ve veritabanı zaman aşımına girdiğinde kimlerin uyanık olduğu da önemlidir. DBA olmayan takımlar için günlük gerçeklik başlık sayıdan daha fazlasıdır.

Yönetilen vs kendi sunucusunda en çok fark, çoğu zaman zor işleri kimin üstlendiğidir: replikasyon, failover kararları ve olay yanıtı.

Yönetilen servisler tipik olarak bölgeler arası replikasyon ve otomatik failover yolu sunar. Bu, tek bir sunucu çöküşünün sizi tamamen düşürme ihtimalini azaltır. Ama sınırları bilmeye değer: failover kısa bir bağlantı kopması, biraz eski veri içeren yeni bir primary veya uygulamanın yeniden bağlanma davranışını gerektirebilir. Bakım pencereleri hâlâ önemlidir çünkü yamalar yeniden başlatma tetikleyebilir.

Kendi sunucuda yüksek erişilebilirlik tasarlamak, test etmek ve sağlıklı tutmak zorunda olduğunuz bir şeydir. Güçlü bir güvenilirliğe ulaşabilirsiniz, ama bunun karşılığında zaman ve dikkat ödersiniz. Birisi replikasyonu kurmalı, failover davranışını tanımlamalı ve sistemin savrulmasını engellemelidir.

Süregelen işler genelde şunları içerir: izleme ve uyarı (disk, hafıza, yavaş sorgular, replikasyon gecikmesi), düzenli failover tatbikleri (çalıştığını kanıtlayın), replika sağlığını koruma ve başarısız düğümleri değiştirme, olayların tek kişiye bağlı olmaması için runbook dokümantasyonu ve gayri resmi bile olsa on-call kapsama.

Felaket kurtarma failover’dan ayrıdır. Failover bir düğüm veya bölge sorununun üstesinden gelir. Felaket kurtarma kötü migrasyonlar, silinen veriler veya bölge çapında kesintiler gibi daha büyük olayları kapsar. Küçük takımlar için çok bölge yeterli olabilir. Bölge-ötesi (cross-region) kritik gelir getiren ürünler için mantıklı olabilir ama maliyet ve karmaşıklık artırır ve gecikmeyi yükseltebilir.

Destek beklentileri de değişir. Yönetilen PostgreSQL ile genelde ticket-temelli yardım ve altyapı katmanı için net sorumluluk elde edersiniz. Kendi sunucuda ise destek sizin ekibinizdir: loglar, paket düşmeleri, disk sorunları, kernel güncellemeleri ve gece yarısı hata ayıklamaları. Ürün ekibiniz aynı zamanda operasyon ekibiyse yük konusunda dürüst olun.

Örnek: küçük bir SaaS haftalık pazarlama lansmanları yapıyor. Bir lansman sırasında 10 dakikalık veritabanı kesintisi gerçek iş kaybıdır. Multi-zone failover ve uygulamanın bağlantıları yeniden denemesi ile birlikte yönetilen bir kurulum bu hedefe ulaşmanın en basit yolu olabilir. İç araç inşa ediyorsanız (ör. AppMaster ile ve arka planda PostgreSQL varken), aynı soru geçerlidir: iş ne kadar kesinti tolere edebilir ve kesinti olduğunda kim düzeltecek?

Toplam sahip olma maliyeti: faturanın ötesinde sayılacaklar

Yönetilen vs kendi sunucusunu karşılaştırırken insanlar genelde aylık fiyatı karşılaştırıp orada durur. Daha iyi soru şu: veritabanını güvenli, hızlı ve erişilebilir tutmak ve hâlâ ürünü göndermek için ekibinizin ne kadar ödediğidir?

Önce göze çarpan kalemlerle başlayın. Her iki durumda da compute ve depolama için ödersiniz; ayrıca I/O, yedeklemeler ve bazen ağ çıkışı (örneğin snapshot'tan geri yükleme veya bölgeler arası veri taşımak) ücretleri olur. Yönetilen planlar ekstra depolama, bölge replikaları, daha yüksek IOPS katmanları veya uzun süreli yedekleme tutma ekleyince ucuz görünebilir.

Sonra faturada görünmeyen maliyetleri ekleyin. Eğer atanmış bir DBA’nız yoksa en büyük maliyet genelde insan zamanı olur: on-call olmak, olay sırasında bağlam değişimi, yavaş sorguları debuglamak yerine özellik geliştirmek ve kesintinin iş maliyeti. Kendi sunucuda HA kurulumu, izleme/uyarı, log depolama ve failover için boşta tutulan yedek kapasiteler gibi ekstra işleri de siz üstlenirsiniz.

Sık görülen “sürpriz” maliyetler:

  • Yönetilen: ani I/O patlaması ücretleri, bölgelere replikalar için ödeme, depolamanın sürekli büyümesi, premium destek katmanları
  • Kendi sunuculu: HA araçları ve testleri, izleme altyapısının bakımı, güvenlik yamaları için harcanan zaman, failover için çoğunlukla boşta duran ekstra düğümler

Aylık TCO tahmini için zamanı açıkça saymak işe yarar:

  • Altyapı: compute + depolama + yedeklemeler + beklenen egress
  • Risk tamponu: ani artışlar için %10–30 ekleme
  • İnsan zamanı: aylık saat (on-call, yamalar, tuning) x dolu saat maliyeti
  • Kesinti maliyeti: beklenen kesinti saatleri x iş başına saat maliyeti

Örnek: üç kişilik bir ürün ekibi küçük bir yönetilen veritabanı için ayda 250$ harcıyor olsun. Eğer hâlâ her ay 6 saat yavaş sorgular ve bakım için zaman kaybediyorlarsa (6 x 80$ = 480$), gerçek aylık maliyet kesintiler öncesi 730$ civarına çıkar. Kendi sunucuda ve bu zaman iki katına çıkıyorsa “daha ucuz” görünen seçenek hızla pahalı hale gelebilir.

AppMaster ile uygulama inşa ediyorsanız, veritabanı işlerinin ne kadarının gerçekten özel olduğunu hesaba katın. Takımınız ne kadar az altyapı işine zaman harcarsa, bu dolaylı maliyetler o kadar öne çıkar ve öngörülebilir operasyonların değeri artar.

5 adımda karar verin (DBA gerekmeden)

Dağıtımı daha sonra seçin
AppMaster Cloud'a veya kendi AWS, Azure ya da Google Cloud kurulumunuza dağıtım yapın.
Uygulamayı Dağıt

Küçük bir ekipseniz yönetilen vs kendi sunucusu PostgreSQL kararı tercih değil daha çok gece 2’deki problemlerin kim tarafından ele alınacağı meselesidir.

1) Vazgeçilmeyecekleri yazın

Kabul edilemez kısıtları listeleyin: izin verilen kesinti süresi, veri büyümesi, uyumluluk gereksinimleri ve aylık bütçe tavanı (sadece barındırma değil, insan zamanı dahil).

2) Kurtarmayı bir cümleyle tanımlayın

Veri kaybı ve kesinti süresini kapsayan tek bir hedef yazın. Örnek: “En fazla 15 dakika veri kaybı ve 1 saat içinde tekrar çevrimiçi olma.”

3) Yükseltmelerin gerçekte nasıl yapılacağını kararlaştırın

Yükseltmeleri ertelemek kolaydır. Uygulanabilir bir politika seçin. Bir sahibi (gerçek bir kişi) atayın, küçük yamaları ne sıklıkta uygulayacağınızı söyleyin, büyük yükseltmeleri nerede test edeceğinizi ve geri alma planını belirleyin.

Bu sorulara güvenle cevap veremiyorsanız yönetilen barındırma riski düşürür.

4) Gerçekte ne kadar kontrole ihtiyaç duyduğunuzda dürüst olun

Ekipler genelde “tam kontrol” isterken gerçekte sadece "birkaç özellik" ister. Özel eklentilere, alışılmadık ayarlara, OS düzeyinde erişime veya özel izleme ajanlarına gerçekten ihtiyacınız var mı? Cevap "bir gün lazım olabilir" ise bunu öncelikli olmayan bir istek olarak değerlendirin.

5) Bir işletim modeli seçin ve sahipleri atayın

Yönetilen (sağlayıcı çoğu operasyonu yürütür), kendi sunucunuzda barındırma (her şeyi siz yönetirsiniz) veya hibrit (yönetilen veritabanı, kendi sunucunuzdaki uygulamalar) modellerinden birini seçin. Küçük takımlar için hibrit sık tercih edilir çünkü önemli kontrolde kalırken veritabanı operasyon yükünü azaltır.

Hızlı senaryo: 4 kişilik bir ekip başlangıçta kendi sunucuda barındırmayı tercih edebilir fakat yoğun hafta içinde bir disk dolduğunda pişman olabilir. AppMaster ile dağıtım yapıyorsanız, veritabanının nerede çalıştığını işletme kararı olarak ele almak genelde en esnek yaklaşımdır.

Doğru karar, on-call yükünün ekip büyüklüğüyle uyumlu olduğu ve kurtarma hedeflerinin gerçekçi, yazılı ve sahipli olduğu zamandır.

Sonradan acı veren yaygın hatalar

Üretilen kodla kontrolü elinizde tutun
İhtiyaç duyduğunuzda backend, web ve native mobil uygulamalar için gerçek kaynak kodu alın.
Kod Üret

Çoğu ekip yönetilen vs kendi sunucusunu seçmekten yanılmaz. Yanılganın sebebi sıkıcı kısımların kendiliğinden halledileceğini varsaymaktır.

Klasik örnek: bir ekip müşteri portalını yayına alır, otomatik yedeklemeyi açar ve güvende hisseder. Aylar sonra biri gece geç saatlerde bir tabloyu siler. Yedeklemeler vardır ama kimse geri yükleme adımlarını, süresini veya hangi verinin eksik olacağını bilmez.

En kötü zamanda ortaya çıkan hatalar:

  • Yedeklemeler “açık” değil “kanıtlanmış” olarak ele alınmalı. Planlı restore drill’leri yapın, zamanlayın, giriş yapabildiğinizi ve ana kayıtların sağlam olduğunu doğrulayın. PITR kullanıyorsanız onu da test edin.
  • Yükseltmeler doğrudan üretimde yapılmamalı. Küçük yamalar bile eklenti veya konfigürasyon sürprizleri getirebilir. Staging’de prova yapın ve geri alma planı yazın.
  • Yanlış sırayla erken tuning yapmak. Genelde daha büyük kazançlar yavaş sorguyu sabitlemek, doğru indeksi eklemek veya fazla konuşan sorguları azaltmaktan gelir.
  • Bağlantı yönetimi göz ardı edilmemeli. Modern uygulamalar çok sayıda kısa bağlantı oluşturur; havuzlama olmadan bağlantı limitlerini aşabilirsiniz.
  • Sahipliğin net olmaması. “Herkes veritabanından sorumludur” genellikle kimsenin müdahale etmediği, riskli değişiklikleri onaylamadığı ve runbook’ları güncellemediği anlamına gelir.

Bir alışkanlık hepsini önler: veritabanı için kim on-call, nasıl yeni bir instance’a geri yükleme yapılacağı ve yükseltme planının nasıl çalıştığını (kim onaylıyor) yazılı hale getirin.

AppMaster gibi bir no-code platformla çalışsanız bile bu hatalar önemini korur. Uygulamanız üretime hazır olabilir ama yine de test edilmiş geri yüklemelere, sakin bir yükseltme sürecine ve bağlantı/rol sorumluluk planına ihtiyacınız var.

Hızlı kontroller, gerçekçi örnek ve sonraki adımlar

Kararı 15 dakikada cevaplanabilecek birkaç kontrolle somutlaştırın. Bu kontroller riskleri hızlıca ortaya çıkarır, ekipte kimse veritabanı uzmanı olmasa bile.

Bugün yapabileceğiniz hızlı kontroller

Yedekler ve erişim kontrolleriyle başlayın. Cevapları herkesin bulabileceği bir yere yazın.

  • Son geri yükleme testi ne zaman yapıldı ve yeni bir ortama başarılı şekilde geri yüklendi mi?
  • Saklama süreniz nedir (ör. 7, 30, 90 gün) ve ihtiyacı karşılıyor mu?
  • Yedekleri kim silebilir veya saklama süresini kim değiştirebilir; bu erişim kısıtlı mı?
  • Yedekler nerede saklanıyor ve şifreli mi?
  • Hedef RPO/RTO’nuz nedir?

Sonra yükseltmeler ve izlemeye bakın. Küçük takımlar “sonra yaparız” demekten zarar görür.

  • Yükseltme periyodunuz nedir (aylık yamalar, çeyreklik gözden geçirme) ve sahibi kim?
  • İş tarafından kabul edilen bir bakım penceresi var mı?
  • Mevcut Postgres sürümünü ve EOL tarihlerini net görebiliyor musunuz?
  • Disk büyümesi, CPU patlamaları ve başarısız yedekler için uyarılar var mı?
  • En yavaş 5 sorguyu görebiliyor musunuz?

Bir alışkanlık daha: depolama %10 ayda büyürse sınırınıza ne zaman ulaşacağınızı biliyor musunuz? Bunu zor yoldan öğrenmeden önce takvime hatırlatma koyun.

Gerçekçi 5 kişilik ekip örneği

5 kişilik bir ekip destek ve operasyon için dahili bir araç inşa ediyor. Başta birkaç tablo var, sonra biletler, ekler, denetim logları ve günlük içe aktarmalar büyüyor. Üç ay sonra veritabanı 5 kat büyür. Bir Pazartesi şemada yapılan değişiklik kritik bir ekranı yavaşlatır ve ekip “Geri alabilir miyiz?” diye sorar. Yedekleri olduğunu fark ederler ama hiç geri yükleme denememiş oldukları ve ne kadar sürdüğünü bilmedikleri için panik yaşarlar.

Sonraki adımlar

RPO/RTO’nuzu ve ekibinizin bunu haftalık olarak işleyecek kapasitesini karşılayan en basit seçeneği tercih edin, “bir gün” değil. Yığınınızı esnek tutun ki daha sonra yeniden yazmadan taşıyabilesiniz.

AppMaster ile inşa ediyorsanız, uygulama teslimini veritabanı operasyonlarından ayırmak yardımcı olabilir: PostgreSQL’de veriyi modelleyin, üretime hazır backend, web ve mobil uygulamalar üretin ve AppMaster Cloud veya ana bulut sağlayıcılarına dağıtın. Bu, “Postgres nerede çalışıyor” kararını yeniden yazma gerektiren bir teknik karardan ziyade işletimsel bir karar haline getirir. Daha fazla bilgi için AppMaster markasını ve appmaster.io metinlerini inceleyebilirsiniz.

SSS

Küçük bir ekip varsayılan olarak yönetilen mi yoksa kendi sunucusunda mı PostgreSQL kullanmalı?

Ekipten kimsenin güvenilir şekilde yedekleme, geri yükleme, yamalama ve olay müdahalesi yapamayacağı durumlarda varsayılan olarak yönetilen PostgreSQL tercih edin. Eğer OS düzeyinde kontrol, özel derlemeler veya nadir eklentiler, sıkı ağ topolojileri ya da sağlayıcının karşılayamayacağı kesin maliyet kısıtları gerekiyorsa ve operasyonlar için net bir sahibi (gerçek bir kişi) varsa kendi sunucunuzda barındırın.

Neden sadece "yedek var" demektense geri yükleme testleri daha önemli?

Çünkü geri alınamayan veya yavaş geri alınan bir yedek, sahte bir güven hissinden başka bir şey değildir. Geri yükleme testleri gerçek RTO’nuzu (gerçek çalışma süresi kaybı) ve RPO’nuzu (gerçek veri kaybı penceresi) gösterir ve yetki/anahtar/prosedürlerin baskı altında işe yaradığını doğrular.

RPO ve RTO basitçe ne anlama gelir ve nasıl belirlenir?

RPO kaybedebileceğiniz veri miktarıdır; RTO ise hizmetin ne kadar süreyle kapalı kalabileceğidir. İşin devam edebileceği rakamları seçin, sonra düzenli olarak uygulayabileceğiniz ve pratikte ulaşabileceğiniz bir geri yükleme yolu kurun — teorik değil.

Ne sıklıkla geri yükleme tatbiki yapmalıyız ve içinde ne olmalı?

Tam bir geri yüklemeyi ayrı bir geçici ortama yapın, zamanı ölçün ve kritik verileri ile giriş bilgilerini doğrulayın. En az üç ayda bir yapın, ayrıca şema değişiklikleri, büyük içe aktarmalar veya izin değişikliklerinden sonra ekstra test yapın.

DBA olmadan PostgreSQL yükseltmeleri ne kadar riskli ve nasıl planlanmalı?

Küçük yamalar genellikle yeniden başlatma gerektirir ve düşük risklidir ama koordinasyon ister. Büyük sürüm yükseltmeleri davranış ve performansı değiştirebilir; bu yüzden staging ile prova, veri de göz önüne alınan geri alma planı ve sessiz bir yayın penceresi planlayın.

Yönetilen servislerin (örneğin superuser yok) sınırları ne zaman gerçek bir sorun olur?

Eğer sınırsız superuser erişimine, özel eklentilere veya derin OS/disk kontrole ihtiyacınız varsa kendi sunucunuz daha pratiktir. Çoğu ekip için yönetilen servisler yaygın ihtiyaçları daha az riske sokarak karşılar.

Küçük ekipler için bağlantı limitleri ve pooling neden bu kadar önemli?

Çok kısa ömürlü bağlantılar PostgreSQL kaynaklarını tüketebilir ve CPU normal görünürken rastgele zaman aşımı yaşatabilir. Erken dönemde bağlantı havuzu kullanın, gerçekçi bağlantı limitleri belirleyin ve failover ya da yeniden başlatma sonrası uygulamanın düzgün yeniden bağlandığından emin olun.

Sürpriz kesintileri önlemek için hangi izleme araçlarına sahip olmalıyız?

Gün 1'de disk kullanımı ve büyüme oranı, CPU ve hafıza baskısı, I/O doygunluğu, bağlantı sayısı, replika gecikmesi (varsa) ve başarısız yedeklemelerle başlayın. Ardından yavaş sorgu görünürlüğü ekleyin — tek kötü sorguyu indeksleyerek çözmek genelde sunucu büyütmekten daha ucuzdur.

Küçük bir ekip için PostgreSQL güvenliğinin en önemli temelleri nelerdir?

Veritabanını mümkünse internete açık tutmayın, TLS zorlayın ve en az ayrıcalık prensibini uygulayın. Uygulama trafiği için tek bir uygulama kullanıcısı, migrasyon ve bakım için ayrı admin hesapları, analiz için salt okunur hesaplar, paylaşılan oturum açma yok ve kimlik bilgilerini kodda tutmama en kritik adımlardır. Erişimin kaydedildiğinden emin olun.

Yüksek erişilebilirlik (failover) ile felaket kurtarma arasındaki fark nedir?

Failover, tek bir düğüm veya bölge hatasını minimal kesintiyle atlatmaya yöneliktir; felaket kurtarma (disaster recovery) ise hatalı migrasyonlar, silinen veriler veya bölge çapında kesintiler gibi daha büyük olaylardan geri dönmeyi kapsar. Yönetilen servisler genelde failover'ı kolaylaştırır ama insan hataları için mutlaka bir geri yükleme planınız olmalı.

Başlaması kolay
Harika bir şey yaratın

Ücretsiz planla AppMaster ile denemeler yapın.
Hazır olduğunuzda uygun aboneliği seçebilirsiniz.

Başlayın