В чем разница между Elastic Beanstalk и CloudFormation для проекта .NET?

121

Я разработал приложение .NET MVC и начал экспериментировать с AWS и развертывать его с помощью Visual Studio Toolkit. Я успешно развернул приложение, используя параметр Elastic Beanstalk в наборе инструментов.

Просматривая руководства по развертыванию приложений .NET на AWS с помощью набора инструментов, я заметил, что есть учебные пособия по развертыванию как с помощью Elastic Beanstalk, так и CloudFormation . В чем разница между этими двумя?

Насколько я могу судить, похоже, что они оба, по сути, делают одно и то же - упрощают развертывание вашего приложения в облаке AWS (настройка экземпляров EC2, балансировщик нагрузки, автоматическое масштабирование и т. Д.). Я пробовал прочитать их обоих, но, похоже, не нашел ничего, кроме набора модных слов, которые для меня звучат одинаково. Я даже нашел FAQ на сайте AWS, который должен ответить на этот точный вопрос, но я не совсем понимаю.

Стоит мне использовать одно или другое? Обе?

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

Ответы:

212

На самом деле они довольно разные. Elastic Beanstalk призван облегчить жизнь разработчикам. CloudFormation призван облегчить жизнь системным инженерам.

Elastic Beanstalk - это уровень, подобный PaaS, поверх сервисов AWS IaaS, который абстрагируется от базовых экземпляров EC2, эластичных балансировщиков нагрузки, групп автоматического масштабирования и т. Д. Это значительно упрощает работу разработчиков, которые не хотят иметь дело со всеми системный персонал, чтобы их приложение было быстро развернуто на AWS. Он очень похож на другие продукты PaaS, такие как Heroku, EngineYard, Google App Engine и т. Д. С Elastic Beanstalk вам не нужно понимать, как работает какая-либо основная магия.

CloudFormation, с другой стороны, ничего не делает автоматически. Это просто способ определить все ресурсы, необходимые для развертывания, в огромном файле JSON. Таким образом, шаблон CloudFormation может фактически создать две среды ElasticBeanstalk (производственную и промежуточную), пару кластеров ElasticCache, таблицу DyanmoDB, а затем соответствующий DNS в Route53. Затем я загружаю этот шаблон в AWS, ухожу, и через 45 минут все готово и ждет. Поскольку это просто текстовый файл JSON, я могу вставить его в свой исходный элемент управления, что обеспечивает отличный способ версии моих развертываний приложений. Это также гарантирует, что у меня есть повторяемая, «заведомо хорошая» конфигурация, которую я могу быстро развернуть в другом регионе.

jamieb
источник
Спасибо! Похоже, я пока буду придерживаться EBS.
kspearrin
37
@xxkylexx К сведению: «EBS» относится к сервису AWS под названием «Elastic Block Store». Я думаю, вы хотите сказать «Эластичный бобовый стебель» вместо «EBS».
ekillaby
2
Я думаю, они использовали и автоматизировали шаблон Cloud Formation для создания среды Elastic Beanstalk для приложения, которое вы создали - .Net или что-то еще ... FWIW
codeputer
51

Elastic Beanstalk - это то, что вам нужно, чтобы быстро приступить к развертыванию стандартного веб-приложения .NET .

График сравнения служб приложений

AWS CloudFormation : « Подготовка на основе шаблонов»

AWS CloudFormation дает разработчикам и системным администраторам простой способ создавать и управлять коллекцией связанных ресурсов AWS, выделяя и обновляя их упорядоченным и предсказуемым образом.

CloudFormation (CFn) - это облегченная низкоуровневая абстракция над существующими API AWS. Используя статический шаблон документа JSON / YAML , вы объявляете набор ресурсов (например, экземпляр EC2 или корзину S3 ), которые соответствуют операциям CRUD в API AWS.

Когда вы создаете стек CloudFormation, CloudFormation вызывает соответствующие API для создания связанных ресурсов, а когда вы удаляете стек, CloudFormation вызывает соответствующие API для их удаления. Поддерживается большинство (но не все) API AWS .

AWS Elastic Beanstalk : «Простые веб-приложения»

AWS Elastic Beanstalk - это простой в использовании сервис для развертывания и масштабирования веб-приложений и сервисов, разработанных с помощью Java , .NET , PHP , Node.js , Python , Ruby , Go и Docker на знакомых серверах, таких как Apache, Nginx, Passenger. , и IIS.

Вы можете просто загрузить свой код, и Elastic Beanstalk автоматически выполнит развертывание, от выделения ресурсов, балансировки нагрузки, автоматического масштабирования до мониторинга работоспособности приложений.

Elastic Beanstalk (EB) - это управляемая «платформа как услуга» (PaaS) более высокого уровня для размещения веб-приложений, аналогичная Heroku по объему . Вместо того, чтобы напрямую работать с низкоуровневыми ресурсами AWS, EB предоставляет полностью управляемую платформу, на которой вы создаете среду приложения с помощью веб-интерфейса , выбираете, какую платформу использует ваше приложение, создаете и загружаете исходный пакет , а EB выполняет все остальное.

Используя EB, вы получаете всевозможные встроенные функции для мониторинга среды вашего приложения и развертывания новых версий вашего приложения .

Под капотом EB использует CloudFormation для создания и управления различными ресурсами AWS приложения. Вы можете настроить и расширить среду EB по умолчанию, добавив ресурсы CloudFormation в файл конфигурации EB, развернутый с вашим приложением.

Вывод

Если ваше приложение является стандартным приложением веб-уровня, использующим одну из поддерживаемых платформ Elastic Beanstalk, и вам нужен простой в управлении и высокомасштабируемый хостинг для вашего приложения, используйте Elastic Beanstalk .

Если ты:

  • Хотите напрямую управлять всеми ресурсами AWS вашего приложения;
  • Хотите управлять или сильно настраивать процесс подготовки или развертывания экземпляра;
  • Необходимо использовать платформу приложений, не поддерживаемую Elastic Beanstalk; или
  • Просто не хочу / не нуждаюсь ни в каких высокоуровневых функциях Elastic Beanstalk

затем используйте CloudFormation напрямую и избегайте добавленного уровня конфигурации Elastic Beanstalk.

wjordan
источник
14

Cloud Formation - это сервис, который позволяет развертывать сервисы AWS. Вы создаете файл шаблона, который описывает, какие услуги вам нужны. Когда вы развертываете этот шаблон, Cloud Formation создает для вас ресурсы в виде «пакета». Все ресурсы, которые вы определили в своем шаблоне, запускаются и завершаются вместе. Примеры типов ресурсов, которые могут быть созданы с помощью Cloud Formation: S3, экземпляры EC2, AutoScaling, DynamoDb и т. Д. Для EC2 Cloud Formation также дает вам возможность использовать сценарии «cfn-init»; который можно использовать вместе с шаблоном для загрузки ваших экземпляров.

Elastic Beanstalk использует шаблоны и сценарии Cloud Formation для: 1. Создание балансировщика нагрузки и группы автоматического масштабирования, 2. Скопируйте код на S3, 3. Загрузите экземпляр Ec2, чтобы загрузить код с S3 и развернуть его.

Cloud Formation не так прост в использовании, как EB, но он намного мощнее, потому что вы можете создавать ресурсы, отличные от экземпляров EC2, управлять сценарием cfn-init и т. Д.

Эдвин
источник
10

Стоит отметить и другие отличия. Elastic beanstalk разработан как контейнер для одного приложения. У меня есть набор из нескольких веб-сайтов и сервисов, но мне было очень трудно развернуть несколько веб-сайтов с помощью beanstalk, и после нескольких попыток AWS посоветовал использовать формирование облака в этой ситуации, поскольку оно обладает дополнительной гибкостью. Theres действительно полезные статьи на самонастройки образования AWS облака и обновление запущенного сайта здесь тот гораздо яснее , чем на страницах AWS. Все еще пытаюсь понять, сможем ли мы развернуть VS прямо в шаблон формирования облака, хранящийся на S3, и заставить его автоматически обновляться, как beanstalk ...

Matt
источник
3

Эти услуги призваны дополнять друг друга. AWS Elastic Beanstalk предоставляет среду для простого развертывания и запуска приложений в облаке. Он интегрирован с инструментами разработчика и предоставляет вам универсальный интерфейс для управления жизненным циклом ваших приложений. AWS CloudFormation - это удобный механизм выделения ресурсов для широкого спектра ресурсов AWS и сторонних производителей. Он поддерживает потребности инфраструктуры многих различных типов приложений, таких как существующие корпоративные приложения, унаследованные приложения, приложения, созданные с использованием различных ресурсов AWS, и решения на основе контейнеров (в том числе созданные с использованием AWS Elastic Beanstalk).

AWS CloudFormation поддерживает среды приложений Elastic Beanstalk как один из типов ресурсов AWS. Это позволяет, например, создавать и управлять приложением, размещенным на AWS Elastic Beanstalk, вместе с базой данных RDS для хранения данных приложения. Помимо экземпляров RDS, в группу можно добавить любой другой поддерживаемый ресурс AWS.

Мохит Шарма
источник
1

Elastic Beanstalk автоматически обрабатывает развертывание, от выделения ресурсов, балансировки нагрузки, автоматического масштабирования до мониторинга работоспособности приложений на основе кода, который вы загружаете в него, тогда как CloudFormation - это автоматизированный механизм подготовки, предназначенный для развертывания целых облачных сред с помощью сценария JSON.

Махеш Баблу
источник