Bir .NET projesi için Elastic Beanstalk ile CloudFormation arasındaki fark nedir?


121

Bir .NET MVC uygulaması geliştirdim ve AWS ile uğraşmaya ve onu Visual Studio Araç Seti aracılığıyla dağıtmaya başladım. Araç setindeki Elastic Beanstalk seçeneğini kullanarak uygulamayı başarıyla dağıttım.

Araç setiyle AWS'ye .NET uygulamalarını dağıtmaya yönelik eğitimleri gözden geçirirken , hem Elastic Beanstalk hem de CloudFormation ile dağıtım için eğiticiler olduğunu fark ettim . Bu ikisi arasındaki fark nedir?

Anladığım kadarıyla ikisi de aslında aynı şeyi yapıyor gibi görünüyor - uygulamanızı AWS bulutuna dağıtmayı kolaylaştırıyor (EC2 bulut sunucuları, yük dengeleyici, otomatik ölçeklendirme vb.). İkisini de okumayı denedim, ama bana aynı şey gibi gelen bir grup vızıltıdan başka bir şey bulamıyorum. AWS web sitesinde bu soruyu tam olarak yanıtlaması beklenen bir SSS bile buldum , ancak gerçekten anlamıyorum.

Birini mi yoksa diğerini mi kullanmalıyım? Her ikisi de?


Bu soru Stackoverflow için biraz konu dışı, ancak büyük olasılıkla ServerFault'a da uymaz ... Bunun gibi sorular için yeni bir site önerdim, kabul ediyorsanız takip edin! area51.stackexchange.com/proposals/82757/…
Dan Ciborowski - MSFT

Yanıtlar:


212

Aslında oldukça farklılar. Elastic Beanstalk, geliştiricilerin hayatını kolaylaştırmayı amaçlamaktadır. CloudFormation, sistem mühendislerinin hayatlarını kolaylaştırmayı amaçlamaktadır.

Elastic Beanstalk, AWS'nin IaaS hizmetlerinin üzerinde yer alan PaaS benzeri bir katmandır ve temeldeki EC2 bulut sunucuları, Elastic Load Balancer'lar, otomatik ölçekleme grupları vb. Unsurları soyutlamaktadır. Bu, herkesle uğraşmak istemeyen geliştiriciler için çok daha kolay hale getirir. uygulamalarının hızlı bir şekilde AWS'de dağıtılmasını sağlamak için sistemlerle ilgili şeyler. Heroku, EngineYard, Google App Engine, vb. Gibi diğer PaaS ürünlerine çok benzer. Elastic Beanstalk ile, temeldeki sihrin nasıl çalıştığını anlamanıza gerek yoktur.

Öte yandan CloudFormation, otomatik olarak hiçbir şey yapmaz. Devasa bir JSON dosyasında dağıtım için gereken tüm kaynakları tanımlamanın basit bir yolu. Dolayısıyla, bir CloudFormation şablonu aslında iki ElasticBeanstalk ortamı (üretim ve hazırlık), birkaç ElasticCache kümesi, bir DyanmoDB tablosu ve ardından Route53'te uygun DNS oluşturabilir. Daha sonra bu şablonu AWS'ye yüklüyorum, uzaklaşıyorum ve 45 dakika sonra her şey hazır ve bekliyor. Yalnızca bir düz metin JSON dosyası olduğundan, onu kaynak denetimime yapıştırabilirim, bu da uygulama dağıtımlarımı sürümlendirmek için harika bir yol sağlar. Aynı zamanda, farklı bir bölgede hızla devreye alabileceğim, tekrarlanabilir, "bilinen iyi" bir yapılandırmaya sahip olmam da sağlar.


Teşekkürler! Görünüşe göre şimdilik EBS'ye bağlı kalacağım.
kspearrin

37
@xxkylexx Bilginize: "EBS", "Elastic Block Store" adlı AWS hizmetini ifade eder. Sanırım "EBS" yerine "Elastic Beanstalk" demek istiyorsunuz.
ekillaby

2
Bence oluşturduğunuz uygulama için Elastic Beanstalk ortamı oluşturmak için Cloud Formation şablonunu kullandılar ve otomatik hale getirdiler - .Net veya her neyse ... FWIW
kodlayıcı

51

Standart bir .NET web uygulamasını hızla dağıtmaya başlamak için Elastic Beanstalk sizin için doğru hizmettir.

Uygulama Hizmetleri Karşılaştırma Grafiği

AWS CloudFormation : "Şablon Odaklı Temel Hazırlık"

AWS CloudFormation, geliştiricilere ve sistem yöneticilerine, ilgili AWS kaynaklarının bir koleksiyonunu oluşturup yönetmeleri, bunları düzenli ve öngörülebilir bir şekilde tedarik edip güncellemeleri için kolay bir yol sağlar.

CloudFormation (CFn), mevcut AWS API'lerine göre hafif, düşük seviyeli bir soyutlamadır. Statik bir JSON / YAML şablon belgesi kullanarak , AWS API'lerindeki CRUD işlemlerine karşılık gelen bir dizi Kaynak ( EC2 bulut sunucusu veya S3 paketi gibi ) bildirirsiniz.

Bir CloudFormation yığını oluşturduğunuzda, CloudFormation, ilişkili Kaynakları oluşturmak için ilgili API'leri çağırır ve bir yığını sildiğinizde, CloudFormation bunları silmek için karşılık gelen API'leri çağırır. AWS API'lerinin çoğu (ancak tümü değil) desteklenmektedir.

AWS Elastic Beanstalk : "Web Uygulamaları Kolaylaştırıldı"

AWS Elastic Beanstalk, Java , .NET , PHP , Node.js , Python , Ruby , Go ve Docker ile geliştirilen web uygulamalarını ve hizmetlerini Apache, Nginx, Passenger gibi tanıdık sunucularda dağıtmak ve ölçeklendirmek için kullanımı kolay bir hizmettir. ve IIS.

Kodunuzu kolayca yükleyebilirsiniz ve Elastic Beanstalk kapasite sağlama, yük dengeleme, otomatik ölçeklendirmeden uygulama durumunu izlemeye kadar dağıtımı otomatik olarak gerçekleştirir.

Elastic Beanstalk (EB), kapsamı Heroku'ya benzer şekilde, web uygulamalarını barındırmak için üst düzey, yönetilen bir 'hizmet olarak platformdur' (PaaS) . EB, düşük seviyeli AWS kaynaklarıyla doğrudan uğraşmak yerine, bir web arayüzü kullanarak bir uygulama ortamı oluşturduğunuz, uygulamanızın hangi platformu kullanacağını seçtiğiniz , bir kaynak paketi oluşturup yüklediğiniz ve geri kalanını EB'nin halledeceği, tam olarak yönetilen bir platform sağlar .

EB kullanarak, için özellikleri yerleşik her türlü almak Başvurunuz ortamı izleme ve uygulamanın yeni sürümlerini dağıtmak .

Temelde EB, uygulamanın çeşitli AWS kaynaklarını oluşturmak ve yönetmek için CloudFormation'ı kullanır. Uygulamanızla birlikte dağıtılan bir EB yapılandırma dosyasına CloudFormation Kaynaklarını ekleyerek varsayılan EB ortamını özelleştirebilir ve genişletebilirsiniz .

Sonuç

Uygulamanız Elastic Beanstalk'ın desteklenen platformlarından birini kullanan standart bir web katmanı uygulamasıysa ve uygulamanız için yönetimi kolay, yüksek düzeyde ölçeklenebilir barındırma istiyorsanız Elastic Beanstalk kullanın .

Eğer sen:

  • Uygulamanızın tüm AWS kaynaklarını doğrudan yönetmek istiyorsanız;
  • Örnek sağlama veya dağıtım sürecinizi yönetmek veya büyük ölçüde özelleştirmek istiyorsanız;
  • Elastic Beanstalk tarafından desteklenmeyen bir uygulama platformu kullanmanız gerekir; veya
  • Sadece üst düzey Elastic Beanstalk özelliklerinden herhangi birini istemeyin / buna ihtiyaç duymayın

daha sonra CloudFormation'ı doğrudan kullanın ve Elastic Beanstalk'a eklenen yapılandırma katmanından kaçının.


14

Cloud Formation, AWS hizmetlerini dağıtmanıza olanak tanıyan bir hizmettir. Hangi hizmetleri istediğinizi açıklayan bir şablon dosyası oluşturursunuz. Bu şablonu dağıttığınızda, Cloud Formation kaynakları sizin için bir "paket" olarak oluşturur. Şablonunuzda tanımladığınız tüm kaynaklar birlikte başlatılır ve sonlandırılır. Cloud Formation ile oluşturulabilecek kaynak türlerine örnekler şunlardır: S3, EC2 bulut sunucuları, AutoScaling, DynamoDb, vb. Cloud Formation, EC2 için size "cfn-init" komut dosyalarından yararlanma olanağı da sağlar; örneklerinizi önyüklemek için şablonla birlikte kullanılabilir.

Elastic Beanstalk, aşağıdakileri yapmak için Cloud Formation şablonlarını ve scipts kullanır: 1. Bir Yük Dengeleyici ve Otomatik Ölçeklendirme Grubu oluşturmak, 2. Kodunuzu S3'e kopyalamak, 3. Kodu S3'ten indirmek ve dağıtmak için bir Ec2 örneğini önyükleyin.

Cloud Formation'ın kullanımı EB kadar kolay değildir, ancak çok daha güçlüdür çünkü EC2 bulut sunucuları dışında kaynaklar oluşturabilir, cfn-init komut dosyasının nasıl kontrol edileceğini vb.


10

Kayda değer başka farklılıklar da var. Elastik fasulye sapı, tek bir uygulama için bir kap olarak tasarlanmıştır. Birkaç web sitesi ve hizmetten oluşan bir setim var, ancak birden fazla web sitesini beanstalk ile dağıtmayı çok zor buldum ve AWS'nin bu durumda ekstra esnekliğe sahip olduğu için bulut oluşumunu kullanması birkaç denemeden sonra tavsiye edildi. AWS bulut oluşumunu önyükleme ve burada çalışan bir siteyi güncelleme hakkında AWS sayfalarından çok daha net olan gerçekten yararlı bir makale var . Yine de VS'den doğrudan S3'te depolanan bulut oluşumu şablonuna dağıtıp onu beanstalk gibi otomatik güncellemeye alıp alamayacağımızı bulmaya çalışıyoruz ...


3

Bu hizmetler birbirini tamamlayacak şekilde tasarlanmıştır. AWS Elastic Beanstalk, bulutta uygulamaları kolayca dağıtmak ve çalıştırmak için bir ortam sağlar. Geliştirici araçlarıyla entegre edilmiştir ve uygulamalarınızın yaşam döngüsünü yönetmeniz için tek noktadan bir deneyim sağlar. AWS CloudFormation, çok çeşitli AWS ve üçüncü taraf kaynakları için uygun bir tedarik mekanizmasıdır. Mevcut kurumsal uygulamalar, eski uygulamalar, çeşitli AWS kaynakları kullanılarak oluşturulan uygulamalar ve kapsayıcı tabanlı çözümler (AWS Elastic Beanstalk kullanılarak oluşturulanlar dahil) gibi birçok farklı uygulama türünün altyapı ihtiyaçlarını destekler.

AWS CloudFormation, AWS kaynak türlerinden biri olarak Elastic Beanstalk uygulama ortamlarını destekler. Bu, örneğin uygulama verilerini depolamak için bir RDS veritabanıyla birlikte AWS Elastic Beanstalk tarafından barındırılan bir uygulamayı oluşturmanıza ve yönetmenize olanak tanır. RDS örneklerine ek olarak, desteklenen diğer AWS kaynakları da gruba eklenebilir.


1

Elastic Beanstalk, yüklediğiniz koda göre kapasite sağlama, yük dengeleme, otomatik ölçeklendirmeden uygulama durumu izlemeye kadar dağıtımı otomatik olarak gerçekleştirir; CloudFormation, bir JSON komut dosyası aracılığıyla tüm bulut ortamlarını dağıtmak için tasarlanmış otomatik bir provizyon motorudur.

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.