GCP Compute Engine Makine Türleri ve Doğru Makine Seçimi
Yanlış makine tipini seçmek, GCP faturanızı ikiye katlarken uygulamanızın yine de yavaş çalışmasına neden olabilir. Bu durum hem can sıkıcı hem de ciddi anlamda maliyetli. Compute Engine’deki makine türlerini iyi anlamak, hem performans hem de maliyet optimizasyonu açısından en kritik kararlardan birini oluşturuyor. Bu yazıda GCP makine türlerini, ne zaman hangisini seçmeniz gerektiğini ve gerçek dünya senaryolarında nasıl karar verileceğini ele alacağız.
GCP Makine Türlerine Genel Bakış
Google Cloud Platform, Compute Engine üzerinde birkaç farklı makine ailesi sunuyor. Bu aileler temelde iş yükü türüne göre optimize edilmiş. Kafanızda şu soruyu tutun: “Bu VM’nin en çok neye ihtiyacı var?” Hesaplama gücüne mi, belleğe mi, depolamaya mı yoksa hepsine dengeli biçimde mi?
Genel olarak makine aileleri şu kategorilere ayrılıyor:
- General Purpose (Genel Amaçlı): E2, N1, N2, N2D, T2D, T2A serileri
- Compute Optimized (Hesaplama Optimize): C2, C2D serileri
- Memory Optimized (Bellek Optimize): M1, M2, M3 serileri
- Storage Optimized (Depolama Optimize): Z3 serisi
- Accelerator Optimized (Hızlandırıcı Optimize): A2, G2 serileri
Her ailenin kendi içinde de çeşitli boyutları var. micro‘dan başlayıp onlarca vCPU ve terabaytlarca RAM’e kadar uzanan bir spektrum söz konusu.
Mevcut Makine Tiplerini Keşfetmek
Önce elimizdeki seçenekleri listeleyelim. gcloud komut satırı aracı bu konuda oldukça kullanışlı:
# Bir bölgedeki tüm makine tiplerini listele
gcloud compute machine-types list --filter="zone:us-central1-a"
# Belirli bir makine ailesini filtrele
gcloud compute machine-types list --filter="zone:us-central1-a AND name:n2-*"
# Makine tipini detaylı incele
gcloud compute machine-types describe n2-standard-4 --zone=us-central1-a
Mevcut bölgenizdeki tüm seçenekleri görmek için zone parametresini kendi bölgenizle değiştirin. europe-west1-b gibi bir değer kullanabilirsiniz.
General Purpose Makine Ailesi
E2 Serisi: Düşük Maliyetli Gündelik İşler
E2 serisi, maliyet odaklı iş yükleri için tasarlanmış. Bellek ve CPU oranı 4GB/vCPU şeklinde sabit. Fiziksel donanım üzerinde CPU’nun boş zamanlarını kullanan “shared core” mimarisine dayanıyor. Bu yüzden tutarsız performans gösterebilir; kritik üretim sistemleri için ideal değil ama geliştirme ortamları, test sunucuları veya küçük web uygulamaları için mükemmel.
# Geliştirme ortamı için E2 instance oluşturma
gcloud compute instances create dev-server-01
--machine-type=e2-medium
--zone=europe-west1-b
--image-family=debian-11
--image-project=debian-cloud
--boot-disk-size=50GB
--tags=dev,http-server
# E2 mikro instance - en uygun fiyatlı seçenek
gcloud compute instances create test-instance
--machine-type=e2-micro
--zone=us-central1-a
--image-family=ubuntu-2204-lts
--image-project=ubuntu-os-cloud
E2 ailesi içinde öne çıkan tipler:
- e2-micro: 2 vCPU (paylaşımlı), 1 GB RAM – basit monitoring agent’ları için
- e2-small: 2 vCPU (paylaşımlı), 2 GB RAM – hafif web sunucuları için
- e2-medium: 2 vCPU (paylaşımlı), 4 GB RAM – CI/CD pipeline runner’ları için
- e2-standard-4: 4 vCPU, 16 GB RAM – orta ölçekli uygulamalar için
N2 Serisi: Dengeli Performans
N2, N1’in halefi ve günümüzde en çok tercih edilen genel amaçlı seri. Intel Ice Lake veya Cascade Lake işlemciler kullanıyor. N1’e kıyasla bellek bantgenişliği ve CPU performansı belirgin biçimde daha iyi. CPU ve bellek oranı esnek, özel makine tipleri oluşturmak da mümkün.
# N2 standard instance oluşturma
gcloud compute instances create app-server-prod
--machine-type=n2-standard-8
--zone=us-central1-a
--image-family=ubuntu-2204-lts
--image-project=ubuntu-os-cloud
--boot-disk-size=100GB
--boot-disk-type=pd-ssd
--network-interface=network-tier=PREMIUM,subnet=default
# Özel makine tipi oluşturma - 6 vCPU, 24 GB RAM
gcloud compute instances create custom-app-server
--custom-cpu=6
--custom-memory=24GB
--zone=us-central1-a
--image-family=ubuntu-2204-lts
--image-project=ubuntu-os-cloud
Özel makine tipleri çok güçlü bir özellik. Standart oranların dışına çıkmanız gerektiğinde (örneğin 6 vCPU + 24 GB RAM gibi standart dışı bir kombinasyon), --custom-cpu ve --custom-memory flag’leriyle tam olarak ihtiyacınız olanı oluşturabilirsiniz. Tabii bu durum biraz daha pahalıya patlayabilir.
T2D Serisi: AMD ve Maliyet Avantajı
T2D, AMD EPYC (Milan) işlemcileri kullanıyor ve N2’ye kıyasla yaklaşık %40 daha uygun fiyatlı. Containerize edilmiş iş yükleri, web sunucuları ve ölçeklenebilir mikro servisler için oldukça cazip. GKE node pool’larında yaygın kullanılıyor.
# T2D ile GKE node pool oluşturma
gcloud container node-pools create cost-optimized-pool
--cluster=my-cluster
--machine-type=t2d-standard-4
--num-nodes=3
--zone=us-central1-a
--disk-size=100GB
--disk-type=pd-standard
Compute Optimized Makine Ailesi
C2 ve C2D Serileri: Yoğun Hesaplama
CPU frekansını en yükseğe çıkarmak istiyorsanız C2 serisi tam size göre. Intel Cascade Lake işlemciler 3.8 GHz boost clock ile geliyor. Oyun sunucuları, yüksek performanslı hesaplama (HPC), bilimsel simülasyonlar ve tek çekirdek performansının kritik olduğu her senaryo için ideal.
C2D ise AMD EPYC Roma işlemcileriyle çalışıyor ve daha fazla L3 cache sunuyor. Bellek bant genişliğine bağımlı iş yükleri için C2’ye göre daha iyi sonuç verebilir.
# Oyun sunucusu için C2 instance
gcloud compute instances create game-server-01
--machine-type=c2-standard-8
--zone=us-central1-a
--image-family=ubuntu-2204-lts
--image-project=ubuntu-os-cloud
--boot-disk-type=pd-ssd
--boot-disk-size=200GB
--network-interface=network-tier=PREMIUM,subnet=default
--metadata=startup-script='#!/bin/bash
apt-get update
apt-get install -y gameserver-deps'
# Mevcut instance'ın makine tipini kontrol etme
gcloud compute instances describe game-server-01
--zone=us-central1-a
--format="value(machineType)"
Gerçek dünya senaryosu: Bir müşterimizin fizik simulasyonu yapan uygulaması, N2-standard-16 üzerinde yaklaşık 45 dakika süren işlemi C2-standard-16 ile 28 dakikaya indirdi. Fiyat farkı yaklaşık %30 daha pahalı olmasına rağmen işlem süresi kısaldığı için toplam maliyet neredeyse eşitlendi.
Memory Optimized Makine Ailesi
M1, M2, M3 Serileri: Veri Ambarı ve SAP
Bu seride ciddi miktarda RAM var. M3-megamem-128 ile 128 vCPU ve 1.9 TB RAM’e kadar çıkabiliyorsunuz. SAP HANA, büyük in-memory veritabanları, gerçek zamanlı analitik platformlar ve büyük önbellekleme gerektiren uygulamalar bu seride çalışır.
- M1: 40 vCPU’ya kadar, 961 GB RAM’e kadar
- M2: 416 vCPU’ya kadar, 11.5 TB RAM’e kadar (megamem versiyonlarında)
- M3: En yeni nesil, daha iyi CPU performansı ile geliyor
# SAP HANA için M2 instance oluşturma
gcloud compute instances create sap-hana-prod
--machine-type=m2-ultramem-208
--zone=us-central1-a
--image-family=sles-15-sp3-sap
--image-project=suse-sap-cloud
--boot-disk-size=100GB
--boot-disk-type=pd-ssd
--create-disk=name=hana-data,size=2048GB,type=pd-ssd
--create-disk=name=hana-log,size=512GB,type=pd-ssd
--scopes=cloud-platform
# Instance RAM kullanımını izleme
gcloud compute instances get-serial-port-output sap-hana-prod
--zone=us-central1-a | grep -i memory
Accelerator Optimized: GPU’lu Makineler
A2 ve G2 Serileri
Makine öğrenmesi eğitimi, büyük dil modeli çıkarımı, video işleme veya GPU’ya bağımlı her iş yükü için bu seri kullanılıyor. A2 serisi NVIDIA A100 GPU’lar, G2 serisi ise NVIDIA L4 GPU’lar ile geliyor.
# GPU'lu instance oluşturma ve kontrol
gcloud compute instances create ml-training-node
--machine-type=a2-highgpu-1g
--zone=us-central1-a
--image-family=common-cu118
--image-project=deeplearning-platform-release
--boot-disk-size=200GB
--boot-disk-type=pd-ssd
--maintenance-policy=TERMINATE
--restart-on-failure
# GPU'ların tanındığını doğrulama
gcloud compute ssh ml-training-node --zone=us-central1-a
--command="nvidia-smi"
GPU’lu instance’larda --maintenance-policy=TERMINATE kullanmak şart. Live migration GPU’lu makinelerde desteklenmiyor ve bu ayarı yapmazsanız instance bakım süreçlerinde beklenmedik biçimde kapanabilir.
Spot (Preemptible) ve Spot VM’ler
Maliyet optimizasyonunun önemli bir parçası da Spot VM kullanımı. Spot VM’ler düzenli VM’lere kıyasla %60-90 daha ucuz ancak GCP istediği zaman geri alabilir. Toplu işler, fault-tolerant iş yükleri ve CI/CD pipeline’ları için idealdir.
# Spot VM oluşturma
gcloud compute instances create batch-processor
--machine-type=n2-standard-4
--zone=us-central1-a
--provisioning-model=SPOT
--instance-termination-action=STOP
--image-family=ubuntu-2204-lts
--image-project=ubuntu-os-cloud
--boot-disk-size=50GB
# Spot VM'lerin durumunu toplu kontrol etme
gcloud compute instances list
--filter="scheduling.provisioningModel=SPOT"
--format="table(name,zone,status,machineType)"
Spot VM kullanırken mutlaka bir termination handler ekleyin. GCP, preemption gerçekleşmeden 30 saniye önce sinyal gönderiyor:
#!/bin/bash
# Spot VM termination handler scripti
# /etc/startup-scripts/preemption-handler.sh
METADATA_URL="http://metadata.google.internal/computeMetadata/v1"
PREEMPT_ENDPOINT="${METADATA_URL}/instance/preempted"
while true; do
PREEMPTED=$(curl -s -H "Metadata-Flavor: Google" "${PREEMPT_ENDPOINT}")
if [ "${PREEMPTED}" = "TRUE" ]; then
echo "$(date): Preemption sinyali alindi, checkpoint kaydediliyor..."
# Checkpoint mantığınızı buraya ekleyin
gsutil cp /tmp/checkpoint.bin gs://your-bucket/checkpoints/
echo "$(date): Checkpoint kaydedildi, instance kapatılıyor"
break
fi
sleep 5
done
Makine Tipi Değiştirme ve Resize İşlemleri
Yanlış makine tipini seçtiniz ve değiştirmeniz gerekiyor. Bu durum oldukça yaygın ve çözümü nispeten kolay, ancak downtime gerektiriyor:
# Instance'ı durdur
gcloud compute instances stop my-application-server
--zone=europe-west1-b
# Makine tipini değiştir
gcloud compute instances set-machine-type my-application-server
--machine-type=n2-standard-8
--zone=europe-west1-b
# Instance'ı yeniden başlat
gcloud compute instances start my-application-server
--zone=europe-west1-b
# Değişikliği doğrula
gcloud compute instances describe my-application-server
--zone=europe-west1-b
--format="value(machineType)"
Boyut değişikliği yaparken dikkat edilmesi gereken nokta: belirli makine ailelerinden diğerlerine geçiş her zaman sorunsuz olmayabiliyor. Örneğin N1’den M2’ye geçiş yaparken boot disk formatı veya NUMA topolojisi farklılıklarından kaynaklanan sorunlarla karşılaşılabilir. Test ortamında önce deneyin.
Doğru Makine Tipini Seçme Stratejisi
Benchmark ve Monitoring ile Karar Vermek
Tahmin üzerine değil, gerçek verilere dayanarak karar verin. Mevcut iş yükünüzü izleyin:
# Cloud Monitoring ile CPU kullanımını sorgulama
gcloud monitoring read
'metric.type="compute.googleapis.com/instance/cpu/utilization" AND resource.labels.instance_id="YOUR_INSTANCE_ID"'
--freshness=1h
--format=json | jq '.[] | {time: .points[].interval.endTime, cpu: .points[].value.doubleValue}'
# Instance'ın anlık performans metriklerini kontrol etme
gcloud compute ssh my-server --zone=us-central1-a --command="
echo '=== CPU ==='
top -bn1 | head -5
echo '=== Memory ==='
free -h
echo '=== Disk I/O ==='
iostat -xz 1 1
"
Karar verirken şu metriklere bakın:
- CPU kullanımı sürekli %80 üzerinde: Daha fazla vCPU veya compute-optimized seriyi düşünün
- Memory kullanımı sürekli %85 üzerinde: Memory-optimized seriye geçin
- CPU düşük, memory düşük: Daha küçük bir makine tipi yeterli olabilir, para harcıyorsunuzdur
- Disk I/O bottleneck: Önce lokal SSD veya daha hızlı persistent disk deneyin, storage-optimized’a geçmeden önce
Makine Ailesi Seçim Kılavuzu
- Web uygulaması, API sunucusu: E2 veya N2 standard – dengeli kaynak kullanımı için ideal
- CI/CD build sunucusu: E2 veya T2D – maliyet önemli, tutarsız performans tolere edilebilir
- Veritabanı sunucusu (PostgreSQL, MySQL): N2 standard veya highmem – bellek önemli
- Redis, Memcached: N2 highmem – tüm veriyi bellekte tutuyor
- SAP HANA, büyük analitik DB: M1 veya M2 – başka seçenek yok
- Oyun sunucusu, fizik motoru: C2 veya C2D – yüksek single-thread performansı
- ML model eğitimi: A2 – GPU şart
- Kubernetes node’ları: T2D veya N2 – maliyet ve performans dengesi
- Batch processing: Spot VM ile herhangi bir uygun tip
Committed Use Discounts ile Maliyet Optimizasyonu
Uzun vadeli iş yükleri için Committed Use Discount (CUD) kullanmak ciddi tasarruf sağlıyor. 1 yıllık commitment %20-57, 3 yıllık commitment ise %37-70 indirim sunuyor.
# Mevcut commitment'ları listele
gcloud compute commitments list --filter="region:us-central1"
# Yeni commitment oluşturma (örnek: 1 yıllık N2 commitment)
gcloud compute commitments create my-n2-commitment
--plan=12-month
--region=us-central1
--resources=vcpu=32,memory=128GB
--type=general-purpose-n2
Commitment almadan önce en az 2-3 aylık kullanım verinize bakın. Anlık değil, ortalama kullanımınıza göre commitment satın alın. Baseline kullanımınız için CUD, spike’lar için on-demand veya Spot VM kombinasyonu çoğu durumda en optimal strateji.
Gerçek Dünya Senaryo: E-ticaret Uygulaması
Bir e-ticaret platformu için şu mimariyi düşünelim: Yüksek trafik dönemlerinde (kampanya günleri) sistem üzerinde büyük baskı oluşuyor.
# Web tier: N2 standard, load balancer arkasında
gcloud compute instance-templates create web-tier-template
--machine-type=n2-standard-4
--region=us-central1
--image-family=ubuntu-2204-lts
--image-project=ubuntu-os-cloud
--boot-disk-size=50GB
--boot-disk-type=pd-ssd
--tags=web,http-server,https-server
--metadata=startup-script-url=gs://your-bucket/scripts/web-startup.sh
# Database tier: N2 highmem - PostgreSQL için bellek kritik
gcloud compute instances create db-primary
--machine-type=n2-highmem-8
--zone=us-central1-a
--image-family=ubuntu-2204-lts
--image-project=ubuntu-os-cloud
--boot-disk-size=100GB
--boot-disk-type=pd-ssd
--create-disk=name=pgdata,size=500GB,type=pd-ssd
--no-address
--tags=database
# Cache tier: Redis için N2 highmem
gcloud compute instances create cache-server
--machine-type=n2-highmem-4
--zone=us-central1-a
--image-family=ubuntu-2204-lts
--image-project=ubuntu-os-cloud
--boot-disk-size=50GB
--no-address
--tags=cache
Kampanya dönemlerinde web tier için managed instance group ile autoscaling devreye giriyor, N2 standard makineler sayısı artıyor. Veritabanı ise read replica’larla destekleniyor ama makine tipi değişmiyor çünkü PostgreSQL’in belleği etkin kullanabilmesi için highmem serisi daha verimli.
Sonuç
GCP Compute Engine makine tipi seçimi, “en büyüğü al, sorun olmasın” mantığıyla yapıldığında faturanız şişiyor; “en küçüğü al, maliyet düşsün” mantığıyla yapıldığında uygulama performansı acı çekiyor. Doğru yaklaşım her zaman iş yükünü anlamak ve buna göre seçim yapmak.
Pratik özet olarak şunu söyleyebilirim: çoğu iş yükü için N2 standard veya T2D iyi bir başlangıç noktası. E2 ile geliştirme ortamları ve CI/CD’yi ucuza idare edin. Veritabanlarınız için highmem serisini düşünün. Hesaplama ağırlıklı iş yükleriniz varsa C2’yi test edin. ML için A2’ye zaten başka seçeneğiniz yok. Spot VM’leri batch işlerinde ve fault-tolerant sistemlerde agresif biçimde kullanın.
En önemli tavsiye: Cloud Monitoring’i mutlaka aktif edin, gerçek kullanım verilerinize bakın ve en az ayda bir kez makine tiplerinizi gözden geçirin. Bulut ortamları statik değil; iş yükünüz değiştikçe altyapınız da değişmeli.
