Manuel dağıtım ile Amazon Elastic Beanstalk karşılaştırması


114

Elastic Beanstalk kullanarak, EC2 bulut sunucusu oluşturmaya ve tipik bir java web uygulaması için tomcat sunucusu kurup dağıtmaya vs. göre elde ettiğimiz avantajlar nelerdir. Yük dengeleme, izleme ve otomatik ölçeklendirme tek avantaj mı?

Veritabanını kullanan web uygulamam için veritabanını EC2 bulut sunucusunun kendisine kurduğumu varsayalım. Otomatik ölçeklendirme gerçekleştiğinde veritabanı yeni oluşturulan örnekte oluşturulacak mı yoksa ana örnekte oluşturduğum veritabanına erişecek ... Otomatik ölçeklendirme gerçekleştiğinde yalnızca bir kopya oluşturursa, örnekler arasında veri senkronizasyonu nasıl olacak?

Yanıtlar:


144

Yük dengeleme, izleme ve otomatik ölçeklendirme gibi bahsettiğiniz her şey kesinlikle avantajlar.

Bununla birlikte, bunu şu şekilde düşünmeniz gerekir: Gerçek bir Hizmet Olarak Platformda (PAAS) amaç, uygulamayı platformdan ayırmaktır. Bir geliştirici olarak, yalnızca uygulamanız için endişeleniyorsunuz. Platform size "kiralanmıştır". Platform "örnekleri" sizin için otomatik olarak güncellenir, yönetilir, ölçeklenir, dengelenir vb. Sadece WAR dosyanızı yüklersiniz ve çalışır (en azından teorik olarak).

EC2 kendi başına PAAS değildir. Daha çok IAAS ( Hizmet Olarak Altyapı ) gibidir. Yine de sunucu örnekleriyle ilgilenmeniz, üzerlerine yazılım yüklemeniz, güncel tutmanız vb.

Elastic Beanstalk bir PAAS sistemidir. Yani olan App Engine ve Azure diğerleri arasında.

Gerçek bir PAAS sisteminde DBMS, web uygulama sunucularından ayrı bir bileşendir. Nedeni açıktır: DBMS, uygulama sunucusu için kullanılan bulut sunucularına muhtemelen kurulamaz, çünkü örnekler trafiğinize göre oluşturulup yok edildikçe DBMS kaybolur! DBMS ve uygulama sunucusunun aynı makine / örnekte olması genellikle iyi bir fikir değildir.

Bir PAAS sisteminde, DBMS ayrı bir hizmettir. Amazon için bu Amazon RDS olacaktır . Tıpkı uygulama sunucusu hakkında endişelenmenize gerek olmayan ve sadece WAR dosyanızı yüklediğiniz Elastic Beanstalk gibi, RDS ile, DBMS hakkında endişelenmenize gerek kalmaz ve sadece veritabanlarınızı dağıtırsınız.

Elastic Beanstalk ve RDS, özellikle gecikmenin çok düşük olacağı aynı kullanılabilirlik bölgesinde konuşlandırıldığında birlikte çok iyi çalışır.

Son olarak, Elastic Beanstalk kullanmak, dağıtılan kaynaklardan (EC2 bulut sunucuları ve yük dengeleyici) daha pahalıya mal olmaz. Ancak, RDS ucuz değildir ve hem uygulama sunucusu hem de DBMS için tek bir EC2 bulut sunucusunu kullanmaktan kesinlikle daha pahalı olacaktır.


3
Güzelce koy. Yalnızca bir ek: Her bir bulut sunucusu oluşturma işlemi için temel olarak hizmet verecek özel bir AMI belirtebilirsiniz. Böylece, örneğin bir Apache görüntüsünü gerekli tüm yapılandırmalar ve uygulamalarla özelleştirebilir ve bunu temel AMI olarak kullanabilirsiniz (Beanstalk ortam yapılandırmasında bir Özel AMI Kimliği alanı vardır) Yine de, çalışma zamanında üretilen veriler gerçekten de her örnek sonlandırmada silinecektir. (ve yük dengeleyici bunu yapacak!).
André Felipe

1
Beni hazırlıksız yakalayan bir şey de Elastic Beanstalk'ın konuşlandırılan her ortam için bir yük dengeleyici oluşturmasıydı. Yük dengeleyicilerin çalıştırılması gerçekten pahalı değildir, ancak mikro örnekle kabaca aynı maliyettedir.
Ken Liu

@KenLiu, Load Balancer bir mikro örnekten daha güçlüdür.
BigSack

7
@BigSack - belirtmeye çalıştığım nokta, Elastic Beanstalk'ın ücretsiz olması gerektiğiydi, ancak AWS, her bir ortama ayda yaklaşık 15 dolara mal olacak bir yük dengeleyici tahsis edeceğini açıkça göstermiyor. Mikro örnekle karşılaştırmıyordum.
Ken Liu

Bildiğim kadarıyla, RDS bugünlerde EC2 fiyatına neredeyse eşdeğerdir ve çok daha fazla kullanım, bakım kolaylığı ve güvenilirlik sağlar.
Justin Schier

38

Elastic Beanstalk, yük dengeleme, izleme ve otomatik ölçeklemeden fazlasını yapar.

1) Uygulamanızın farklı sürümlerini depolayarak ve yöneterek uygulama sürümlerini yönetir ve uygulamalarınızın farklı sürümleri arasında kolayca geçiş yapmanızı sağlar.

2) Her uygulama için "ortamlar" kavramına sahiptir ve her ortama uygulamanızın farklı sürümlerini dağıtmanıza olanak tanır. Bu, örneğin, ayrı QA ve DEV ortamları kurmak istiyorsanız ve önce DEV'de bir derlemeyi kolayca dağıtmak istiyorsanız, ardından QA ekibiniz bir sonraki derleme için hazır olduğunda uygulamanın aynı sürümünü QA'da dağıtmak istiyorsanız kullanışlıdır.

3) Önemli konteyner yapılandırma özelliklerini (örneğin Tomcat bellek ayarları) Elastic Beanstalk konsoluna ve API'ye haricileştirir. Bu nedenle ayarları kolayca kaydedebilir ve ortamlar arasında kopyalayabilirsiniz.

4) Uygulama günlük dosyalarını konsol üzerinden görüntüleyin ve günlük dosyalarını otomatik olarak S3'e taşıyın ve arşivleyin. (Kuşkusuz bu özellik şu anda biraz zayıf.)


Her neyse, benim konseptimde, beanstalk, dağıtımdaki arıza ve felaket durumlarında sevmediğim performansı anlamak istiyor ve LAMBDA kullanarak her şey aynı veya daha iyi olabilir. Zor ama yüksek mevcudiyetiniz için sihirli bir değnek.
Lucas Rodrigues Sena

Sadece son noktaya eklemek için: tüm uygulama günlüklerini güzel bir şekilde CloudWatch'a gönderebilirsiniz.
SebaGra

6

Hem EC2'ye özel (Nginx & Gunicorn) hem de Beanstalk Ortamı (CentOS & Apache2) için bir uygulamam vardı.

Gözlemlerim:

  • BeanStalk, Paas'dır. EC2 bulut sunucusunu (IAAS) manuel olarak oluşturmak, her şeyi sıfırdan yapmak gibidir, ancak sağlam kontrole sahipsiniz.

  • BeanStalk, varsayılan olarak CentOS ve Apache (Httpd) ile birlikte gelir. Özel bir örnekte işletim sistemini seçebilirsiniz.

  • Benim için önemli olan bu şeyler

    • Beanstalk ortamında ortaya çıkan birçok 504 hatası vardı.
    • BeanStalk sunucusu çöktüğünde hata ayıklamak zordu, çünkü günlükler de görünmüyordu ve makineye ssh gönderilemiyordu. Bu çok önemli.
    • Celery, Redis gibi araçları kurma / yapılandırma (başka bir bağlantı noktası çalıştırmanız gerekir) vb.,. adanmış durumda çok daha kolaydır.
  • Benim durumumda, bazı paketlerin (pandoc gibi) kurulumunu çalıştırmak için (Beanstalk) sunucusunu büyütmem gerekiyordu. Ubuntu'da bunlar daha basit.

  • BeanStalk'ta ölçeklendirme çok daha kolaydır. BeanStalk'ta sunucuları klonlamak basittir.

  • Her iki durumda da mikro aldım (adanmış ve Beanstalk). Adanmış mikro örneğin daha iyi olduğunu hissettim.

  • Beanstalk'ta otomatik dağıtım. Aynı şeyi otomatikleştirmek için komut dosyaları yazmak zorunda kaldım, bu sorun değil, çünkü sadece bir kez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.