Музыкальный термин «оркестрация» не спроста принят в ИТ-среде. Что такое оркестр? Множество музыкантов, играющих свои партии под управлением дирижера.
А теперь представьте себе компанию, в которой разработка цифровых продуктов играет одну из ключевых ролей в жизни бизнеса. При этом не имеет значения, кто является потребителем результата разработки — сотрудники этой компании или же ее клиенты.
Чтобы сократить time-to-market цифровых продуктов, снизить расходы и постоянно повышать конкурентоспособность, необходимо внедрять современные методики и решения для организации процесса разработки — контейнеры, микросервисный подход, DevOps-практики.
В этой статье мы поговорим о том, что такое оркестраторы, кому могут пригодиться эти системы, а кому, наоборот, стоит отказаться от них в пользу ручных инструментов.
Зачем оркестраторы контейнеров
Наверняка по нашей аналогии с миром музыки вы уже догадались, что задача оркестратора — организовать управление микросервисными приложениями. Каждый отдельный микросервис имеет собственные модель и набор данных. С точки зрения разработки и деплоймента микросервисы обладают автономностью и поэтому в большинстве случаев помещаются в собственные контейнеры.
Таким образом, чем крупнее микросервисное приложение, тем больше в нем контейнеров. И в ряде случаев управлять ими в ручном режиме — занятие трудное и непродуктивное.
На помощь разработчикам и администраторам приходят системы оркестрации: они способны автоматизировать управление жизненным циклом таких приложений. Кроме того, при помощи оркестраторов возможно автоматизировать и кратно упростить множество рутинных процессов.
Задачи оркестраторов
Приведем ниже список задач, которые ставятся перед оркестраторами:
- Подготовка и развертывание инфраструктуры
- Планирование и конфигурация
- Распределение ресурсов
- Масштабирование контейнеров сообразно рабочим нагрузкам
- Балансировка нагрузки
- Маршрутизация
- Отслеживание состояния контейнеров
- Обеспечение безопасности
Включает в себя инсталляцию приложений (и их зависимостей) на заранее подготовленный (снабженный нужными службами, библиотеками и т.п.) сервер.
Здесь имеется в виду настройка процессов, происходящих на сервере, при помощи планировщиков. Подход справедлив как для монолитов, так и для микросервисов. Удобство заключается в том, что системы оркестрации заранее включают в себя необходимый набор программ-планировщиков, поэтому надобность в их ручной инсталляции отпадает.
Деплой сервиса или приложения предусматривает выделение серверных ресурсов, таких как RAM и процессорное время. Оркестратор позволяет установить пороговые и нормальные параметры работы и поддерживать приложения «в строю» с минимальными «накладными» затратами ресурсов.
Здесь дополнительные комментарии излишни: слишком большое выделение ресурсов невыгодно, слишком малое способно вызвать задержки и сбои в работе приложения. «Умное» масштабирование на основе реальной нагрузки позволяет свести неэффективные траты к минимуму, сохранив работоспособность приложения на должном уровне.
Балансировщики позволяют распределить нагрузку на серверную часть и находящиеся на ней контейнеры. Это сокращает потребление мощностей, нормализует пропускную способность на канале и повышает скорость отклика.
Под маршрутизацией понимается настройка распределения трафика из глобального интернета по внутренним ресурсам приложения.
С помощью мониторинга можно в реальном времени отслеживать контейнеры и их параметры: когда, где и какие их образы были запущены, какие внутри контейнеров используются команды, где завышено потребление ресурсов и т.п.
Система выдает администратору предупреждения, основанные на наблюдениях за кластерами: данные о найденных уязвимостях и проблемах конфигурации, а также советы по устранению обнаруженных проблем.
Различия между популярными системами оркестрации контейнеров
Каждый вендор предлагает своим пользователям различный функционал программ-оркестраторов. Отличия между ними продиктованы как непосредственно политикой компании, ответственной за выпуск, так и разницей в требованиях целевой аудитории.
Приведем несколько примеров и рассмотрим наиболее принципиальные отличия систем оркестрации разных производителей.
Kubernetes
Без сомнения, Kubernetes на данный момент является бесспорным лидером отрасли, и многие решения, принятые в компании, в скорости становятся отраслевым стандартом. Фирменный оркестратор контейнеров поддерживает и декларативный подход к настройке объектов, и автоматизированный. Пользователям доступен функционал для масштабирования, деплоймента из готовых шаблонов, управление рабочими нагрузками и сервисами контейнеров.
Список поддерживаемых ОС весьма широк: Linux и ее дистрибутивы, Windows и macOS.
OpenShift Container Platform
Решение от OpenShift — это серьезная платформа Enterprise-уровня (предоставляется как PaaS), предназначенная для разработки, деплоймента и тонкой конфигурации как контейнерных, так и монолитных приложений. Функционал платформы доступен как в on-premise, так и в виртуальных (включая гибридные) средах. Единственная поддерживаемая операционная система — Linux.
Docker Swarm
Самое стандартное решение от Docker. В ней применяется исключительно декларативная модель управления объектами. Работа с кластерами осуществляется путем ввода команд Docker, а непосредственное управление действиями — через пакет Swarm. Как и в случае с решением от Kubernetes, поддерживаются все популярные ОС: Linux, Windows и macOS.
Нужен ли вам оркестратор?
Если речь идет о крупной компании, в которой разработка занимает далеко не последнее место среди прочих бизнес-процессов, а команды параллельно разрабатывают и поддерживают несколько приложений, — без оркестратора микросервисов действительно не обойтись. Но в большинстве случаев количество контейнеров в проектах весьма невелико, поэтому гораздо дешевле и проще управлять ими вручную.
Преимущества оркестраторов:
- автоматизированный центр разработки и администрирования приложений, основанных на микросервисах;
- большой набор вспомогательных утилит, призванных сэкономить время;
- способны решать задачи, которые нецелесообразно вести вручную.
Недостатки оркестраторов:
- есть вероятность, что использование оркестратора чрезмерно усложнит весьма простую инфраструктуру, управлять которой можно и вручную;
- понадобится дополнительный ресурс мощностей, на которых будет располагаться система-оркестратор.
- На сегодняшний день системы оркестрации доступны компаниям в формате SaaS и PaaS: провайдер возьмет все административный функции на себя.