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

87

Я хотел бы знать, каковы преимущества и недостатки использования AWS OpsWorks по сравнению с AWS Beanstalk и AWS CloudFormation?

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

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

В стековой системе будут размещаться некоторые приложения с высоким трафиком ruby ​​on rails, которые мы переносим с Heroku, а также некоторые приложения python / django и некоторые приложения PHP.

Заранее спасибо.

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

Ответы:

70

Я хотел бы знать, каковы преимущества и недостатки использования 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.

В стековой системе будут размещаться некоторые приложения с высоким трафиком ruby ​​on rails, которые мы переносим с Heroku, а также некоторые приложения python / django и некоторые приложения PHP.

Все это полностью поддерживается AWS. OpsWorks и Elastic Beanstalk оптимизированы для множества сред разработки (в списке есть Ruby, Python и PHP), а EC2 предоставляет необработанные серверы, на которых вы можете установить все, что захотите.

Райан Парман
источник
3
OpsWorks также обрабатывает развертывание git, хотя и по-другому. В тех случаях, когда развертывания Git ElasticBeanstalk отправляются из репозитория с помощью интерфейса командной строки, OpsWorks использует доступ только для чтения к репо с помощью SSH (или HTTPS, если публичное репо).
Jack Frost
@Ryan Как уже упоминалось, Beanstalk использует в фоновом режиме шаблоны типа формирования облака для создания необходимой инфраструктуры.
Mohd Belal
23

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

CloudFormation - это шаблон json (**), который определяет состояние ресурсов, которые вы хотите развернуть, т.е. вы хотите развернуть экземпляр AWS EC2 micro t2 в 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 - управляйте своими системами внутри этих сред, как мы с Chef или Puppet

AWS Beanstalk - создание, управление и развертывание.

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

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

Гладиатор
источник
3

AWS OpsWorks - это часть службы управления AWS. Помогает настроить приложение с помощью скриптов. Он использует Chef в качестве платформы DevOps для управления этим приложением и работы с ним. Есть шаблоны, которые можно использовать для настройки сервера, базы данных, хранилища. Шаблоны также можно настроить для выполнения любой другой задачи. DevOps Engineers контролируют зависимости и инфраструктуру приложений.

AWS Beanstalk - предоставляет среду для таких языков, как Java, Node Js, Python, Ruby Go. Elastic Bean stalk предоставляет ресурс для запуска приложения. Разработчикам не нужно беспокоиться об инфраструктуре, и у них нет контроля над инфраструктурой.

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

Просто используйте terraform и ECS или EKS.

opsworks, эластичный бобовый стебель и облачная формация - старые технологии. -)

Neill
источник