- AWS EC2'den DigitalOcean'a çalışan bir uygulamayı nasıl taşırım? — Adımlara genel bakış
- 1. Birinci Aşama — Değerlendirme ve Hazırlık
- 2. DigitalOcean'da hedef mimarinin tasarlanması
- 3. Dosyaları ve nesneleri aktarın (S3 → Alanlar / EBS → Birim)
- 4. Veritabanı geçişi (RDS → Yönetilen veritabanı veya kendi sunucunuzda barındırılan veritabanı)
- 5. Uygulama Dağıtımı — Seçenekler ve Komutlar
- 6. Ağ, Güvenlik ve Kesintisiz Geçiş
- 7. Operasyonel İpuçları ve Komut Dosyaları
- 8. Geçiş Sonrası — Test ve Optimizasyon
- 9. Maliyet ve kaynak yönetimi ipuçları
- 10. Sık karşılaşılan sorunlar ve çözümler
- 11. Yük Dengeleyici ve Yukarı Akış Droplet'leri için Örnek Nginx Yapılandırması
- 12. Güvenlik ipuçları ve en iyi uygulamalara uyum
- Çözüm
- Sıkça Sorulan Sorular
AWS EC2'den DigitalOcean'a çalışan bir uygulamayı nasıl taşırım? — Adımlara genel bakış
Bu adım adım ve teknik kılavuzda, nasıl yapılacağını açıklıyoruz. AWS EC2'den DigitalOcean'a Canlı Bir Uygulamayı Nasıl Taşıyabilirsiniz? Minimum kesinti süresiyle ve güvenlik ile ağ hususlarını koruyarak aktarım gerçekleştirin.
- Kaynakların ilk değerlendirmesi ve envanteri (EC2, EBS, RDS, S3, ELB, Güvenlik Grupları, IAM)
- DigitalOcean'da hedef mimarinin tasarlanması (Droplet, VPC, Volumes, Spaces, Load Balancer, Managed DB)
- Veri aktarımı (dosyalar, S3 → Spaces, Veritabanı → Yönetilen Veritabanı veya replika)
- Uygulama dağıtımı (geri yükleme, konteynerleştirme veya App Platform/Kubernetes kullanarak)
- Minimum kesinti süresiyle geçiş (çoğaltma, kayan IP, DNS TTL)
- AWS temizliği ve son inceleme, güvenlik önlemleri ve izleme
1. Birinci Aşama — Değerlendirme ve Hazırlık
Kaynak kataloglama
İlgili tüm kaynakların eksiksiz bir listesini yapın: EC2 örnekleri, EBS birimleri ve anlık görüntüler, güvenlik grupları, yük dengeleyiciler, IAM rolleri/politikaları ve S3, RDS, ElastiCache ve CloudFront gibi diğer bağımlı hizmetler.
Uygulama türünü belirleyin. Gerekli: Uygulama durum bilgisi içeriyor mu (örneğin veritabanı ile), durum bilgisi içermiyor mu (örneğin ön uç), konteynerleştirilmiş mi yoksa GPU/işleme gerektiriyor mu?
İşlevsel ve konum ihtiyaçlarının belirlenmesi
Ağ gecikmesi, GPU gereksinimleri, maksimum IOPS ve çıkış bant genişliği gibi parametreleri belirtin.
Alım satım veya oyun için düşük ping'e ihtiyacınız varsa, son kullanıcılarınıza yakın bir konum seçin. DigitalOcean'ın da farklı bölgeleri var; size en yakın DigitalOcean veri merkezini kontrol edin.
2. DigitalOcean'da hedef mimarinin tasarlanması
Önerilen bileşenler
Mimari proje aşağıdaki unsurları içermektedir:
- Damlacık Uygulamalar ve hizmetler için (VPS)
- Yönetilen Veritabanları (Postgres / MySQL) çoğaltma ve yedekleme işlemlerinin karmaşıklığını ortadan kaldırmak için.
- Uzaylar (S3 uyumlu) S3'ten nesne aktarımı için
- Blok Depolama Birimleri Büyük veri ve kalıcılık için
- Yük Dengeleyici Ve Yüzer IP Kesintisiz geçiş için
- VPC Ağ izolasyonu ve erişim kontrolü için güvenlik duvarı.
- GPU'lara ihtiyacınız varsa GPU sunucuları veya özel işlem sunucuları kullanın.
Damla Boyutu ve Türünün Seçimi
İşlemciye bağımlı uygulamalar için işlemci optimizasyonlu droplet'ler, bellek yoğun uygulamalar için ise yüksek RAM'li droplet'ler veya yönetilen hizmetler kullanın.
Alım satım veya oyun oynamak için, uygun bir konumda düşük ping ve özel ağ kaynaklarına sahip özel bir VPS önerilir.
3. Dosyaları ve nesneleri aktarın (S3 → Alanlar / EBS → Birim)
S3 → Alan Aktarımı
S3'ten Spaces'e nesne aktarmak için, S3 ile uyumlu araçlar kullanın, örneğin: rclone Veya s3cmd Kullanmak.
rclone config
rclone sync s3:my-bucket spaces:my-space --progressAyrıca AWS CLI ile dışa aktarabilir ve ardından DOCTL veya S3CMD ile yükleyebilirsiniz.
Sunucu dosya aktarımı (EBS → Droplet)
Büyük hacimli ve statik içerikler için rsync Senkronizasyon için şunu kullanın:
rsync -azP --delete -e "ssh -i /path/to/key.pem" ubuntu@ec2-ip:/var/www/ /home/ubuntu/www/Bir anlık görüntüye ihtiyacınız varsa, öncelikle EBS'den bir anlık görüntü alın, içeriğini sıkıştırın ve ardından Droplet'e aktarın.
4. Veritabanı geçişi (RDS → Yönetilen veritabanı veya kendi sunucunuzda barındırılan veritabanı)
Veritabanı türüne göre seçenekler
MySQL/MariaDB:
Kesinti süresini en aza indirmek için DigitalOcean'da bir kopya oluşturun ve ardından geçiş işlemini gerçekleştirin. RDS kullanıyorsanız:
- DigitalOcean'da Yönetilen Bir Veritabanı Oluşturun.
- RDS'den harici bir kopya oluşturun veya mysqldump kullanın.
mysqldump -u user -p --single-transaction --quick --lock-tables=false dbname > dump.sql
mysql -h do-managed-host -u user -p dbname < dump.sqlPostgreSQL: Neredeyse sıfır kesinlik durumunda mantıksal çoğaltma (pg_dump/pg_restore) veya akışlı çoğaltma önerilir.
pg_dump -Fc -h aws-rds-host -U user dbname > db.dump
pg_restore -d dbname -h do-host -U user db.dumpKesintisiz çözüm (MySQL örneği)
Genel süreç:
- AWS'de ikili günlük kaydını etkinleştirin.
- DigitalOcean üzerinde bir MySQL replika sunucusu oluşturun ve bunu AWS üzerindeki ana sunucuya bağımlı (slave) olarak bağlayın.
- Senkronizasyon tamamlandıktan sonra, uygulamayı kopyaya yükleyin ve etkinleştirin.
5. Uygulama Dağıtımı — Seçenekler ve Komutlar
Yöntem 1 — Konteynerleştirme ve Kayıt Sistemi
Docker/Kubernetes ile konteynerleştirme, AMI'ye bağımlı kalmadan geçiş yapmanın en iyi yoludur. CI'da imajı oluşturun ve Docker Hub veya GitLab Registry'ye gönderin.
DigitalOcean'da, Docker Compose ile Yönetilen Kubernetes veya droplet'ler kullanabilirsiniz.
docker-compose pull
docker-compose up -d --remove-orphansYöntem 2 — Geleneksel Onarım
Geleneksel yöntemde, paketleri kurarsınız, kodu rsync ile aktarırsınız ve servisi systemd veya PM2 gibi bir işlem yöneticisiyle çalıştırırsınız.
npm install --production
pm2 start app.js --name myappUygulama Platformu ve Yönetilen Hizmetlerin Kullanımı
DigitalOcean App Platform, CI/CD, otomatik ölçeklendirme ve otomatik SSL sağlayabilir ve düşük seviyeli bir sunucuyu yönetmek istemiyorsanız web uygulamaları için uygundur.
6. Ağ, Güvenlik ve Kesintisiz Geçiş
Yüzer IP ve Yük Dengeleyici
Kesintisiz geçiş için DigitalOcean'da bir Yük Dengeleyici kurabilir ve kullanabilirsiniz. Yüzer IP Ya da farklı bir hedef kitle kullanın.
Strateji mavi-yeşil Genellikle şu adımları içerir:
- DO'da yeşil bir ortam oluşturmak ve uygulamayı tamamen yayınlamak.
- Sağlık kontrolleri
- Yük dengeleyicide kayan IP adresini değiştirmek veya hedef grubu değiştirmek
DNS TTL azaltımı Yayılımı hızlandırmak için ön geçiş yapmayı (örneğin TTL=300s veya daha az) unutmayın.
Güvenlik duvarı ve güvenlik
DigitalOcean hesabınıza bir SSH anahtarı ekleyin ve parola ile giriş yapmayı devre dışı bırakın:
Edit /etc/ssh/sshd_config: PermitRootLogin no, PasswordAuthentication noUFW'yi temel erişim yönetimi için kullanın:
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp
sudo ufw enableDigitalOcean'da bulut güvenlik duvarını kullanın ve AWS'deki güvenlik gruplarına benzer kurallar uygulayın. Kurulum başarısız2ban Ayrıca Certbot ile SSL kullanılması veya Yük Dengeleyici tarafından yönetilen bir sertifika kullanılması da önerilir.
7. Operasyonel İpuçları ve Komut Dosyaları
doctl Örnekleri
DO CLI kurulumu ve kimlik doğrulaması:
doctl auth init --access-token <TOKEN>Damlacık oluşturma örneği:
doctl compute droplet create my-droplet --size s-2vcpu-4gb --image ubuntu-22-04-x64 --region nyc3 --ssh-keys <KEY_ID> --vpc-uuid <VPC_ID> --waitdoctl compute cdn create --origin my-space.nyc3.digitaloceanspaces.com ...artımlı senkronizasyon için rsync
rsync -azP --delete -e "ssh -i ~/.ssh/do_key" /var/www/ user@do-ip:/var/www/8. Geçiş Sonrası — Test ve Optimizasyon
Performans değerlendirmesi ve izleme
Prometheus/Grafana veya New Relic gibi araçlarla logları, gecikmeyi ve veri aktarım hızını inceleyin. ab veya siege gibi araçlarla yük testi yapın ve IOPS ile ağ bant genişliğini kontrol etmek çok önemlidir.
Yedekleme ve Felaket Kurtarma
Droplet'ler ve Yönetilen Veritabanları için anlık görüntüleri ve otomatik yedeklemeleri etkinleştirin ve geri yükleme planını test edin.
9. Maliyet ve kaynak yönetimi ipuçları
AWS (EC2 + EBS + RDS + S3) ve DO kombinasyonu (Droplet'ler + Birimler + Yönetilen Veritabanı + Alanlar) arasındaki maliyetleri karşılaştırın.
Uygulamanız geniş bir ağ gerektiriyorsa, CDN ve BGP/Anycast kullanımı küresel gecikmeyi azaltabilir.
10. Sık karşılaşılan sorunlar ve çözümler
- Veritabanı sürümü farkı → Mantıksal dökümler kullanılarak, hazırlık ortamında uyumluluk testi ve geçiş işlemleri.
- Büyük dosyalar ve yavaş aktarımlar → tar+gzip sıkıştırma, rsync ile devam ettirme ve içerik dağıtımı için Spaces kullanımı.
- Geçiş sonrasında SSL ve CORS hataları → Sertifika zincirini ve Nginx/Yük Dengeleyici ayarlarını kontrol edin.
11. Yük Dengeleyici ve Yukarı Akış Droplet'leri için Örnek Nginx Yapılandırması
upstream app {
server 10.0.0.5:3000;
server 10.0.0.6:3000;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}12. Güvenlik ipuçları ve en iyi uygulamalara uyum
- Kullanımı SSH Anahtarları ve aktivasyon 2FA bulut hesaplarında
- IAM erişimini ve API anahtarlarını kısıtlama
- Güvenlik açığı taramaları ve yama yönetimi gerçekleştirme
- Gerekiyorsa DDoS korumasını ve WAF'ı etkinleştirin.
Çözüm
Canlı bir uygulamayı AWS EC2'den DigitalOcean'a taşımak zorlu bir süreçtir, ancak dikkatli envanter yönetimi, veritabanı replikasyonu ve geçiş için Floating IP veya Yük Dengeleyici kullanımı gibi doğru planlama ile kesinti süresini en aza indirebilir ve Droplet'lerden, Spaces'lerden ve Yönetilen Veritabanlarından faydalanabilirsiniz.
Ekip, özellikle GPU'lar, özel işlem veya oyun VPS'leri, CDN'ler ve karmaşık ağ çözümleri gerektiren senaryolar için altyapı tasarımı ve uygulamasına yardımcı olmaya hazırdır.









