AWS OpsWorks vs AWS Beanstalk vs AWS CloudFormation?


86

Chciałbym wiedzieć, jakie są zalety i wady korzystania z AWS OpsWorks w porównaniu z AWS Beanstalk i AWS CloudFormation?

Interesuje mnie system, który można automatycznie skalować do obsługi dowolnej dużej liczby jednoczesnych żądań internetowych (od 1000 żądań na minutę do 10 milionów obrotów na minutę), w tym warstwę bazy danych, która może być również automatycznie skalowalna.

Zamiast mieć osobną instancję dla każdej aplikacji, najlepiej byłoby wydajnie udostępniać niektóre zasoby sprzętowe. W przeszłości korzystałem głównie z instancji EC2 + RDS + Cloudfront + S3

System stosu będzie hostował niektóre aplikacje Ruby o dużym ruchu na railsach, które migrujemy z Heroku, a także niektóre aplikacje Python / django i niektóre aplikacje PHP.

Z góry dziękuję.


2
To pytanie jest trochę poza tematem dla Stackoverflow, ale prawdopodobnie nie pasowałoby również do ServerFault ... Zaproponowałem nową witrynę z takimi pytaniami, śledź, jeśli się zgadzasz! area51.stackexchange.com/proposity/82757/…
Dan Ciborowski - MSFT

Odpowiedzi:


69

Chciałbym wiedzieć, jakie są zalety i wady korzystania z AWS OpsWorks w porównaniu z AWS Beanstalk i AWS CLoudFormation?

Odpowiedź brzmi: to zależy.

AWS OpsWorks i AWS Beanstalk to (jak mi powiedziano) po prostu różne sposoby zarządzania infrastrukturą, w zależności od tego, jak o tym myślisz. CloudFormation to po prostu sposób na tworzenie szablonów infrastruktury.

Osobiście bardziej jestem zaznajomiony z Elastic Beanstalk, ale dla każdego z nich. Wolę to, ponieważ może wykonywać wdrożenia przez Git. To publiczna informacja, że ​​Elastic Beanstalk używa CloudFormation pod maską do uruchamiania swoich środowisk.

W swoich projektach używam obu w tandemie. Używam CloudFormation do konstruowania niestandardowego środowiska VPC, zasobników S3 i tabel DynamoDB, których używam w mojej aplikacji. Następnie uruchamiam środowisko Elastic Beanstalk wewnątrz niestandardowego VPC, które wie, jak rozmawiać z zasobami S3 / DynamoDB.

Interesuje mnie system, który można automatycznie skalować do obsługi dowolnej dużej liczby jednoczesnych żądań internetowych (od 1000 żądań na minutę do 10 milionów obrotów na minutę), w tym warstwę bazy danych, która może być również automatycznie skalowalna.

Pod maską OpsWorks i Elastic Beanstalk używają EC2 + CloudWatch + Auto Scaling, który jest w stanie obsłużyć ładunki, o których mówisz. RDS zapewnia obsługę skalowalnych baz danych opartych na języku SQL.

Zamiast mieć osobną instancję dla każdej aplikacji, najlepiej byłoby wydajnie udostępniać niektóre zasoby sprzętowe. W przeszłości korzystałem głównie z instancji EC2 + RDS + Cloudfront + S3

W zależności od tego, co rozumiesz przez „ niektóre zasoby sprzętowe”, zawsze możesz uruchamiać samodzielne instancje EC2 wraz ze środowiskami OpsWorks lub Elastic Beanstalk. Obecnie Elastic Beanstalk obsługuje jedną aplikację internetową na każde środowisko. Nie pamiętam, co obsługuje OpsWorks.

System stosu będzie hostował niektóre aplikacje Ruby o dużym ruchu na railsach, które migrujemy z Heroku, a także niektóre aplikacje Python / django i niektóre aplikacje PHP.

Wszystko to jest w pełni obsługiwane przez AWS. OpsWorks i Elastic Beanstalk zoptymalizowały się pod kątem szeregu środowisk programistycznych (Ruby, Python i PHP są na liście), podczas gdy EC2 zapewnia surowe serwery, na których można zainstalować wszystko, co chcesz.


3
OpsWorks obsługuje wdrożenia git, choć inaczej. Tam, gdzie wdrożenia git ElasticBeanstalk są wypychane z repozytorium przy użyciu interfejsu wiersza polecenia, OpsWorks używa dostępu tylko do odczytu do repozytorium przy użyciu protokołu SSH (lub HTTPS, jeśli repozytorium publiczne).
Jack Frost

@Ryan Jak wspomniano, Beanstalk używa w tle szablonów formacji chmury do tworzenia wymaganej infrastruktury.
Mohd Belal

22

OpsWorks to narzędzie do orkiestracji, takie jak Chef - w rzeczywistości pochodzi od Chef - Puppet, Ansible lub Saltstalk. Używasz Opsworks, aby określić stan, w jakim ma znajdować się Twoja sieć, określając stan, w jakim ma być każdy zasób - instancje serwera, aplikacje, pamięć masowa. I określasz stan, w jakim ma znajdować się każdy zasób. określenie żądanej wartości dla każdego atrybutu tego stanu. Na przykład możesz chcieć, aby usługa Apache była zawsze uruchomiona i uruchomiona podczas rozruchu z Apache jako użytkownikiem i Apache jako grupą Linux.

CloudFormation to szablon json (**) określający stan zasobów, które chcesz wdrożyć, tj. Chcesz wdrożyć instancję AWS EC2 micro t2 w us-east-1 jako część VPC 192.168.1.0/24 . W przypadku instancji EC2 możesz określić, co powinno zostać uruchomione na tym zasobie za pomocą własnego skryptu bash w sekcji danych użytkownika zasobu EC2. CloudFormation to tylko szablon. Szablon zostanie zmodyfikowany jako działający zasób tylko wtedy, gdy uruchomisz go za pośrednictwem konsoli zarządzania AWS dla CloudFormation lub jeśli uruchomisz polecenie aws cli dla Cloudformation, tj. Aws cloudformation ...

ElasticBeanstalk to PAAS - możesz załadować aplikacje w szczególności Ruby / Rails, node.js lub Python / django lub Python / Flask. Jeśli używasz czegoś innego, jak Scala, Haskell lub cokolwiek innego, utwórz dla niego obraz Dockera i prześlij ten obraz Dockera do Elastic Beanstalk (*).

Możesz przesłać swoją aplikację do Elastic Beanstalk, uruchamiając aws cli dla CloudFormation lub tworząc przepis na Opsworks, aby przesłać aplikację do Elastic Beanstalk. Możesz także uruchomić aws cli dla Cloudformation za pośrednictwem Opsworks.

(*) W rzeczywistości dokumentacja AWS dotycząca przykładu aplikacji Ruby była tak słaba, że ​​straciłem cierpliwość i osadziłem przykładową aplikację w obrazie Dockera i załadowałem obraz Dockera do Elastic Beanstalk.

(**) Od września 2016 r. Cloudformation obsługuje również szablony YAML.


8

W Opsworks można udostępniać „role” warstw w stosie, aby zużywać mniej zasobów, łącząc określone zadania, które może wykonywać podstawowa instancja.

Lista zgodności warstw (o ile grupy zabezpieczeń są prawidłowo ustawione):

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. 

źródło: http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html


8

AWS Beanstalk: to wdrażanie i zarządzanie aplikacjami w chmurze AWS bez martwienia się o infrastrukturę obsługującą aplikacje internetowe z Elastic Beanstalk. Nie musisz martwić się o EC2 lub inne instalacje.

AWS OpsWorks AWS OpsWorks to nic innego jak usługa zarządzania aplikacjami, która ułatwia nowym użytkownikom DevOps modelowanie i zarządzanie całą ich aplikacją


1
Myślę, że ta odpowiedź jest niedokładna. Fakt jest odwrotny. Podczas gdy Elastic Beanstalk to tylko PaaS, w OpsWorks cała odpowiedzialność za stworzenie stosu przy użyciu odpowiednich komponentów spoczywa na Tobie. Definicja „nowego DevOps” dotyczyłaby użytkowników EB, a nie OpsWorks ”.
scaryguy

3

AWS CloudFormation - Twórz i aktualizuj swoje środowiska.

AWS Opsworks - Zarządzaj swoimi systemami w tych środowiskach, tak jak robimy to z Chef lub Puppet

AWS Beanstalk - twórz, zarządzaj i wdrażaj.

Ale osobiście lubię CloudFormation i OpsWorks, wykorzystując ich pełną moc do tego, do czego są przeznaczone.

Użyj CloudFormation, aby stworzyć swoje środowisko, a następnie możesz wywołać Opsworks ze skryptów tworzenia chmury, aby uruchomić swoją maszynę. Wtedy będziesz mieć stos Opsworks do zarządzania nim. Na przykład dodaj użytkownika w Linuksie za pomocą Opsworks lub zrób łatanie swoich pudełek za pomocą przepisów szefa kuchni. Możesz również zapisać przepisy szefa kuchni do wdrożenia. W przeciwnym razie możesz użyć CodeDeploy specjalnie skompilowanej do wdrożenia.


3

AWS OpsWorks - jest to część usługi zarządzania AWS. Pomaga skonfigurować aplikację za pomocą skryptów. Używa Chefa jako platformy DevOps do zarządzania i działania tej aplikacji. Istnieją szablony, które można wykorzystać do konfiguracji serwera, bazy danych, pamięci. Szablony można również dostosować do innych zadań. Inżynierowie DevOps mają kontrolę nad zależnościami i infrastrukturą aplikacji.

AWS Beanstalk - zapewnia środowisko dla języków takich jak Java, Node Js, Python, Ruby Go. Łodyga Elastic Bean zapewnia zasób do uruchomienia aplikacji. Deweloperzy nie martwią się o infrastrukturę i nie mają kontroli nad infrastrukturą.

AWS CloudFormation - CloudFormation ma przykładowe szablony do zarządzania zasobami AWS w kolejności.


0

Jak wielu innych skomentowało, AWS Beanstalk, AWS OpsWorks i AWS Cloud Formation oferują różne rozwiązania dla różnych problemów.

Aby zrealizować

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.

Biorąc pod uwagę, że jesteś w trakcie migracji, gorąco zachęcam do zapoznania się z rozwiązaniem AWS Lambda i AWS DynamoDB (lub hybrydowym).

Oba są przeznaczone do automatycznego skalowania w prosty sposób i mogą być bardzo tanim rozwiązaniem.


-1

Po prostu użyj terraform i ECS lub EKS.

opsworks, elastyczna łodyga fasoli i stara technologia cloudformation teraz. -)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.