Контейнеризация значительно упрощает процесс разработки программного обеспечения, и самое большое преимущество использования контейнеров заключается в их мобильности. Но запуск контейнера в облаке может приводить к некоторым сложностям. Конечно, можно развернуть контейнеры на серверах облачного провайдера по модели IaaS (инфраструктура как услуга), однако вам придется поддерживать эти серверы. Чтобы избежать этой проблемы, облачные провайдеры придумали модель CaaS (контейнеры как услуга).
Контейнеры как услуга, или CaaS — это современная модель, которая позволяет разработчикам запускать свои контейнеры в облаке напрямую, то есть без необходимости развертывать инфраструктуру, в том числе инструменты оркестрации (Docker Swarm, Kubernetes, OpenStack и т. д.), а также программное обеспечение для управления кластером. Главные преимущества использования CaaS заключаются в следующем:
При выборе подходящего решения CaaS нужно учитывать некоторые важные факторы. Это, например, возможность работать с многоконтейнерными приложениями, поддерживаемые функции хранения и форматы файлов, используемые технологии обеспечения сохранности данных. Разумеется, у каждого решения есть и другие возможности и ограничения, которые мы сейчас подробно и разберем.
cloud
Amazon ECS — это масштабируемая платформа оркестрации контейнеров от AWS, предназначенная для запуска и управления контейнерами в кластерной среде. Вы можете выбирать контейнеры для работы и то, сколько контейнеров запускать, а также способы их связи и ресурсы, использующие ваши контейнеры. Существует два способа использования ECS: через инстансы EC2 и с помощью Fargate.
Это бессерверный сервис от AWS, с помощью которого вы передаете код на различных языках (Java, Go, C#, Python, Powershell, Node.js, Ruby), и Amazon запускает его в соответствующем интерфейсе Lambda. Лямбда-функции в основном вызываются при подключении их к AWS API Gateway, который предоставляет функции как вызовы REST API. Изначально AWS Lambda не поддерживала приложения контейнеризации, однако в декабре 2020 года на этом сервисе от Amazon можно создать образ Docker и запускать контейнеры размером до 10 ГБ.
Использование Lambda для запуска контейнера Docker в облаке даст вам прежде всего хорошую масштабируемость: Lambda может создавать вплоть до 500 новых экземпляров каждую минуту в автоматическом режиме. Однако, поскольку Lambda — это собственная бессерверная технология AWS, вам, возможно, придется столкнуться с проблемами при переходе к другому поставщику облачных услуг. Из других ограничений отметим, что функции Lambda могут выполняться не более 15 минут, а значит можно забыть про долго выполняющиеся задачи.
Запущенный в мае 2021 года, AWS App Runner позволяет перенести веб-приложение в облако, не беспокоясь о масштабировании или связанной с приложением инфраструктуре. По сути, он просто запускает ECS с Fargate для выполнения вашего контейнера, но вам не нужно настраивать что-либо, связанное с Fargate, чтобы начать работу. AWS App Runner может работать в режиме сборки, извлекая код из вашего репозитория GitHub и собирая приложение при любых коммитах, которые вы можете отправить в основную ветку. Также он может работать в режиме контейнера, где вы подключаете свой реестр контейнеров (правда, на данный момент поддерживается только AWS ECR) и указываете свой образ.
Основное преимущество AWS App Runner для тех, кто хочет создать контейнер Docker в облаке, заключается в том, что его легко настроить и он предоставляет простой способ запустить веб-приложение в облаке. Из недостатков же отметим, что режим сборки поддерживает только среды выполнения Python и Node.js. Также режим сборки не имеет интеграции с AWS CodeCommit или другими системами управления версиями, а это означает, что вам придется использовать только GitHub. И наконец, приложение не может обмениваться данными с частными VPC.
Это решение от Microsoft предлагает:
Также добавим, что, поскольку контейнер находится в вашей виртуальной сети, он может взаимодействовать с другими ресурсами в ней. А единственный недостаток ACI в том, что вызов контейнеров Docker поддерживается здесь только из реестра.
CaaS-решение от Google построено на платформе Knative на базе Kubernetes. Как и в случае с AWS App Runner, вы можете указать реестр контейнеров или репозиторий, содержащий код вашего приложения. К преимуществам Google Cloud Run отнесем поддержку Google Secret Manager, а также то, что поддерживается код на многих языках программирования, в том числе Go, Python, Java, Node.js, Ruby. А из недостатков отметим разве что ограниченное количество регионов по сравнению, например, с сервисами Azure и AWS.
Выгодные тарифы на облако в Timeweb Cloud
Хотя в решениях от Amazon, Microsoft и Google есть некоторые различия, они преследуют общую цель, стремясь упростить разработчикам запуск контейнеров Docker в облачной среде оркестрации и сохраняя при этом гибкость, необходимую для поддержки широкого спектра задач. При этом у каждого решения есть свои ограничения, которые нужно учитывать при выборе под свои задачи.