Я был поклонником Heroku с первых дней его существования. Но мне нравится тот факт, что AWS Elastic Beanstalk дает вам больше контроля над характеристиками экземпляров. В Heroku мне нравится то, что я могу развернуть приложение и не беспокоиться об управлении им. я предполагая Heroku обеспечивает своевременное применение всех обновлений безопасности ОС. Мне просто нужно убедиться, что мое приложение безопасно.
Мое первоначальное исследование Beanstalk показывает, что, хотя он создает и настраивает экземпляры для вас, после этого он переходит к более ручному процессу управления. Обновления безопасности не будут автоматически применяться к экземплярам. Похоже, есть две области для беспокойства:
Итак, мой вопрос: предоставляет ли Amazon способ предложить полностью управляемый PaaS, такой как Heroku? Или AWS Elastic Beanstalk действительно больше, чем просто сценарий установки, и после этого вы остаетесь сами по себе (кроме инструментов мониторинга и развертывания, которые они предоставляют)?
Во-первых, чтобы было ясно, никакой Elastic Beanstalk не является PaaS в том виде, в котором вы о нем думаете. Если разбить его на части, это больше похоже на виртуализированные шаблоны экземпляров и автоматизацию развертывания приложений, такую как puppet или chef. Наряду с этим вы получаете автоматический доступ к сервису балансировки нагрузки awe и облачному мониторингу, который позволяет запускать новые серверы приложений или отключать существующие на основе показателей.
Похоже на PaaS - это то, что основным коммерческим аргументом является система развертывания приложений, которая берет ваш код и копирует его на все серверы приложений в вашем кластере.
Одна из жалоб некоторых людей на PaaS заключается в том, что поставщик PaaS принимает решения о среде приложения за вас. Мне это кажется ценным предложением PaaS: как клиент вы можете сконцентрироваться на функциональности приложения, а все остальные детали оставить на усмотрение поставщика PaaS. Вы платите кому-то другому, кто будет управлять инфраструктурой и обеспечивать системное администрирование. За эту простоту вы платите им надбавку, как в случае с Heroku, которая также использует свою инфраструктуру поверх ec2, только прозрачным для вас способом.
Amazon действительно предлагает Elastic Beanstalk поверх Ec2 и их REST api, и не прилагает особых усилий, чтобы скрыть это от вас. Это потому, что они зарабатывают свои деньги через IaaS, а EB просто организует настройку группы ресурсов ec2, которую вы могли бы настроить самостоятельно, учитывая время и знания.
Теперь, с точки зрения специфики AMI, снова AMI - одна из многих частей ec2, которые используются для облегчения EB. В EB AMI нет ничего волшебного - это просто ami Amazon linux, предварительно настроенный для работы с EB. Как и любой другой AMI, вы можете запустить его в EC2, настроить его и получить новый настраиваемый AMI из запущенного экземпляра. Amazon Linux представляет собой нечто среднее между Centos и Fedora с патчами паравиртуализации и предварительно настроенными репозиториями yum, поддерживаемыми Amazon.
Как вы, наверное, знаете, Amazon linux уже настроен на установку исправлений безопасности во время загрузки. Однако запущенные экземпляры ничем не отличаются от любого другого сервера в отношении установки исправлений. Установка исправлений может прервать обслуживание. Если вас очень беспокоит установка исправлений безопасности, вы всегда можете использовать команду контейнера и настроить cron для запуска yum update --security с определенной периодичностью.
Вы также можете использовать EB API для изменения конфигурации EB или для автоматизации создания новой среды EB, после чего вы можете переключиться на нее, как только она будет готова, а затем выключить старую. Это описано здесь: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html
Как и в остальной части AWS, существует способ программного доступа и управления каждой функцией, отличной от SaaS, поэтому ничто не мешает вам создавать исправленные AMI, которые затем используются для создания новых сред EB и их развертывания. EB не навязывает вам специфические особенности конфигурации и не предоставляет вам группу системного администрирования для обслуживания инфраструктуры.
По состоянию на апрель 2016 г. Elastic Beanstalk поддерживает автоматические обновления платформы:
Все приложения и среды Beanstalk можно настроить с помощью файлов EBEXTENSIONS, которые упакованы вместе с пакетом развертывания приложения (например, WAR-файл для приложений Java) с конфигурацией на основе YAML для обновления или перенастройки любой части вашего приложения, контейнера, ОС и т. Д. Beanstalk PaaS, поскольку это платформа, которая позволяет развертывать приложения, не беспокоясь о базовом IaaS. В конце концов, все поставщики PaaS скрывают базовый IaaS с помощью некоторой автоматизации. Однако, поскольку мы говорим о компьютерных науках, не существует единого оптимального состояния для всех приложений, и без возможности настройки IaaS под PaaS вы зависите от поставщика услуг PaaS, чтобы убедиться, что ваши приложения работают без сбоев, быстро и надежно.
Heroku работает поверх AWS с использованием другого уровня управления, вот и все. Однако это становится головной болью, когда вам приходится делать такие вещи, как защита вашего приложения. Хотя они действительно прилагают все усилия для эффективного управления своим решением и обеспечения безопасности и т. Д., Они не могут и не будут брать на себя риск и последствия уязвимости в вашем приложении в конце дня. Они хотят сделать свои услуги максимально удобными.
Возможность настройки IaaS, лежащего в основе платформы, является сильной стороной и привлекательностью Beanstalk IMO.