Hetzner mi DigitalOcean mu: VPS Karşılaştırması

Yıllar önce bir startup’ın altyapısını kurarken ilk kez bu ikilemi yaşadım: Hetzner mi, DigitalOcean mu? O dönemde “bilinen” tercih DigitalOcean’dı çünkü dokümantasyonu güzeldi, arayüzü temizdi ve herkes kullanıyordu. Ama fatura gelince gerçekler ortaya çıktı. Bugün bu iki sağlayıcıyı gerçek kullanım senaryolarıyla, para konuşacak şekilde karşılaştıracağım.

Fiyatlandırma: Rakamlar Yalan Söylemez

Önce rakamları netleştirelim. Benzer konfigürasyonlar için şu an geçerli olan yaklaşık fiyatlar:

DigitalOcean Droplets:

  • 1 vCPU / 1 GB RAM / 25 GB SSD: ~6 USD/ay
  • 2 vCPU / 2 GB RAM / 60 GB SSD: ~18 USD/ay
  • 4 vCPU / 8 GB RAM / 160 GB SSD: ~48 USD/ay

Hetzner Cloud:

  • 2 vCPU / 2 GB RAM / 40 GB SSD (CX22): ~4.35 EUR/ay
  • 2 vCPU / 4 GB RAM / 80 GB SSD (CX32): ~6.90 EUR/ay
  • 4 vCPU / 8 GB RAM / 160 GB SSD (CX42): ~16.90 EUR/ay

Kur farkını da hesaba katsan Hetzner ciddi oranda daha ucuz. Bu fark özellikle çok sayıda sunucu ayağa kaldırman gerektiğinde katlanarak büyüyor. On sunuculu bir test ortamı kurduğunda bu ayrım binlerce dolara dönüşebiliyor.

Ama fiyat tek başına karar kriteri olmamalı. Gelin daha derine inelim.

API ve Otomasyon Desteği

İki sağlayıcı da güçlü API’lara sahip. Ancak günlük kullanımda farklar hissediliyor.

Hetzner API ile basit bir sunucu oluşturma:

curl -X POST https://api.hetzner.cloud/v1/servers 
  -H "Authorization: Bearer $HETZNER_TOKEN" 
  -H "Content-Type: application/json" 
  -d '{
    "name": "web-prod-01",
    "server_type": "cx22",
    "image": "ubuntu-22.04",
    "location": "nbg1",
    "ssh_keys": ["my-key"]
  }'

DigitalOcean API ile aynı işlem:

curl -X POST https://api.digitalocean.com/v2/droplets 
  -H "Authorization: Bearer $DO_TOKEN" 
  -H "Content-Type: application/json" 
  -d '{
    "name": "web-prod-01",
    "region": "fra1",
    "size": "s-1vcpu-1gb",
    "image": "ubuntu-22-04-x64",
    "ssh_keys": ["your-key-id"]
  }'

İkisi de benzer yapıda. Ancak Hetzner API’ının yanıt süreleri genellikle daha hızlı ve tutarlı. DigitalOcean bazen API çağrılarında gecikme yaşatabiliyor, özellikle yoğun dönemlerde.

Terraform kullananlar için her iki sağlayıcının da resmi provider’ı var. Hetzner provider’ı son dönemde ciddi geliştirmelerden geçti:

terraform {
  required_providers {
    hcloud = {
      source  = "hetznercloud/hcloud"
      version = "~> 1.45"
    }
  }
}

provider "hcloud" {
  token = var.hetzner_token
}

resource "hcloud_server" "web" {
  name        = "web-prod-01"
  image       = "ubuntu-22.04"
  server_type = "cx22"
  location    = "nbg1"
  
  ssh_keys = [hcloud_ssh_key.default.id]
  
  labels = {
    environment = "production"
    role        = "web"
  }
}

DigitalOcean Terraform provider’ı da olgun ve iyi dokümante edilmiş. Bu konuda iki sağlayıcı birbirine yakın.

Network Performansı ve Lokasyon

Türkiye’deki projeler için lokasyon kritik. DigitalOcean’ın Frankfurt lokasyonu, Hetzner’in Nürnberg ve Helsinki lokasyonlarıyla karşılaştırıldığında:

# Ping testleri - Türkiye'den ölçüm
ping -c 20 fra1.digitalocean.com
# Ortalama: ~35-45ms

ping -c 20 nbg1.hetzner.cloud  
# Ortalama: ~30-38ms

ping -c 20 hel1.hetzner.cloud
# Ortalama: ~40-50ms

Nürnberg genellikle Türkiye’ye daha yakın çıkıyor. Ama asıl mesele ping değil, bant genişliği ve ağ stabilitesi. Hetzner’in 20 Gbps’ye kadar çıkabilen network bağlantısı, aynı fiyat segmentindeki DigitalOcean dropletlarından belirgin şekilde üstün.

Hetzner’de ayrıca sunucular arası private network ücretsiz. DigitalOcean’da VPC ücretsiz olsa da bandwidth maliyetleri farklı yapılandırılmış.

Bandwidth karşılaştırması için hızlı bir test:

# Speedtest-cli ile bant genişliği testi
apt install -y speedtest-cli

speedtest-cli --server 1234 --json | python3 -c "
import json, sys
data = json.load(sys.stdin)
print(f'Download: {data["download"] / 1e6:.2f} Mbps')
print(f'Upload: {data["upload"] / 1e6:.2f} Mbps')
print(f'Ping: {data["ping"]:.2f} ms')
"

Gerçek dünya testlerinde Hetzner’in network I/O performansı genellikle daha yüksek geliyor. Özellikle CX serisi sunucularda.

Disk Performansı: NVMe Fark Yaratıyor

Hetzner’in yeni nesil CCX serisi sunucuları dedicated vCPU ve NVMe SSD ile geliyor. Bu ciddi bir fark:

# fio ile disk benchmark
fio --name=randwrite 
    --ioengine=libaio 
    --iodepth=1 
    --rw=randwrite 
    --bs=4k 
    --direct=0 
    --size=512M 
    --numjobs=1 
    --runtime=60 
    --group_reporting

# Hetzner CCX13 NVMe sonuç örneği:
# WRITE: bw=890MiB/s (933MB/s), iops=228k

# Benzer fiyatlı DigitalOcean Premium Droplet:
# WRITE: bw=450MiB/s (472MB/s), iops=115k

Veritabanı yoğun workload’lar için bu fark doğrudan query performansına yansıyor.

Yönetim Arayüzü ve Kullanıcı Deneyimi

Dürüst olmak gerekirse, DigitalOcean’ın arayüzü daha parlak. Yeni başlayan biri için daha kolay gezinebilir, tutorial’lar daha zengin, community içeriği çok daha fazla. “DigitalOcean’ın X’i nasıl yapılır” diye aratırsan binlerce sonuç çıkıyor.

Hetzner’in Cloud Console’u ise daha minimalist. İşe yarıyor ama UX açısından DigitalOcean kadar cilalı değil. Öte yandan dedicated server yönetimi için Hetzner’in Robot paneli gerçekten güçlü.

Monitoring tarafında DigitalOcean built-in grafikleri daha zengin gösteriyor. Hetzner’de temel metrikler var ama daha kapsamlı monitoring için Grafana + Prometheus kurmak gerekiyor zaten:

# Prometheus node exporter kurulumu
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xzf node_exporter-1.7.0.linux-amd64.tar.gz

# Servis olarak ayarlama
cat > /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=Node Exporter
After=network.target

[Service]
Type=simple
User=node_exporter
ExecStart=/usr/local/bin/node_exporter 
    --collector.filesystem.mount-points-exclude='^/(sys|proc|dev|host|etc)($|/)' 
    --web.listen-address=":9100"
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now node_exporter

Snapshot ve Backup Politikaları

DigitalOcean’da otomatik backup, droplet ücretinin %20’si kadar ek ücret alıyor. Snapshot’lar ise ücretli. Hetzner’de snapshot’lar dahil (makul limitler dahilinde) ve backup politikası daha esnekleştirilmiş.

Hetzner API ile snapshot oluşturma ve yönetme:

#!/bin/bash
# Hetzner snapshot rotasyon scripti

HETZNER_TOKEN="your-token-here"
SERVER_ID="12345678"
MAX_SNAPSHOTS=5

# Mevcut snapshot'ları listele
snapshots=$(curl -s 
  -H "Authorization: Bearer $HETZNER_TOKEN" 
  "https://api.hetzner.cloud/v1/images?type=snapshot&sort=created:desc" | 
  python3 -c "
import json, sys
data = json.load(sys.stdin)
for img in data['images']:
    if str(img.get('created_from', {}).get('id', '')) == '$SERVER_ID':
        print(img['id'], img['created'])
")

# Eski snapshot'ları sil
echo "$snapshots" | tail -n +$((MAX_SNAPSHOTS + 1)) | while read id date; do
  echo "Siliniyor: $id ($date)"
  curl -s -X DELETE 
    -H "Authorization: Bearer $HETZNER_TOKEN" 
    "https://api.hetzner.cloud/v1/images/$id"
done

# Yeni snapshot al
curl -s -X POST 
  -H "Authorization: Bearer $HETZNER_TOKEN" 
  -H "Content-Type: application/json" 
  "https://api.hetzner.cloud/v1/servers/$SERVER_ID/actions/create_image" 
  -d '{"type": "snapshot", "description": "auto-backup"}'

echo "Snapshot tamamlandi"

Güvenlik ve Firewall

Her iki sağlayıcı da Cloud Firewall sunuyor. DigitalOcean’ın Cloud Firewall’u oldukça kullanışlı ve API üzerinden kolayca yönetilebiliyor. Hetzner’in Firewall özelliği de olgun bir hale geldi.

Hetzner Firewall kurallarını API ile yönetmek:

# Firewall oluştur ve temel kuralları ekle
curl -X POST https://api.hetzner.cloud/v1/firewalls 
  -H "Authorization: Bearer $HETZNER_TOKEN" 
  -H "Content-Type: application/json" 
  -d '{
    "name": "web-firewall",
    "rules": [
      {
        "direction": "in",
        "port": "22",
        "protocol": "tcp",
        "source_ips": ["10.0.0.0/8"],
        "description": "SSH sadece internal"
      },
      {
        "direction": "in",
        "port": "80",
        "protocol": "tcp",
        "source_ips": ["0.0.0.0/0", "::/0"]
      },
      {
        "direction": "in",
        "port": "443",
        "protocol": "tcp",
        "source_ips": ["0.0.0.0/0", "::/0"]
      }
    ]
  }'

Bir dikkat noktası: Hetzner’de sunucu sildiğinde firewall kuralları otomatik temizleniyor, bu iyi. Ama label bazlı otomatik firewall ataması konusunda DigitalOcean biraz daha olgun.

Managed Servisler Karşılaştırması

DigitalOcean’ın ekosistemi daha geniş: Managed Kubernetes, Managed Databases (PostgreSQL, MySQL, Redis), Managed MongoDB, App Platform, Spaces (S3 uyumlu), CDN, Load Balancer.

Hetzner bu konuda daha sade: Load Balancer, Managed Kubernetes (beta), Object Storage var. Managed Database henüz Hetzner’de yok. Bu büyük bir eksik.

Eğer managed PostgreSQL lazımsa DigitalOcean’ın managed database’i gayet iyi çalışıyor. Hetzner’de ise kendi veritabanı sunucunu kendin kurman gerekiyor. Bu hem avantaj hem dezavantaj:

# Hetzner'de PostgreSQL kurulum ve hardening
apt update && apt install -y postgresql-15

# PostgreSQL yapılandırma
cat >> /etc/postgresql/15/main/postgresql.conf << EOF
listen_addresses = 'localhost,10.0.0.1'
max_connections = 200
shared_buffers = 256MB
effective_cache_size = 768MB
maintenance_work_mem = 64MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 1310kB
huge_pages = off
min_wal_size = 1GB
max_wal_size = 4GB
EOF

# pg_hba.conf güncelle
echo "host    all    all    10.0.0.0/8    scram-sha-256" >> 
  /etc/postgresql/15/main/pg_hba.conf

systemctl restart postgresql

Kendi veritabanını kurmak daha fazla kontrol sağlıyor ama operasyonel yük getiriyor. Küçük ekipler için managed servis daha mantıklı olabilir.

Hetzner Dedicated Sunucuları ve Auction

Hetzner’in gerçek kozlarından biri: Dedicated sunucular ve Serverbörse (ikinci el server açık artırması). Başka hiçbir sağlayıcıda bu kadar ucuza bu kadar güçlü dedicated hardware bulamazsın.

Açık artırmada bir Ryzen 9 5950X, 128 GB RAM, 2x NVMe 1TB konfigürasyonu bazen 80-90 EUR/ay’a denk geliyor. Bu, cloud’da aldığın 8 vCPU / 32 GB RAM’in beş katı fiyatına denk. Ama yönetim tamamen sende.

Hangi Senaryo İçin Hangisi

Pratik olarak düşünelim:

Hetzner tercih et:

  • Budget odaklı projelerde ve startup’larda
  • Avrupa merkezli, GDPR uyumu önemli projelerde
  • Kendi altyapını kurmaktan çekinmiyorsan
  • Yüksek I/O gerektiren workload’larda (NVMe)
  • Çok sayıda sunucu çalıştırıyorsan (toplu fiyat avantajı)
  • Dedicated server ihtiyacın varsa

DigitalOcean tercih et:

  • Managed servislere ihtiyaç duyuyorsan (özellikle DB)
  • Ekibinde junior’lar varsa ve iyi dokümantasyon gerekiyorsa
  • App Platform gibi daha basit deploy süreçleri istiyorsan
  • ABD veya Asya bölgelerinde sunucuya ihtiyaç duyuyorsan (Hetzner buralarda zayıf)
  • Vendor ekosisteminden faydalanmak istiyorsan

Gerçek Dünya: Hibrit Yaklaşım

Pratikte en iyi sonucu veren çözüm çoğunlukla hibrit: Hetzner’de ağır workload sunucuları (hesaplama, depolama, veritabanı), DigitalOcean’da ise managed Kubernetes veya App Platform üzerinde stateless servisler.

Ya da tam tersini de yapabilirsin: Hetzner’de ana altyapı, DigitalOcean Spaces ile S3 uyumlu storage. Spaces ucuz değil aslında, bu noktada Backblaze B2 veya Hetzner Object Storage da iyi alternatifler.

Hetzner Object Storage ile S3 uyumlu işlem:

# s3cmd ile Hetzner Object Storage konfigürasyonu
cat > ~/.s3cfg << EOF
host_base = fsn1.your-objectstorage.com
host_bucket = %(bucket)s.fsn1.your-objectstorage.com
access_key = YOUR_ACCESS_KEY
secret_key = YOUR_SECRET_KEY
use_https = True
EOF

# Bucket oluştur ve dosya yükle
s3cmd mb s3://my-backups
s3cmd put /var/backup/db.dump.gz s3://my-backups/2024/db.dump.gz

# Lifecycle policy ile otomatik silme
s3cmd expire s3://my-backups 
  --expiry-days=30 
  --expiry-prefix="2024/"

Destek ve SLA

DigitalOcean’ın destek sistemi ticket bazlı ve ücretli planlarda öncelikli destek sunuyor. Hetzner’in desteği ücretsiz ama yanıt süreleri zaman zaman uzayabiliyor. Kritik production altyapısı için her iki sağlayıcıda da premium destek planı düşünülmeli.

Hetzner’in forum ve community’si ise gerçekten iyi. Teknik sorularına çoğunlukla topluluktan hızlı yanıt bulabiliyorsun.

Sonuç

Beş yılı aşkın süredir her iki sağlayıcıyı da aktif olarak kullanıyorum ve şunu söyleyebilirim: Bu seçimde “daha iyi” diye net bir cevap yok, var olan “ne için daha uygun” sorusu.

Eğer Türkiye’den Avrupa’ya hizmet veren, maliyet konusunda titiz bir projen varsa, ekibin Linux yönetiminde rahatsa: Hetzner en mantıklı seçim. Aldığın paranın karşılığını tartışmasız veriyor.

Eğer managed servislere ihtiyacın varsa, deployment süreçlerini basit tutmak istiyorsan, ya da ekibinde cloud-native servislere alışık junior mühendisler varsa: DigitalOcean daha pürüzsüz bir deneyim sunuyor.

Son tavsiyem: Her iki sağlayıcıda da 20-30 dolarlık test ortamı kur, kendi workload’ınla bir hafta çalıştır. Benchmark sayfalarını okumak yerine kendi verilerinle karar vermek her zaman daha sağlıklı sonuç veriyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir