31 октября 2022 г.

Денис Афанасьев

Оптимизация вычислительных ресурсов — лейтмотив развития ИТ-отрасли в России в настоящий момент. Рассказываем, какие возможности для этого предлагают контейнеры и опция управления их жизненным циклом в облаках.

Теория и история

На начальном этапе развития ИТ-отрасли приложения запускались на физических серверах — там же, где ОС и прочий системный софт. Альтернатив не было. В перспективе долгосрочной эксплуатации такая модель вызывала конфликты за ресурсы при одновременном запуске нескольких приложений: если на одно начинается повышенный спрос, работа остальных становилась существенно хуже.

Из ситуации выходили путем масштабирования «железа» и переносом критически важных приложений на отдельные серверы. Однако это увеличивало капитальные затраты и общую стоимость эксплуатации ИТ.

В качестве решения появились первые модели виртуализации. На одном и том же «железе» запускалось несколько виртуальных машин (ВМ) за счет распределения вычислительных ресурсов на программном уровне с учетом загрузки и требований ИБ, когда данные с одной ВМ недоступны для другой.

Несмотря на преимущества (оптимизация ресурсов, лучшая масштабируемость, снижение затрат на эксплуатацию), у виртуализации есть и минусы. Сам по себе слой этого ПО «ест» ресурсы оборудования в достаточно большом объеме. Еще каждая ВМ представляет собой полноценную среду со своими специфическими настройками, которая работает как бы «поверх» оборудования.

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

Ответом на этот вызов стало создание контейнеров. Это замкнутые изолированные и неизменяемые среды для запуска кода. У контейнеров, в отличии от ВМ, нет «гостевой» ОС, за счет чего они потребляют существенно меньше вычислительных ресурсов и без проблем развертываются в любой среде.

Контейнеры обладают «вшитой» файловой системой, набором настроек по использованию памяти и т.д., и все это никак не связано с базовой ИТ-инфраструктурой. На работу приложений, которые запускаются из контейнеров, спецификации базового железа и системного ПО не влияют. Они легко портируются между разными ОС и платформами, а также мигрируют из облачных в локальные окружения и наоборот.

Развитие формата

В 2019 году Gartner оценивал использование контейнеров компаниями Enterprise-сегмента глобального бизнеса на уровне 30% от общего числа. Прогноз на 2022 год был 70%. Исходя из наблюдений за рынком можем сказать, что он полностью сбылся.

За это время из хайповой технологии контейнеры и инструменты управления их работой стали абсолютно стандартным решением и частью ИТ-стратегии компаний в любой отрасли.

В России адаптации контейнеров способствовали следующие факторы:

  • Пандемия COVID19 вызвала всплеск популярности онлайн-активностей (от удаленной работы до покупок и обучения). Бизнесу пришлось адаптироваться, что вызвало спрос на микросервисные ИТ-архитектуры и контейнеры как основное средство их реализации.
  • Появление новых видов рабочих нагрузок в ИТ-системах компаний — big data, ИИ, машинное обучение, высоконагруженные приложения — реализация всех этих задач почти всегда требует возможностей, предлагаемых контейнерами.
  • Повышение частоты задач по переводу разработок из тестовых сред в продуктивный контур ИТ-систем — контейнеры упрощают и ускоряют выполнение задачи.
  • На рынке сегодня представлено большое количество инструментов по работе с контейнерами в связи с ростом спроса, а также развитием сообщества разработчиков в этой области.

Преимущества контейнера

  1. Мобильность и портируемость — достаточно один раз написать код, и он будет работать в любой среде, в любом окружении. Не нужно писать варианты под разные ОС, локальное развертывание и облачную платформу. Уровень абстракции в формате контейнера позволяет игнорировать особенности конкретной платформы и набора взаимозависимостей ИТ-ландшафта в целом.
  2. Высокая скорость доставки — архитектура контейнеров потребляет мало ресурсов, поэтому в них проще и быстрее исправлять ошибки, корректировать, обновлять и запускать функционал ПО. Цикл разработки существенно сокращается.
  3. Хороший уровень ИБ — изоляция контейнеров от прочих элементов ИТ-ландшафта, автоматический блок доступа к определенным компонентам и отсутствие необходимости в лишних взаимодействиях с необязательными элементами инфраструктуры.
  4. Формат, ориентированный на DevOps-модель создания софта, позволяющий максимально точно настраивать процесс разработки под задачи бизнеса.
  5. Простота управления на всех этапах, включая инсталляцию, обновления и откаты.
  6. Отказоустойчивость и непрерывность работы — неисправность одного или нескольких элементов всю систему из строя не выводит.

Молоко, печенье... и мёд!

Все эти характеристики прочно связывают контейнеры с микросервисными архитектурами. Микросервисы — парадигма архитектуры, а контейнеры — средство ее реализации для создания современных приложений, веб-сайтов, решений в области ИИ, IoT, big data и работы с высокими рабочими нагрузками.

Они дополняют друг друга, как молоко и печенье — могут существовать самостоятельно и быть полезными по отдельности, но вместе производят полезный эффект на совершенно другом уровне. К этому гармоничному ансамблю в последнее время добавляется третий элемент — ложка мёда в виде оркестраторов для управления контейнерами.

Дело в том, что, когда контейнеров в ИТ-ландшафте много, и они запускаются в производственной среде, нужно обеспечить гарантии их слаженной работы для недопущения падений и простоев системы.

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

Для этого в качестве одного из общепринятых решений существует система оркестрации контейнеров Kubernetes — он берет на себя задачи развертывания объемных кластеров по шаблонам, упрощает их масштабирование, мониторинг, обработку и исправление ошибок.

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

Проблемы вас не CaaSаются

Однако это — не последняя ступень оптимизации софтверной разработки. Еще более высокий уровень производительности и масштабные задачи с помощью контейнеров позволяет решать модель CaaS — Containers-as-a-Service.

Она предполагает доступ бизнеса к преднастроенным кластерам контейнеров в облаке провайдера — компании не нужно ничего устанавливать, настраивать оборудование и рабочую среду под контейнеры, изучать Kubernetes или искать профильных специалистов под эту задачу.

CaaS позволяет получить кластеры контейнеров, интегрированные инструменты мониторинга, управления и оптимизации. Если поднимать такую систему самостоятельно на своем «железе», то можно просто утонуть в операционных проблемах, особенно в современных условиях дефицита оборудования, кадров и софта.

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

Еще одно важнейшее преимущество CaaS — создание и хранение резервных копий конфигураций кластеров. Даже если произойдет авария в ЦОДе, ваше приложение или сайт, или любое другое решение на контейнерах «поднимется» на альтернативной площадке без потери в производительности.

Это делает CaaS-подход к решению ИТ-задач незаменимой опцией везде, где требуется обеспечить модель работы 24×7×365, быстрое масштабирование и оптимизацию вычислительных ресурсов на фоне растущих цен на «железо».

Источник: Денис Афанасьев, руководитель направления облачных решений CorpSoft24