Возможности AWS CodeDeploy

Почему именно CodeDeploy?

AWS CodeDeploy – это сервис автоматизации развертывания приложений в различных вычислительных сервисах, включая Amazon Elastic Compute Cloud (Amazon EC2), AWS Fargate, AWS Lambda и локальные инстансы. CodeDeploy полностью автоматизирует развертывание приложений, устраняя необходимость в ручных операциях. CodeDeploy использует последовательные обновления и контроль работоспособности развертываемых приложений, что предотвращает простои во время развертывания. CodeDeploy предоставляет централизованный контроль развертывания через Консоль управления AWS, Интерфейс командной строки AWS (AWS CLI), SDK или API, что позволяет запускать, контролировать и отслеживать выполняемые развертывания. Ход развертывания можно контролировать вплоть до отдельных событий. CodeDeploy записывает и сохраняет журнал всех развертываний, поэтому всегда можно изучить хронологию и историю изменений при прошлых развертываниях.

CodeDeploy не зависит от платформы и языка программирования и работает с любыми приложениями, поэтому можно использовать существующий установочный код. Используя API сервиса CodeDeploy, можно легко интегрировать развертывание приложения с существующим процессом доставки ПО или набором инструментов для непрерывного развертывания.

Автоматизированное развертывание

С помощью CodeDeploy можно легко повторять развертывание приложения в различных группах инстансов. CodeDeploy применяет модель установки на основе файлов и команд, что позволяет развертывать любые приложения, многократно используя существующий установочный код. Один и тот же установочный код может использоваться для обеспечения единообразия в ходе развертывания, тестирования и выпуска в рабочую среду обновлений для инстансов Amazon EC2. Устранение ручных операций при развертывании увеличивает скорость и надежность процесса доставки ПО.

CodeDeploy позволяет интегрировать развертывание ПО и процессы масштабирования. Это поможет поддерживать приложение в актуальном состоянии в динамических рабочих средах. Для инстансов Amazon EC2 сервис CodeDeploy интегрирован с решением автомасштабирования Auto Scaling. Auto Scaling позволяет масштабировать производительность Amazon EC2 в соответствии с заданными условиями (например, всплесками трафика). Если в группе «Автомасштабирование» запускается новый инстанс, CodeDeploy получает оповещение и автоматически развертывает приложение на новом инстансе перед его добавлением в балансировщик нагрузки сервиса Эластичная балансировка нагрузки (ELB).

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

Сокращение простоев

CodeDeploy позволяет обновлять приложения до новых версий без возникновения времени простоя. AWS CodeDeploy может выполнять развертывания без перерыва в обслуживании на инстансы Amazon EC2, функцию Lambda, службу Amazon Elastic Container Service (Amazon ECS), при чем как на Amazon EC2, так и на Fargate. При сине‑зеленом развертывании новая версия приложения запускается параллельно с предыдущей. Когда новая версия успешно пройдет тестирование и будет признана готовой к использованию, CodeDeploy перенаправит трафик от предыдущей версии приложения к новой в соответствии с заданными настройками.

CodeDeploy также может осуществлять последовательные обновления в группе инстансов Amazon EC2, при этом в любой момент лишь часть инстансов находится в отключенном состоянии. CodeDeploy последовательно переходит от инстанса к инстансу, при этом приложения остаются доступными и продолжают обслуживать трафик. Для функций Lambda входящий трафик постепенно перенаправляется от старой версии к новой.

Чтобы приложения обладали высокой степенью доступности во время развертывания, используется контроль работоспособности развертываемых приложений в сочетании с последовательными обновлениями. Незапланированные простои могут произойти при развертывании неработоспособных обновлений. CodeDeploy контролирует процесс развертывания и останавливает его в случае большого количества ошибок при обновлении.

Вы можете в любое время остановить процесс развертывания приложения с помощью консоли, интерфейса командной строки AWS или любого SDK AWS. Если остановленное развертывание требуется продолжить позднее, можно просто повторить развертывание этой версии. Кроме того, у вас есть возможность немедленно осуществить откат, выполнив развертывание предыдущей версии.

Централизованный контроль

Запускать, контролировать и отслеживать развертывание ПО можно непосредственно в консоли или с помощью интерфейса командной строки AWS, SDK или API. В случае ошибки можно без труда определить, какой конкретно скрипт ее вызвал. У вас есть возможность настроить push‑уведомления и контролировать состояние развертываний с помощью SMS‑сообщений или электронных писем с использованием Amazon Simple Notification Service (Amazon SNS).

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

CodeDeploy записывает и сохраняет журнал последних развертываний. Это позволяет посмотреть, какие версии приложения развернуты в каждой из целевых групп развертывания. Можно проконтролировать историю изменений и процент успешных развертываний, проведенных в конкретных группах развертывания. Вы также можете исследовать хронологию последних развертываний, чтобы получить подробную информацию об успешных развертываниях и ошибках.

Простота настройки

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

Использование API сервиса CodeDeploy обеспечивает простую интеграцию развертываний приложений с существующей цепочкой инструментов для доставки ПО. AWS CodePipeline и ряд партнеров AWS поддерживают встроенную интеграцию CodeDeploy с сервисами непрерывной интеграции и непрерывной доставки (CI/CD), что упрощает автоматическое развертывание обновленных приложений.

Получение оповещений

Можно создавать оповещения о событиях, затрагивающих ваши развертывания. Уведомления будут приходить в виде оповещений Amazon SNS. Каждое оповещение включает в себя сообщение о состоянии и ссылку на ресурсы, где возникло событие, ставшее причиной оповещения.