AWS OpsWorks проти AWS Beanstalk проти AWS CloudFormation?


86

Я хотів би знати, які переваги та недоліки використання AWS OpsWorks проти AWS Beanstalk та AWS CloudFormation?

Мене цікавить система, яка може бути автоматично масштабована для обробки будь-якої великої кількості одночасних веб-запитів (від 1000 запитів на хвилину до 10 мільйонів об / хв.), Включаючи рівень бази даних, який також може бути автоматично масштабованим.

Замість того, щоб мати окремий екземпляр для кожної програми, в ідеалі я хотів би ефективно розподіляти деякі апаратні ресурси. Раніше я використовував здебільшого екземпляр EC2 + RDS + Cloudfront + S3

Система стеків буде розміщувати деякі рубіни з високим трафіком на програми для рейок, які ми переносимо з Heroku, а також деякі програми python / django та деякі програми PHP.

Заздалегідь спасибі.


2
Це питання трохи не відповідає темі для Stackoverflow, але, мабуть, теж не підійде для ServerFault ... Я запропонував новий сайт для таких питань, дотримуйтесь, якщо ви згодні! area51.stackexchange.com/proposals/82757/…
Ден Циборовскі - MSFT

Відповіді:


69

Я хотів би знати, які переваги та недоліки використання AWS OpsWorks проти AWS Beanstalk та AWS CLoudFormation?

Відповідь така: це залежить.

AWS OpsWorks та AWS Beanstalk - це (мені сказали) просто різні способи управління своєю інфраструктурою, залежно від того, як ви про це думаєте. CloudFormation - це просто спосіб шаблонізації вашої інфраструктури.

Особисто я більш знайомий з Elastic Beanstalk, але кожному свій. Мені більше подобається, оскільки він може здійснювати розгортання через Git. Загальнодоступною інформацією є те, що Elastic Beanstalk використовує CloudFormation під капотом для запуску своїх середовищ.

Для своїх проектів я використовую обидва в тандемі. Я використовую CloudFormation для створення спеціально налаштованого середовища VPC, сегментів S3 та таблиць DynamoDB, які я використовую для свого додатка. Потім я запускаю середовище Elastic Beanstalk всередині користувацького VPC, яке вміє розмовляти з ресурсами S3 / DynamoDB.

Мене цікавить система, яка може бути автоматично масштабована для обробки будь-якої великої кількості одночасних веб-запитів (від 1000 запитів на хвилину до 10 мільйонів об / хв.), Включаючи рівень бази даних, який також може бути автоматично масштабованим.

Під капотом OpsWorks та Elastic Beanstalk використовують EC2 + CloudWatch + Auto Scaling, який здатний обробляти навантаження, про які ви говорите. RDS забезпечує підтримку масштабованих баз даних на базі SQL.

Замість того, щоб мати окремий екземпляр для кожної програми, в ідеалі я хотів би ефективно розподіляти деякі апаратні ресурси. Раніше я використовував здебільшого екземпляр EC2 + RDS + Cloudfront + S3

Залежно від того, що ви маєте на увазі під " деякими апаратними ресурсами", ви завжди можете запускати окремі екземпляри EC2 поряд із середовищами OpsWorks або Elastic Beanstalk. В даний час Elastic Beanstalk підтримує один веб-додаток на кожне середовище. Я не пам’ятаю, що підтримує OpsWorks.

Система стеків буде розміщувати деякі рубіни з високим трафіком на програми для рейок, які ми переносимо з Heroku, а також деякі програми python / django та деякі програми PHP.

Все це повністю підтримується AWS. OpsWorks та Elastic Beanstalk оптимізували себе для цілого ряду середовищ розробки (Ruby, Python та PHP є у списку), тоді як EC2 надає необроблені сервери, де можна встановити все, що завгодно.


3
OpsWorks також обробляє розгортання git, хоча і по-різному. Там, де розгортання ElasticBeanstalk git виштовхуються з репозиторію за допомогою CLI, OpsWorks використовує доступ лише для читання до репо за допомогою SSH (або HTTPS, якщо загальнодоступне репо).
Jack Frost

@Ryan Як вже згадувалося, Beanstalk використовує шаблони типу формування хмар у фоновому режимі для створення необхідної інфраструктури.
Мохд Белал,

22

OpsWorks - це інструмент оркестровки, такий як Chef - насправді, він походить від Chef - Puppet, Ansible або Saltstalk. Ви використовуєте Opsworks, щоб вказати стан, в якому ви хочете, щоб ваша мережа перебувала, вказавши стан, в якому ви хочете, щоб знаходився кожен ресурс - екземпляри сервера, програми, сховище. І ви вказуєте стан, в якому ви хочете, щоб кожен ресурс знаходився до вказавши значення, яке потрібно для кожного атрибута цього стану. Наприклад, ви можете хотіти, щоб служба Apache завжди працювала і запускалася під час завантаження з Apache як користувачем та Apache як групою Linux.

CloudFormation - це шаблон JSON (**), який визначає стан ресурсу (ресурсів), який ви хочете розгорнути, тобто ви хочете розгорнути екземпляр мікро-t2 AWS EC2 в us-east-1 як частину VPC 192.168.1.0/24 . У випадку з екземпляром EC2 ви можете вказати, що має запускатися на цьому ресурсі, за допомогою власного сценарію bash у розділі даних користувача ресурсу EC2. CloudFormation - це лише шаблон. Шаблон опрацьовується в якості запущеного ресурсу, лише якщо ви запускаєте його через Консоль управління AWS для CloudFormation або якщо ви запускаєте команду aws cli для Cloudformation, тобто aws cloudformation ...

ElasticBeanstalk - це PAAS - ви можете завантажити спеціально програми Ruby / Rails, node.js або Python / django або Python / Flask. Якщо у вас запущено щось інше, як Scala, Haskell або щось інше, створіть для нього образ Docker і завантажте цей образ Docker у Elastic Beanstalk (*).

Ви можете завантажити свій додаток у Elastic Beanstalk, запустивши aws cli для CloudFormation або створивши рецепт для Opsworks для завантаження вашого додатка в Elastic Beanstalk. Ви також можете запустити aws cli для Cloudformation через Opsworks.

(*) Насправді документація AWS щодо прикладу програми Ruby була настільки бідною, що я втратив терпіння і вбудував програму-приклад у образ Docker і завантажив зображення Docker в Elastic Beanstalk.

(**) Станом на вересень 2016 року Cloudformation також підтримує шаблони YAML.


8

В Opsworks ви можете розподіляти "ролі" шарів у стеці, щоб використовувати менше ресурсів, комбінуючи конкретні завдання, які може виконувати базовий екземпляр.

Список сумісності шарів (якщо групи безпеки встановлені належним чином):

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. 

посилання: http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html


8

AWS Beanstalk: це розгортання та управління додатками в хмарі AWS, не турбуючись про інфраструктуру, яка запускає ваші веб-додатки з Elastic Beanstalk. Не потрібно турбуватися про EC2 або про інші установки.

AWS OpsWorks AWS OpsWorks - це не що інше, як служба управління програмами, яка полегшує новим користувачам DevOps моделювання та керування всією своєю програмою


1
Я вважаю, що ця відповідь є неточною. Справа в тому, що навпаки. Хоча Elastic Beanstalk - це просто PaaS, в OpsWorks ви несете відповідальність за створення стека за допомогою відповідних компонентів. "Для нового DevOps" визначення стосуватиметься користувачів EB, а не OpsWorks ".
scaryguy

3

AWS CloudFormation - Створюйте та оновлюйте своє середовище.

AWS Opsworks - керуйте своїми системами в таких середовищах, як ми робимо з Шеф-кухарем або Лялькою

AWS Beanstalk - Створення, управління та розгортання.

Але мені особисто подобається CloudFormation та OpsWorks, використовуючи всю свою потужність для того, для чого вони призначені.

Використовуйте CloudFormation для створення свого середовища, тоді ви можете викликати Opsworks зі сценаріїв формування хмари, щоб запустити свою машину. Тоді у вас буде стек Opsworks для управління ним. Наприклад, додайте користувача в Linux box за допомогою Opsworks або виконайте виправлення ваших коробок за рецептами шеф-кухаря. Ви також можете записати рецепти шеф-кухаря для розгортання. В іншому випадку ви можете використовувати CodeDeploy спеціально для розгортання.


3

AWS OpsWorks - це частина служби управління AWS. Це допомагає налаштувати програму за допомогою сценаріїв. Він використовує Chef як основу devops для управління цим додатком та роботи. Є шаблони, які можна використовувати для конфігурації сервера, бази даних, сховища. Шаблони також можна налаштувати для виконання будь-якого іншого завдання. Інженери DevOps контролюють залежності програми та інфраструктуру.

AWS Beanstalk - Він забезпечує середовище для такої мови, як Java, Node Js, Python, Ruby Go. Стійка Elastic Bean забезпечує ресурс для запуску програми. Розробники не турбуються про інфраструктуру, і вони не мають контролю над інфраструктурою.

AWS CloudFormation - CloudFormation має зразки шаблонів для управління ресурсами AWS по порядку.


0

Як багато інших коментували AWS Beanstalk, AWS OpsWorks та AWS Cloud Formation пропонують різні рішення для різних проблем.

Для того, щоб досягти

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.

І беручи до уваги, що ви перебуваєте в процесі міграції, я настійно рекомендую вам почати розглядати рішення AWS Lambda & AWS DynamoDB (або гібридне).

Обидва два призначені для автоматичного масштабування простим способом і можуть бути дуже дешевим рішенням.


-1

Просто використовуйте тераформ та ECS або EKS.

opsworks, еластична квасоля і хмароутворення стара техніка зараз. -)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.