Развертывание вручную по сравнению с Amazon Elastic Beanstalk - PullRequest
109 голосов
/ 01 февраля 2012

Какие преимущества мы получаем, используя Elastic Beanstalk по сравнению с созданием вручную экземпляра EC2, настройкой сервера tomcat, развертыванием и т. Д. Для типичного Java-веб-приложения.Являются ли балансировка нагрузки, мониторинг и автоматическое масштабирование единственными преимуществами?

Предположим, что для моего веб-приложения, использующего базу данных, я установил базу данных в самом экземпляре EC2.Когда происходит автоматическое масштабирование, будет ли база данных создаваться во вновь созданном экземпляре, или она будет обращаться к базе данных, созданной мной в главном экземпляре ... Если при автоматическом масштабировании создается просто реплика, как будет происходить синхронизация данных между экземплярами?

Ответы [ 3 ]

140 голосов
/ 03 марта 2012

Все, что вы упомянули, такие как балансировка нагрузки, мониторинг и автоматическое масштабирование, безусловно, являются преимуществами.

Однако вы должны подумать об этом следующим образом: в истинной Платформе как услуге (PAAS) цель состоит в том, чтобы отделить приложение от платформы. Как разработчик, вы беспокоитесь только о своем приложении. Платформа "арендована" для вас. «Экземпляры» платформы автоматически обновляются, администрируются, масштабируются, уравновешиваются и т. Д. Вы просто загружаете свой файл WAR, и он просто работает (по крайней мере, теоретически).

EC2 сам по себе не является PAAS. Это больше похоже на IAAS ( Инфраструктура как услуга ). Вы по-прежнему должны заботиться об экземплярах сервера, устанавливать на них программное обеспечение, обновлять их и т. Д.

Elastic Beanstalk - это система PAAS. Как и 1011 * App Engine и Azure среди многих других.

В настоящей системе PAAS СУБД является отдельным компонентом от серверов веб-приложений. Причина очевидна: СУБД не может быть установлена ​​на экземплярах, которые используются для сервера приложений, потому что, поскольку экземпляры создаются и уничтожаются на основе вашего трафика, СУБД будет потеряна! Наличие СУБД и сервера приложений на одном компьютере / экземпляре, как правило, не очень хорошая идея.

В системе PAAS СУБД является отдельной службой. Для Amazon это будет Amazon RDS . Как и в Elastic Beanstalk, где вам не нужно беспокоиться о сервере приложений и вы просто загружаете свой WAR-файл, в RDS вам не нужно беспокоиться о СУБД, и вы просто развертываете свою базу данных.

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

Наконец, использование Elastic Beanstalk не стоит ничего больше, чем развернутые ресурсы (экземпляры EC2 и балансировщик нагрузки). Однако RDS недешево и определенно будет дороже, чем использование одного экземпляра EC2 для сервера приложений и СУБД.

36 голосов
/ 07 октября 2012

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

1) Управляет версиями приложений, храня и управляя различными версиями вашего приложения, что позволяет вам легко переключаться между различными версиями ваших приложений.

2) Имеет понятие «среды» для каждого приложения, что позволяет развертывать различные версии приложения в каждой среде. Это удобно, например, если вы хотите настроить отдельные среды QA и DEV, и вы хотите легко развернуть сборку сначала в DEV, а затем развернуть ту же версию приложения в QA, когда ваша команда QA готова к следующей сборке.

3) Выводит важные свойства конфигурации контейнера (например, параметры памяти Tomcat) на консоль и API Elastic Beanstalk. Благодаря этому вы можете легко сохранять настройки и копировать их между средами.

4) Просматривайте файлы журнала приложения через консоль и автоматически катите и архивируйте файлы журнала на S3. (Правда, в настоящее время эта функция немного слабая.)

5 голосов
/ 07 августа 2018

У меня было приложение, развернутое как в EC2 (Nginx и Gunicorn), так и в Beanstalk Environment (CentOS & Apache2).

Мои наблюдения:

  • BeanStalk - это Паас. Создание экземпляра EC2 вручную (IAAS) - это все равно что делать все с нуля, но у вас есть надежный контроль.

  • BeanStalk поставляется по умолчанию с CentOS и Apache (Httpd). Вы можете выбрать ОС в выделенном экземпляре.

  • Эти вещи, которые имели для меня значение,

    • В среде Beanstalk было много ошибок 504.
    • Было трудно отлаживать, когда сервер BeanStalk аварийно завершал работу, поскольку журналы также не отображались и не могли подключиться к компьютеру по ssh. Это очень важно.
    • Установка / настройка таких инструментов, как Celery, Redis (необходимо запустить другой порт) и т. Д. в выделенном случае это намного проще.
  • В моем случае мне пришлось масштабировать (Beanstalk) сервер, чтобы запустить установку некоторых пакетов (например, pandoc). Эти вещи проще в Ubuntu.

  • В BeanStalk масштабирование намного проще. Клонирование серверов просто в BeanStalk.

  • Я взял микро в обоих случаях (выделенный & Beanstalk). Я чувствовал, что выделенный микро экземпляр стал лучше.

  • Автоматическое развертывание в Beanstalk. Мне пришлось написать сценарии, чтобы автоматизировать то же самое, и это нормально, поскольку это только один раз.

...