Чим відрізняється Elastic Beanstalk від CloudFormation для .NET проекту?


121

Я розробив .NET MVC-додаток і почав грати з AWS та розгортати його через Visual Studio Toolkit. Я успішно розгорнув додаток за допомогою параметра Elastic Beanstalk у наборі інструментів.

Під час перегляду підручників для розгортання .NET-програм у AWS за допомогою інструментарію я помітив, що є підручники для розгортання як з Elastic Beanstalk, так і з CloudFormation . Яка різниця між цими двома?

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

Чи варто використовувати одне чи інше? Обидва?


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

Відповіді:


212

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

Elastic Beanstalk - шар, схожий на PaaS, на вершині служб IaaS AWS, який абстрагує основні екземпляри EC2, еластичні балансири навантаження, групи автоматичного масштабування тощо. Це значно спрощує розробників, які не хочуть мати справу з усіма системи наповнюються, щоб швидко застосувати їх додаток на AWS. Це дуже схоже з іншими продуктами PaaS, такими як Heroku, EngineYard, Google App Engine тощо. Завдяки Elastic Beanstalk вам не потрібно розуміти, як працює будь-яка з основних чарів.

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


Дякую! Здається, я зараз дотримуюся EBS.
kspearrin

37
@xxkylexx FYI: "EBS" посилається на послугу AWS під назвою "Elastic Block Store". Я думаю, ти маєш на увазі сказати "Еластичний бінсталк" замість "EBS".
екілаби

2
Я думаю, що вони використовували та автоматизований шаблон формування хмари для створення середовища Elastic Beanstalk для створеного вами програми - .Net чи будь-чого іншого ... FWIW
кодовий комп'ютер

51

Для швидкого розгортання стандартного веб-додатка .NET, Elastic Beanstalk - це правильна послуга для вас.

Графіка порівняння служб додатків

AWS CloudFormation : "Надання шаблонів"

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

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

Коли ви створюєте стек CloudFormation, CloudFormation викликає відповідні API для створення пов’язаних ресурсів, а коли ви видаляєте стек, CloudFormation викликає відповідні API, щоб видалити їх. Більшість (але не всі) AWS API підтримуються.

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.


14

Cloud Formation - це послуга, яка дозволяє розгортати сервіси AWS. Ви створюєте файл шаблону, який описує, які послуги ви хочете. Розгортаючи цей шаблон, Cloud Formation створює ресурси для вас як "пакет". Усі ресурси, визначені у вашому шаблоні, запускаються та припиняються разом. Прикладами типів ресурсів, які можна створити за допомогою Cloud Formation, є: екземпляри S3, EC2, автоматичне масштабування, DynamoDb тощо. Для EC2 Cloud Formation також дає можливість використовувати сценарії "cfn-init"; який можна використовувати разом із шаблоном для завантаження ременів ваших примірників.

Elastic Beanstalk використовує шаблони та прийоми хмарного формування для: 1. Створити групу балансира та групу автоматичного масштабування, 2. Скопіюйте свій код у S3, 3. Завантажте екземпляр Ec2, щоб завантажити код з S3 та розгорнути його.

Формування хмари не так просто у використанні, як EB, але він набагато потужніший, тому що ви можете створювати ресурси, крім екземплярів EC2, керувати тим, як сценарій cfn-init тощо.


10

Є й інші відмінності, які варто зазначити. Еластична квасоля розроблена як контейнер для однієї програми. Я маю набір з декількох веб-сайтів та служб, але мені було дуже важко розгорнути кілька веб-сайтів за допомогою beanstalk, і AWS після кількох спроб порадив допомогти використовувати хмарне формування в цій ситуації, оскільки це має додаткову гнучкість. Тут дійсно корисна стаття про завантаження AWS-хмарного формування та оновлення запущеного сайту тут набагато зрозуміліше, ніж сторінки AWS. Ще намагаюся розібратися, чи зможемо ми розгорнути з VS прямо до шаблону формування хмари, що зберігається на S3, і дозволити його до автоматичного оновлення, як beanstalk ...


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.

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