AWS OpsWorks, AWS Beanstalk, AWS CloudFormation mı?


87

AWS OpsWorks'ü AWS Beanstalk ve AWS CloudFormation'a karşı kullanmanın avantaj ve dezavantajlarının neler olduğunu öğrenmek istiyorum.

Otomatik olarak ölçeklendirilebilen bir veritabanı katmanı da dahil olmak üzere, herhangi bir yüksek sayıda eşzamanlı web isteğini (dakikada 1000 istekten 10 milyon rpm'ye kadar) karşılayacak şekilde otomatik olarak ölçeklenebilen bir sistemle ilgileniyorum.

Her uygulama için ayrı bir örneğe sahip olmak yerine, İdeal olarak bazı donanım kaynaklarını verimli bir şekilde paylaşmak istiyorum. Geçmişte çoğunlukla bir EC2 bulut sunucusu + RDS + Cloudfront + S3 kullandım

Yığın sistemi, Heroku'dan taşıdığımız ray uygulamalarında bazı yüksek trafik yakutlarını, ayrıca bazı python / django uygulamalarını ve bazı PHP uygulamalarını da barındıracaktır.

Şimdiden teşekkürler.


2
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:


70

AWS OpsWorks'ü AWS Beanstalk ve AWS CLoudFormation'a kıyasla kullanmanın avantaj ve dezavantajlarının neler olduğunu öğrenmek istiyorum.

Cevap, duruma bağlı.

AWS OpsWorks ve AWS Beanstalk, nasıl düşündüğünüze bağlı olarak altyapınızı yönetmenin farklı yollarıdır (bana söylendi). CloudFormation, altyapınızı şablon haline getirmenin bir yoludur.

Şahsen, Elastic Beanstalk'a daha aşinayım, ancak her birine kendi. Git üzerinden dağıtım yapabildiği için tercih ediyorum. Elastic Beanstalk'ın ortamlarını başlatmak için CloudFormation'ı kullandığı halka açık bilgidir.

Projelerim için ikisini birlikte kullanıyorum. Uygulamam için kullandığım özel olarak yapılandırılmış bir VPC ortamı, S3 kovaları ve DynamoDB tabloları oluşturmak için CloudFormation kullanıyorum. Ardından, özel VPC'nin içinde S3 / DynamoDB kaynaklarıyla nasıl konuşulacağını bilen bir Elastic Beanstalk ortamı başlatıyorum.

Otomatik olarak ölçeklendirilebilen bir veritabanı katmanı da dahil olmak üzere, herhangi bir yüksek sayıda eşzamanlı web isteğini (dakikada 1000 istekten 10 milyon rpm'ye kadar) karşılayacak şekilde otomatik olarak ölçeklenebilen bir sistemle ilgileniyorum.

Kaputun altında OpsWorks ve Elastic Beanstalk, bahsettiğiniz yükleri idare edebilen EC2 + CloudWatch + Auto Scaling kullanır. RDS, ölçeklenebilir SQL tabanlı veritabanları için destek sağlar.

Her uygulama için ayrı bir örneğe sahip olmak yerine, İdeal olarak bazı donanım kaynaklarını verimli bir şekilde paylaşmak istiyorum. Geçmişte çoğunlukla bir EC2 bulut sunucusu + RDS + Cloudfront + S3 kullandım

" Bazı donanım kaynakları" ile ne kastettiğinize bağlı olarak, OpsWorks veya Elastic Beanstalk ortamlarının yanı sıra her zaman bağımsız EC2 bulut sunucuları başlatabilirsiniz. Şu anda Elastic Beanstalk, ortam başına bir web uygulamasını desteklemektedir. OpsWorks'ün neyi desteklediğini hatırlamıyorum.

Yığın sistemi, Heroku'dan taşıdığımız ray uygulamalarında bazı yüksek trafik yakutlarını, ayrıca bazı python / django uygulamalarını ve bazı PHP uygulamalarını da barındıracaktır.

Bunların tümü AWS tarafından tamamen desteklenmektedir. OpsWorks ve Elastic Beanstalk kendilerini bir dizi geliştirme ortamı için optimize ederken (Ruby, Python ve PHP hepsi listede yer alır), EC2 ise istediğiniz her şeyi kurabileceğiniz ham sunucular sağlar.


3
OpsWorks, git dağıtımlarını farklı şekilde de olsa yönetir. ElasticBeanstalk git dağıtımlarının bir CLI kullanılarak bir depodan gönderildiği durumlarda, OpsWorks SSH (veya genel depo ise HTTPS) kullanarak bir depoya salt okunur erişimi kullanır.
Jack Frost

@Ryan Bahsedildiği gibi Beanstalk, gerekli altyapıyı oluşturmak için arka planda Bulut oluşumu türü şablonları kullanır.
Mohd Belal

23

OpsWorks, Chef gibi bir düzenleme aracıdır - aslında, Chef - Puppet, Ansible veya Saltstalk'tan türetilmiştir. Her kaynağın (sunucu örnekleri, uygulamalar, depolama) içinde olmasını istediğiniz durumu belirterek ağınızın içinde olmasını istediğiniz durumu belirtmek için Opsworks'ü kullanırsınız. Ve her kaynağın içinde olmasını istediğiniz durumu belirtirsiniz. o durumun her bir özelliği için istediğiniz değeri belirterek. Örneğin, Apache hizmetinin her zaman çalışır durumda olmasını ve kullanıcı olarak Apache ve Linux grubu olarak Apache ile açılışta başlamasını isteyebilirsiniz.

CloudFormation, dağıtmak istediğiniz kaynakların durumunu belirten bir json şablonudur (**), yani VPC 192.168.1.0 / 24'ün bir parçası olarak us-east-1'de bir AWS EC2 micro t2 bulut sunucusunu dağıtmak istiyorsunuz . Bir EC2 bulut sunucusu durumunda, EC2 kaynağının kullanıcı verileri bölümündeki özel bash komut dosyanız aracılığıyla bu kaynakta neyin çalıştırılması gerektiğini belirleyebilirsiniz. CloudFormation yalnızca bir şablondur. Şablon, yalnızca CloudFormation için AWS Management Console aracılığıyla çalıştırırsanız veya Cloudformation yani aws cloudformation için aws cli komutunu çalıştırırsanız çalışan bir kaynak olarak görünür hale gelir ...

ElasticBeanstalk bir PAAS'tır - özellikle Ruby / Rails, node.js veya Python / django veya Python / Flask uygulamalarını yükleyebilirsiniz. Scala, Haskell veya başka bir şey çalıştırıyorsanız, bunun için bir Docker görüntüsü oluşturun ve bu Docker görüntüsünü Elastic Beanstalk'a (*) yükleyin.

Uygulamanızın Elastic Beanstalk'a yüklemesini, CloudFormation için aws klibini çalıştırarak veya Opsworks'ün uygulamanızı Elastic Beanstalk'a yüklemesi için bir tarif oluşturarak yapabilirsiniz. Ayrıca, Opsworks aracılığıyla Cloudformation için aws klibini çalıştırabilirsiniz.

(*) Aslında AWS'nin Ruby uygulaması örneğiyle ilgili belgeleri o kadar zayıftı ki sabrımı kaybettim ve örnek uygulamayı bir Docker görüntüsüne yerleştirdim ve Docker görüntüsünü Elastic Beanstalk'a yükledim.

(**) Eylül 2016 itibarıyla Cloudformation, YAML şablonlarını da desteklemektedir.


8

Opsworks'te, temel bir örneğin yapabileceği belirli işleri birleştirerek daha az kaynak kullanmak için bir yığın üzerinde katmanların "rollerini" paylaşabilirsiniz.

Katman Uyumluluk Listesi (güvenlik grupları uygun şekilde ayarlandığı sürece):

HA Proxy : custom, db-master, and memcached.
MySQL :  custom, lb, memcached, monitoring-master, nodejs-app, php-app, rails-app, and web.
Java : custom, db-master, and memcached.
Node.js : custom, db-master, memcached, and monitoring-master
PHP : custom, db-master, memcached, monitoring-master, and rails-app.
Rails :  custom, db-master, memcached, monitoring-master, php-app.
Static :  custom, db-master, memcached.
Custom : custom, db-master, lb, memcached, monitoring-master, nodejs-app, php-app, rails-app, and web 
Ganglia :  custom, db-master, memcached, php-app, rails-app. 
Memcached :  custom, db-master, lb, monitoring-master, nodejs-app, php-app, rails-app, and web. 

referans: http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html


8

AWS Beanstalk: Elastic Beanstalk ile web uygulamalarınızı çalıştıran altyapı hakkında endişelenmeden AWS bulutunda uygulamaları dağıtın ve yönetin. EC2 veya başka kurulumlar için endişelenmenize gerek yok.

AWS OpsWorks AWS OpsWorks, yeni DevOps kullanıcılarının tüm uygulamalarını modellemelerini ve yönetmelerini kolaylaştıran bir uygulama yönetimi hizmetinden başka bir şey değildir


1
Bu cevabın yanlış olduğunu düşünüyorum. Gerçek şu ki tam tersi. Elastic Beanstalk, OpsWorks ile sadece bir PaaS olsa da, uygun bileşenleri kullanarak bir yığın oluşturmak tamamen sizin sorumluluğunuzdadır. 'Yeni DevOps için' tanımı OpsWorks için değil EB kullanıcıları için geçerli olacaktır.
scaryguy

3

AWS CloudFormation - Ortamlarınızı Oluşturun ve Güncelleyin.

AWS Opsworks - Sistemlerinizi bu ortamlarda Chef veya Puppet ile yaptığımız gibi yönetin

AWS Beanstalk - Oluşturun, Yönetin ve Dağıtın.

Ama şahsen, CloudFormation ve OpsWorks'ü, amaçlandıkları şey için tam gücünü kullanarak seviyorum.

Ortamınızı oluşturmak için CloudFormation'ı kullanın, ardından makinenizi başlatmak için bulut oluşumu komut dosyalarından Opsworks'ü çağırabilirsiniz. Ardından, yönetmek için Opsworks yığınına sahip olacaksınız. Örneğin, Opsworks kullanarak linux kutusuna bir kullanıcı ekleyin veya şef tariflerini kullanarak kutularınıza yama yapın. Ayrıca dağıtım için şef tariflerini de yazabilirsiniz. Aksi takdirde, özellikle dağıtım için oluşturulmuş CodeDeploy'u kullanabilirsiniz.


3

AWS OpsWorks - Bu, AWS yönetim hizmetinin bir parçasıdır. Komut dosyası kullanarak uygulamanın yapılandırılmasına yardımcı olur. Bu uygulama yönetimi ve operasyonu için devops çerçevesi olarak Chef'i kullanır. Sunucu, veritabanı, depolama yapılandırması için kullanılabilecek şablonlar vardır. Şablonlar ayrıca başka herhangi bir görevi gerçekleştirmek için özelleştirilebilir. DevOps Mühendisleri, uygulamanın bağımlılıkları ve altyapısı üzerinde kontrole sahiptir.

AWS Beanstalk - Java, Node Js, Python, Ruby Go gibi diller için ortam sağlar. Elastik Fasulye sapı, uygulamayı çalıştırmak için kaynak sağlar. Geliştiricilerin altyapı konusunda endişelenmemesi ve altyapı üzerinde kontrol sahibi olmaması.

AWS CloudFormation - CloudFormation, AWS kaynaklarını sırayla yönetmek için örnek şablonlara sahiptir.


0

Diğerlerinin de söylediği gibi AWS Beanstalk, AWS OpsWorks ve AWS Cloud Formation farklı sorunlar için farklı çözümler sunar.

İle başarmak için

I am interested in a system that can be auto scaled to handle any high number of simultaneous web requests (From 1000 requests per minute to 10 million rpm.), including a database layer that can be auto scalable as well.

Ve geçiş sürecinde olduğunuzu da göz önünde bulundurarak AWS Lambda ve AWS DynamoDB çözümüne (veya hibrit çözüm) bir göz atmaya başlamanızı şiddetle tavsiye ederim.

Her ikisi de basit bir şekilde otomatik ölçeklendirme için tasarlanmıştır ve çok ucuz bir çözüm olabilir.


-1

Sadece terraform ve ECS veya EKS kullanın.

opsworks, elastik fasulye sapı ve bulutformasyon eski teknoloji artık. -)

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.