Geçen ay yeni bir müşterinin altyapı ekibiyle portal demosu sırasında ilginç bir şey oldu. VM wizard’ını açtık, ekibin sistem yöneticisi ‘m1.large mı m2.medium mı’ diye 10 dakika düşündü. Ben de bekledim. Sonunda sordum: ‘Bu VM hangi iş yükü için?’ Cevap: ‘Aslında karar verilmedi.’ İşte VM wizard’ı kullanmadan önce yapılması gereken birinci tartışma.
Bu yazıda CloudSpark Self-Service Portal’daki VM wizard’ını adım adım açıyorum. Her adımda hangi seçeneğin sahada hangi sonucu doğurduğunu, en sık yapılan üç hatayı, KVKK perspektifinden tag stratejisini ve cloud-init ile ilk başta yapılması gereken otomasyonları paylaşıyorum.
Wizard’a girmeden önce: Üç soru
Portal’a giriş yapıp ‘Yeni VM’ butonuna basmadan önce kendinize üç soruyu mutlaka sorun. Bu soruları cevaplamadan başlayan VM yaratımları altı ay sonra sürpriz fatura veya yanlış-boyut migration’ı doğurur.
- Bu VM hangi iş yükü için? Web app, veritabanı, batch işleme, geliştirme ortamı? Cevap boyutu belirler.
- Üretim mi, test mi? Cevap backup ve monitoring politikasını belirler.
- Ömrü ne kadar? Geçici test → spot/preemptible. Uzun vadeli production → reserved.
Saha kuralı: Bu üç sorunun cevabını yazılı tutmak en iyi pratik. CloudSpark portal’ında ‘Description’ alanına bunu yazıp tag’lara da yansıtırsanız, üç ay sonra başka biri (veya gelecekteki siz) ne yaptığınızı anlayabilir.
Adım 1: Image seçimi
İlk ekran, üzerine kuracağınız işletim sistemini seçtiğiniz yer. CloudSpark portal’ında dört kategori var:
- Linux: Ubuntu 20.04/22.04/24.04, Rocky Linux 8/9, AlmaLinux 9, Debian 12
- Windows: Server 2019/2022, Server 2025
- Marketplace: Hazır kurulu image’lar (LAMP, MEAN, Docker, GitLab, WordPress, Laravel, Plesk, cPanel)
- Custom: Kendi Snapshot’ınızdan yeni VM
Marketplace özellikle KOBİ ve startup için zaman kazandırır. WordPress kuracaksanız ‘WordPress + LEMP + Let’s Encrypt’ image’ı 3 dakikada hazır VM verir; siz manuel kursanız 1 saat sürer.
Sahada gördüğümüz hata: ‘Production veritabanı için’ diyerek genel-amaçlı Ubuntu image’ı seçmek. PostgreSQL veya MySQL kullanacaksanız Marketplace’teki ‘PostgreSQL 16 Optimized’ image’ı I/O ayarlarını önceden yapmış olarak gelir; saatler kazanırsınız.
Adım 2: Boyut seçimi
Boyut isimlendirmesi yaygın endüstri standardına göre yapılmıştır:
| Aile | Tipik kullanım | vCPU:RAM oranı |
|---|---|---|
| m (general-purpose) | Web, app, küçük DB | 1:4 |
| c (compute-optimized) | API gateway, batch, build server | 1:2 |
| r (memory-optimized) | Cache, in-memory DB, analytics | 1:8 |
| d (dense storage) | Big data, log analytics | 1:4 + büyük disk |
| g (GPU) | ML training, video render | özel |
Boyut seçiminde en sık iki hata:
Hata 1: ‘Daha büyüğü güvenli olur’ deyip overshoot
Bir geliştirme VM için m1.large (8 vCPU, 32 GB RAM) seçmek. Aylık ekstra fatura ~2.000 TL. Geliştirme için m1.small (2 vCPU, 8 GB) yeterdi. Portal sağ tarafta anlık fiyat gösterir; oraya bakmadan ileri tıklamak en kötü huy.
Hata 2: ‘Daha küçüğüyle başlayalım, sonra büyütürüz’ deyip undersize
Production veritabanı için m1.small ile başlayıp swap’e düşmek. Resize portal’dan 5 dakikada yapılır ama VM kapanması gerekir; production’da gece 03:00’a planlanır. Doğru boyutu en baştan seçmek bu maintenance window’unu hiç açmaz.
Burst (B-serisi) kullanım anı
Geliştirme, test ve düşük trafikli web siteleri için B-serisi (burstable) seçenek var. Baseline performansı düşük, kısa sürelerde tam CPU’ya çıkar. Aylık maliyeti standart serilerin yarısı civarında. Sürekli yüksek CPU isteyen veritabanı için seçmeyin; tipik bir KOBİ web sitesi için ideal.
Adım 3: Storage
Portal’da iki storage seçeneği:
- NVMe SSD: Yüksek IOPS, düşük gecikme. Veritabanı, transactional iş yükü.
- SSD: Genel amaçlı, web ve uygulama için yeterli.
Root disk varsayılan 60 GB SSD. Ek diskler ‘Add disk’ ile eklenir; her ek disk ayrı boyut, tip ve mount path’a sahip olur.
Veritabanı VM’inde best practice:
- Root disk: SSD, 60 GB (OS + binary’ler için)
- Data disk: NVMe SSD, ihtiyaca göre 100-500 GB (DB dosyaları için)
- Log disk: NVMe SSD, 50-100 GB (WAL/binlog için)
- Backup disk: SSD, geniş kapasite (rsync hedefi için)
İki disk fiziksel olarak farklı device olduğunda PostgreSQL/MySQL throughput’u %30-50 artar. Tek diske her şeyi bindirmek, performans kaybı yanında backup esnasında I/O kontansını yükseltir.
Adım 4: Network
Network adımında üç şeyi belirlersiniz:
VPC ve subnet
Default VPC kullanmak yerine en başta ‘prod’ ve ‘dev’ diye iki ayrı VPC kurun. Production VM’leri otomatik prod-VPC’ye, dev VM’leri dev-VPC’ye düşsün. Cross-VPC trafik portaldan kontrollü açılır; default’tan bağımsız ortam ayrımı sağlar.
Public IP atama
‘Yes/No’ seçeneği. Web server için Yes, veritabanı için No. Veritabanına public IP atamak en sık güvenlik hatasıdır; 7/24 brute-force tarama trafiği yer.
Public IP’siz VM’lere nasıl bağlanırsınız? İki yol:
- Bastion host: Tek public IP’li jump server, sadece SSH key ile
- VPN: Site-to-site VPN ile ofis ağınızdan direkt erişim
Firewall grubu
Default firewall genellikle çok açık. Production’da hazır gelen ‘web-server-strict’ veya ‘db-server-strict’ template’lerini kullanın. SSH için kendi IP aralığınızı ekleyin, ‘any’ bırakmayın.
Adım 5: Tag, backup ve cloud-init
Bu adım wizard’ın en sık atlanan adımı çünkü ‘opsiyonel’ görünür. Aslında en kritik adım.
Tag
En az üç tag her zaman doldurulmalı:
project=ecommerce(hangi proje?)env=prod(üretim mi test mi?)owner=devops@cloudspark.com.tr(kim sahip?)
Bu üç tag billing modülünde fark yaratır. ‘Bu ay e-ticaret projesi ne yaktı’ sorusu tag bazlı 30 saniyede cevap bulur.
Backup policy
Hazır gelen üç policy:
| Policy | Sıklık | Retention | Tipik kullanım |
|---|---|---|---|
| dev-7day | Günlük | 7 gün | Geliştirme/test |
| prod-30day | Günlük + saatlik | 30 gün | Production |
| compliance-365day | Günlük + haftalık + aylık | 1 yıl | KVKK/finans |
Cloud-init script
VM ilk açılışında çalışacak script. Manuel SSH’a girip kurmaktan iyidir.
#cloud-config
package_update: true
package_upgrade: true
packages:
- nginx
- certbot
- python3-certbot-nginx
- fail2ban
- ufw
users:
- name: deploy
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_authorized_keys:
- ssh-ed25519 AAAA... admin@cloudspark.com.tr
runcmd:
- ufw allow 80/tcp
- ufw allow 443/tcp
- ufw allow 22/tcp
- ufw --force enable
- systemctl enable --now fail2ban
- systemctl enable --now nginx
Bu script ile VM açılır açılmaz nginx kurulu, firewall açık, fail2ban aktif, deploy kullanıcısı tanımlı gelir. Manuel kurulumla 30 dakika sürer; cloud-init ile otomatik 90 saniye.
Sahada en sık üç hata
1. Boyutu en baştan abartmak
‘Performans şart’ düşüncesiyle m1.xlarge ile başlayıp aylık fatura görünce panik. Doğru yol: m1.medium ile başla, gerçek metrik (CPU/RAM doluluk) topla, gerçekten gerekiyorsa 5 dakikada resize et.
2. Backup policy seçmemek
Wizard’da ‘Backup’ kısmını boş bırakmak. VM hiç yedeklenmez. Üç ay sonra disk arızasında veriler gider. ‘Hiç backup yok’ senaryosu en acı dersleri verir.
3. SSH’a şifre ile erişim açmak
‘Şifremi unuturum’ düşüncesiyle hem SSH key hem şifre açmak. Brute force ile şifre tahmin edilir. Sadece SSH key ile erişim, key’i offline saklamak; portal’dan key rotation 2 ayda bir yapılır.
VM oluşturduktan sonra ilk yapılacaklar
- Ping at: VM gerçekten cevap veriyor mu?
- SSH ile bağlan, hostname ve disk yapısını kontrol et
- Cloud-init log’u kontrol et:
sudo cat /var/log/cloud-init-output.log - Monitoring agent kurulu mu (CloudSpark Observability tarafına gönderim için)?
- Backup’ın ilk çalışmasını bekle (24 saat içinde), portal’dan başarı durumunu kontrol et
Sık Sorulan Sorular
Resize sırasında VM kapanıyor mu?
Evet, ortalama 60-90 saniye downtime. Production’da maintenance window planlamak gerek. Live resize bazı boyutlar için planlanıyor ama henüz GA değil.
Snapshot ve backup farkı nedir?
Snapshot anlık, hızlı, aynı veri merkezinde. Bir konfigürasyon değişikliği öncesi ‘geri dönüş noktası’ alır. Backup zamanlanmış, başka veri merkezine replike, retention’lı, KVKK uyumlu. İkisi farklı amaçlara hizmet eder, ikisini de kullanın.
Spot VM kullanmak zaman kazandırır mı?
Test, batch ve stateless iş yükü için Spot %50-70 ucuz. Üretim DB için spot kullanmayın — istediği anda Microsoft kapatabilir. Ama nightly batch’ler için ideal.
VM’i çoğaltmanın en hızlı yolu?
Kaynak VM’den snapshot al, yeni VM wizard’ında ‘Custom image’ olarak snapshot’ı seç. 2-3 dakikada birebir kopya oluşur. 10 worker kuracaksanız 10 wizard yerine bir snapshot + script yapılması yeterli.
Aylık fatura tahmini ne kadar doğru?
Wizard’ın sağında gösterilen tahmin kullanım deseni standart varsayarak hesaplanır (24/7 açık). Açık-kapalı dönüşümlü ise faturalama o saatler için hesaplanır, gerçek fatura tahminden düşük çıkar.
Sonuç
VM yaratmak teknik olarak basit ama doğru kararlarla yaratmak baştan iyi planlama gerektirir. CloudSpark Self-Service Portal wizard’ı bu kararları alma sürecini hızlandırıyor; her adımda anlık fiyat, anlık öneri, anlık güvenlik kontrolü sunuyor. İlk birkaç VM’de wizard’ı yavaş yavaş kullanın, kararları konuşa konuşa verin; sonraki yüzler için hız doğal olarak gelir.
Ücretsiz POC hesabı ile portal’ı kendi kullanım senaryonuzda test etmek için iletişim sayfasından bize ulaşın.