Karmaşık bulut altyapısı gerçekten gerekli mi?
- Pieter Levels’ın Lex Friedman Podcast’te anlattıklarını dinlerken birçok şey fark ettim
- Pieter, uygulamalarını tek bir sunucuda çalıştırarak başarılı bir mikro SaaS işi kurdu
- Bulut altyapısının karmaşıklığından kaçınıp ürün-pazar uyumuna odaklanmak önemli
- Bu yaklaşım her startup için uygun olmayabilir, ancak karmaşıklık uğruna karmaşıklıktan kaçınmak gerekir
Son gözlemler
Proje 1: Lambda aşırı yükü
- 20-30 Lambda fonksiyonuyla çeşitli servisler çalıştırılıyor
- Arka plan işleri için SQS ve Lambda kullanılıyor
- Loglar CloudWatch içinde dağınık durumda
Sonuç: Debug etmek zor, değişiklik yapmak güç ve deployment karmaşık. Bu yapı, tek bir NodeJS container’ı ya da Python Flask/FastAPI uygulaması ve Redis ile sadeleştirilebilirdi
Proje 2: Mikroservis karmaşası
- Kubernetes (EKS) üzerinde 7 küçük mikroservis çalıştırılıyor
- CRUD ve iş mantığı için ayrı servisler var
Sonuç: Altyapı yönetimine daha fazla zaman harcanıyor. Bu kadar ayrışmanın gerçekten gerekli olup olmadığı tartışmalı
Tek sunuculu kurulumun gücü
- Modern sunucular güçlüdür. Hetzner ve latitude.sh, uygun fiyata güçlü VM’ler sunuyor
- GCP VM ve EC2 instance’ları da makul fiyatlı
- 40GB RAM ve çok çekirdekli güçlü compute kapasitesi sağlıyor
- Her şey merkezi olduğu için yönetmesi kolay
- Milyonlarca QPS’ye ölçeklenme problemi daha sonra çözülebilir
Tek bir VM kurulumu için gerekenler:
- Güçlü bir makine (EC2, GCP VM, Hetzner vb.)
- Güvenli erişim (HTTPS, IP kısıtlamalı SSH veya SSM)
- Kesintisiz deployment için CI/CD
- DNS yapılandırması
- Düzenli veritabanı yedekleri
- Beklemede duran bir VM ile yedeklilik
Docker Compose
- Docker Compose, lokal geliştirme için harika
- Birden fazla servisi tek komutla yönetmek mümkün
- Production ortamında daha az kullanılıyor
- Güncellemeler sırasında downtime yaşanabilir
Docker Compose Anywhere: hafta sonu projesi
- Docker Compose Anywhere hafta sonu boyunca geliştirildi
- Şu özellikleri sunuyor:
- GitHub Actions ile tek tıkla Linux sunucu kurulumu
- GitHub Container Registry ve Docker Rollout ile kesintisiz deployment
- Ortam değişkeni ve secret yönetimi (
ageveyasopskullanımı düşünülüyor) - GitHub Actions ile otomatik Postgres yedekleme
- Tek bir VM üzerinde çoklu uygulama desteği
- Traefik ve Let's Encrypt ile otomatik SSL
Bazı noktalar
Güvenlik için:
- Sıkı firewall kuralları ayarlayın (yalnızca gerekli portları açın)
- SSH anahtarlarını güvenli tutun (AWS’de SSM, GCP’de CLI tercih edilir)
- Güvenliği artırmak için bastion host kullanın
- Secret koruması ve WAF veya Cloudflare kullanımını değerlendirin
Veri koruması:
- Şifrelenmiş veritabanı yedeklerini güvenli cloud storage’a gönderin (ör. S3)
- Ek yedeklilik için düzenli olarak disk snapshot’ları oluşturun
- Yedekler ve snapshot’lar için saklama politikaları uygulayın
GN⁺ özeti
- Bu yazı, startup’ların karmaşık bulut altyapısından kaçınıp basit kurulumlarla ürün-pazar uyumuna odaklanması gerektiğini vurguluyor
- Tek sunuculu kurulumun avantajlarını ve Docker Compose ile basit deployment yöntemlerini tanıtıyor
- Karmaşık altyapı yönetimine zaman harcamak yerine çekirdek ürün geliştirmeye odaklanmak önemli
- Benzer işlevlere sahip projeler arasında Heroku ve DigitalOcean da bulunuyor
1 yorum
Hacker News görüşleri
Birçok projede en yeni teknolojileri kullanmak isteyen ekipler çoğu zaman düşük kaliteli çıktılar üretiyor
Küçük bir startup'ta nginx, webapp, postgres, redis vb. tek bir VM üzerinde çalıştırılıyor
SaaS tek bir sunucuda başlayıp birden fazla sunucuya ölçekleniyor
Kubernetes'in temel işlevleri olan deployment, pod servisleri ve blue-green deployment kullanışlı
Birçok kişi Kubernetes öğrenmek için karmaşık altyapılar kuruyor
Mikroservis kitapları bile "önce monolith kurun" diye öneriyor
Başından itibaren karmaşık framework'ler seçmek önerilmiyor
Bulutta yalnızca VM, block ve blob storage, DNS, IdP ve domain registrar kullanılıyor
6 yıl boyunca tek bir aylık 10 dolarlık VPS üzerinde proje işletiliyor
Bulut tabanlı çözümler tercih ediliyor ama seçici biçimde kullanılıyor