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

avatar
kspearrin
20 января 2013 в 06:05
75035
6
145

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

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

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

Что делать? Оба?

Источник
phil
22 декабря 2020 в 22:20
0

@ DanCiborowski-MSFT Нет, это хороший вопрос, и нам не нужен еще один сайт.

Ответы (6)

avatar
jamieb
20 января 2013 в 21:53
267

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

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

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

kspearrin
21 января 2013 в 04:44
1

Спасибо! Похоже, я пока буду придерживаться EBS.

awhie29urh2
15 мая 2013 в 22:45
48

@xxkylexx К сведению: «EBS» относится к сервису AWS под названием «Elastic Block Store». Я думаю, вы хотите сказать «Эластичный бобовый стебель» вместо «EBS».

codeputer
23 апреля 2018 в 16:57
2

Думаю, они использовали автоматизированный шаблон Cloud Formation для создания среды Elastic Beanstalk для приложения, которое вы создали - .Net или что-то еще ... FWIW

avatar
Mohit Sharma
22 февраля 2020 в 15:01
3

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

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

avatar
Mahesh Bablu
15 января 2018 в 06:15
1

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

avatar
wjordan
4 января 2017 в 17:45
75

Для быстрого начала развертывания стандартного веб-приложения .NET вам подойдет Elastic Beanstalk .

App Services Comparison Graphic

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

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

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

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

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

AWS Elastic Beanstalk - это простой в использовании сервис для развертывания и масштабирования веб-приложений и сервисов, разработанных с помощью Java, .NET, <970> <32815>, PHP > Node.js, Python, Ruby, Go, и <3216934> знакомые серверы на базе Docker 70425169 и , и <425169> на серверах Docker Пассажир и IIS.

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

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

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

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

Заключение

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

Если вы:

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

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

avatar
Matt
23 декабря 2013 в 09:23
11

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

avatar
Edwin
20 января 2013 в 22:02
18

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 и т. Д.