AWS EC2 üzerinde Docker ve Full Stack Web Performansı

Bu yazımda AWS EC2 üzerinde Docker Konteynerleri üzerine kurduğum sunucu ortamının performansından bahsedeceğim.


AWS EC2 üzerinde Docker ve Full Stack Web Performansı

AWS EC2 üzerinde Docker Konteynerleri ile kurduğum sunucu ortamının performansından bahsetmeden önce, bu performans denemesini bugüne kadar neden yapmadım onu açıklayayım.

Çok uzun süredir AWS EC2 sunucularını kullanıyorum fakat AWS üzerinde konteyner teknolojisi ile bir deneyimim olmamıştı. EC2 üzerinde NGINX web sunucumu kurup, SQL/NoSql içinde Amazon’un hosted servislerini kullanıyordum. (Konteyner işini de EC2 kullanmadan ECS ile çözmek mümkün ama onu da hiç deneyimlemedim) Tüm sunucuları EC2 üzerinde kurmayı denemiş olsam da ortalık karıştığı için pek de rahat hissedemiyordum.

Geçmişte Docker’ı daha çok son kullanıcı uygulaması olarak kullanacağım ve docker konteyner’i olarak paketlenmiş uygulamalar için kullanıyordum. Geliştirme ortamım tüm sunucu yazılımlarını yerel makineme klasik yöntemle kurarak oluşturulmuştu. Son bir senedir geliştirme ortamında da herşeyi yavaş yavaş docker üzerine alınca son geliştirdiğim uygulamayı AWS’ye taşırken AWS hosted servisleri kullanmak aksine zor bile geldi. Sonuç olarak tüm sistemi EC2’de çalışan bir makinada docker konteynerleri üzerine inşa ettim.

Bütün sunucu ortamını sanallaştırarak kendim oluşturduğum için büyük bir projede “backup”, “persistent storage” ve “High-Availiability” e de ekstra kafa yormam gerekecek. (Ki bence gayet eğlenceli) ama sunucu ortamında %100 hakim olma duygusu da ayrı bir güven veriyor.

Neyse gelelim performans hakkındaki izlenimime

Kurulumu AWS’de uzun süredir boş bekleyen T3a.small instance’ı üzerinde yaptım. t3a.small instance’lar 2 vCPU ve 2.0 GiB memory içeriyor.

Bu instance üzerine Ubuntu 20 LTE Server sürümünü ve daha sonra onun da üzerine Docker’ı ekleyerek basit bir kurulum yaptım.

Docker üzerinde Portainer (Docker yönetimi için), Nginx, PhpFPM, MariaDB, Redis ve RabbitMQ için aktif konteynerler çalışıyor.

Çalışan PHP kod anlık olarak en fazla 3-4 kullanıcının girdiği, veri tabanı tarafı için herhangi bir cache vs. kullanılmayan (3-4 kullanıcının kullanacağı sistem için uğraşmaya değmezdi) hafif bir kod.

AWS monitor sayfasını incelediğimde sistemin CPU kullanım oranının %1 seviyesinde olduğunu görüyorum. Portainer Docker Swarm kullanırken sistemin geneli ile ilgili istatistik veriyor ama tek başına Docker kullanırken sadece konteyner istatistiklerini verdiğini farkettim. Bunları incelediğimde de incelediğimde hafıza kullanımının 300-400 mb seviyesinde olduğu görülüyor.

AWS CPU kullanım oranı

Sistemi yük altında denemedim fakat boşta çalışırken gösterdiği bu performans iyi bir optimizasyonla yük altında da yeterli olacağını gösteriyor. Bulut ortamının en güzel yanı yetmezse yatay veya dikey büyümeyi kolaylaştırıyor olması.

Mevcut şartlarda hem sistemin geneli, hem de tek tek sunucular gayet performanslı çalışıyorlar. Yerel’de 80-100ms arasında açılan sayfalar AWS üzerinde 8-10ms’de açılır hale geldi. Kod ve sistem optimizasyonu ile birlikte tatmin edici bir yükü kaldırabileceğini düşünüyorum.

Gerektiğinde sistemin scale edilmesi ile ilgili de bir şeyler yazacaktım fakat bunun ayrı bir yazı konusu yaparsam daha faydalı olacağını düşündüğüm için bu yazıya burada son vereceğim.

Bu Yazıda Yapılan Değişiklikler
  • 11.05.2022: Yazı özeti düzenlendi.

Bir soru, öneri ya da yorumunuz mu var?

Evren Bal

Ben Evren BAL

1996'dan beri ‘Internet canlısıyım!’

Evren Bal Hakkında daha fazla bilgi.

Tanışmak isterseniz hemen sosyal medyadan iletişime geçebilirsiniz.

Bana Ulaşın

Bana Ulaşın

  • Bir sorunuz mu var?
  • Yazıda bir hata mı farkettiniz?
  • Sayfa ile ilgili bir öneriniz mi var?
  • Yazmamı önereceğiniz bir konu mu var?

Lütfen iletişim formunu kullanarak veya sosyal medya hesaplarımdan bana ulaşın.

Digital Ocean Logo

VPS sunucusu denemek ister misiniz?

Digital Ocean'a referans bağlantımdan kayıt olarak yeni oluşturacağınız hesabınızı 60 gün geçerli 100$ kredi ile açabilirsiniz. Bu miktar yüksek performanslı VPS'leri bile denemeniz için yeterlidir.

Yapacağınız onca kurulumun boşa gitmemesi için benim tavsiyem uzun vadede kullanabileceğiniz özellik ve maliyetlerde bir sunucu oluşturmanızdır.

Ücretsiz 100$ kredi bağlantısı

60 günlük denemeniz sonunda eğer devam etmek istemezseniz hiç bir ücret ödemeyeceksiniz. Hizmeti kullanmaya devam etmek isterseniz harcamanız 25$'a ulaştığında benim hesabıma da 25$ kredi yüklenecektir.

Diğer bir deyişle, siz 100$ ücretsiz krediyi her halükarda kazanırken, daha sonra ücretli devam etmeye karar verirseniz ben de 25$ kredi kazanacağım.

Copyright © 2022 - Evren BAL