Чек-лист: внедряем контейнеры
Подавляющее большинство современных бизнес-задач сводится к обслуживанию возрастающего количества конечных клиентов в онлайне — максимальное число пользователей должно получить доступ к сервисам и услугам компании. При этом система должна сохранить оптимальную работоспособность во время пиковых нагрузок и не простаивать во время спадов. Идеальным решением становится контейнерная виртуализация. Когда и как бизнесу переходить на контейнеризацию, рассказывает Денис Альшанов, ведущий инженер компании IBS Datafort.
Содержание |
Выбор технологии
Контейнеризация – идеальное решение в трех случаях. Она необходима компаниям, которые:
в состоянии построить микросервисную архитектуру и планируют постепенно наращивать число микросервисов; имеют интернет-приложения с периодическими пиковыми нагрузками, под которые надо оперативно масштабировать приложение: в этом случае контейнеризация дает возможность мгновенного масштабирования при росте числа обращений к приложениям; постоянно совершенствуют свои приложения: именно контейнерная инфраструктура позволяет легко обновлять приложения, безболезненно и быстро откатываться к предыдущей версии в случае ошибок, а так же проводить тестирование новых возможностей на ограниченном кругу пользователей.
Плюсы использования контейнеров:
ускорение процесса написания кода и тестирования: при использовании контейнеров разработчик выпускает под себя готовый образ, который сразу можно начать тестировать, а не отдельное приложение, которое надо будет сначала установить и проверить; выделение тестовых сред: бывает, что в процессе разработки появляется большое количество тестовых версий приложения, размещенных на тех же ресурсах, что и продуктив – контейнеризация помогает разделить тестовую и продуктивную среды; оптимизация расходов: при пиковых нагрузках клиент платит не за дополнительный сервер, а только за те вычислительные ресурсы, которые потреблял; повышение безопасности.
У кадрового агентства был сайт, который располагался внутри одной из виртуальных машин и был построен `по классике`. В какой-то момент ресурс был взломан, и единственная машина превратилась в тыкву — бизнес на несколько дней был лишен сайта, который генерировал большинство заказов. Когда клиент обратился к нам за помощью, мы предложили полностью перенести сайт в контейнерные кластеры. В этом случае, если компрометируется один из контейнеров, он выводится из обращения, при этом остаются его копии, продолжающие выполнять все функции, данные доступны и в несколько кликов создается его полный аналог рядом. Владимир Свиридов, директор по развитию бизнеса, IBS Datafort
|
Кому не подходит
Как это ни парадоксально, самая частая ошибка при работе с этой технологией — это обращение за контейнеризацией в том случае, когда она не нужна. |
Контейнеры не понадобятся:
компаниям, работающим на старых монолитных приложениях;
Например, классическое «1С:Управление торговлей» не предусмотрено разработчиками для масштабирования и соответственно не может быть помещено в контейнеры потребителями, – поясняет Владимир Свиридов. – Всегда есть приложения, которые лучше работают в монолите, но при этом находятся клиенты, которые хотят и их контейнеризировать. Технически это возможно, но в этом случае понижается производительность всей системы. |
когда задача не может быть параллелизирована: ее можно решить исключительно последовательными действиями; при работе с Big Data: сверхбольшие объемы данных имеет смысл хранить не в контейнерах, которые подразумевают что-то маленькое и легкое, а разместить рядом на отдельно стоящих системах – довольно распространена схема, когда данные хранятся отдельно от приложений, а контейнеры забирают данные с сервера баз данных (при этом количество контейнеров и конечных приложений, обращающихся к базе данных, может быть огромное количество – десятки, сотни и даже тысячи).
Подготовка
Драйвером перехода на использование контейнеров чаще всего является желание бизнеса сократить сроки выхода новых версий продуктов и снижение расходов как на содержание ИТ оборудования, так и на сам процесс разработки, – отмечает Владимир Свиридов. – Выбор в пользу микросервисной архитектуры уже делает техническая команда, как наиболее оптимальный вариант реализации данных требований. Не маловажным аспектом в пользу контейнеризации также являются широкие возможности оперативного масштабирования в соответствии с текущей нагрузкой. |
Процедуру подготовки можно разбить на несколько этапов:
Формирование команды Переход на контейнеры требует, чтобы в команде были технари, для которых контейнеры, оркестрация и CI-СD (Continuous integration & Continuous delivery, непрерывная разработка и непрерывная доставка) не будут набором новых слов. Сейчас рынок перенасыщен подобными специалистами, благодаря этому всегда можно отдать процесс на аутсорс – в этом случае будет произведен анализ потребностей конкретного клиента и предложена схема перехода.
Разработка приложения Контейнерное приложение требует подхода, отличного от традиционного, поэтому уже на этапе проектирования нового приложения необходимо заложить базовые принципы общения между компонентами. Если у компании уже есть работающее решение, не беда, можно по частям выносить компоненты в отдельные контейнеры с микросервисами. В этом случае также стоит расписать целевую архитектуру.
Тестирование готовности приложений к контейнеризации Это этап с самым непредсказуемым сроком. Если приложение готово, это становится понятно в течение нескольких часов, если выявляется необходимость доработки, то время всегда индивидуально.
По нашим наблюдениям, подобные переходы у реально крупных команд занимали два-три месяца, – говорит Денис Альшанов. – У команд поменьше бывают ситуации, когда все их процессы уже в достаточной степени автоматизированы и могут работать внутри новой парадигмы почти сразу. |
На этом этапе может потребоваться: отделить данные от приложений; разделить немонолитные приложения на базовые задачи, например, авторизация, показ картинок, получение счетов, уведомления и др.;
Основная суть контейнера и заключается в том, что он выполняет только одну функцию, – подчеркивает Денис Альшанов. – Контейнер, выполняющий сразу несколько задач, не имеет смысла, так как он уже ничем не отличается от классического виртуального сервера. |
подготовить тестовую контейнерную площадку, где технологическая команда сможет проверить те наработки, которые уже имеются в компании на данный момент: при переходе любое приложение должно быть в той или иной степени переписано, либо как минимум протестировано (самый простой и быстрый способ получить работающую тестовую площадку – воспользоваться услугами облачного провайдера).
Доработка приложений По окончании тестирования необходимо отладить процесс последующего перехода к контейнерам, а также дальнейшей разработки новых функций приложений. В этот момент стоит начать использовать независимые друг от друга тестовые и продуктивные среды.
Внедрение
При положительных результатах тестирования контейнеры переносятся из тестовой среды в продуктивную, дополнительно развернутую на любой площадке. Это может быть:
Приватное облако / On-premise инфраструктура – с полностью выделенным контуром и комплексными мерами защиты. Решение может быть развернуто в полуавтоматизированном режиме. Вместе с настройками это может занять до нескольких дней. Стоимость решений в полуприватном или приватном облаке рассчитывается в зависимости от необходимого числа виртуальных машин или физических серверов, в случае большого объема ресурсов. При этом зачастую не удается добиться значительной оптимизации расходов, т.к. оплата ресурсов провайдера или собственные затраты фиксированы.
Публичное облако – на практике оно используется чаще всего, так как при этом можно воспользоваться средствами по автоматизации развертывания кластера либо отдельных контейнеров. Стоимость зависит от текущего потребления вычислительных ресурсов в облаке провайдера, что позволяет добиться максимальной оптимизации расходов, т.к. отсутствуют затраты на содержание системы, а оплата производится только за тот объем, который реально необходим в текущий момент.
В облаке IBS Datafort готовый продуктивный кластер Kubernetes можно развернуть за 20 минут со всеми основными компонентами, – рассказывает Денис Альшанов. – Время переноса данных приложений зависит от объемов информации. |
Выбор сервис-провайдера
При выборе провайдера необходимо в первую очередь обратить внимание на следующие моменты: насколько автоматизированы процессы создания контейнера, развертывания кластера и управления ими; есть ли возможность централизованного контроля и обновлений; имеются ли встроенные средства организации процесса разработки (CI/CD) и мониторинга; наличие глубокой экспертизы у инженеров провайдера; насколько развит продуктовый портфель дополнительных сервисов, который может не потребоваться в текущий момент, но с ростом и развитием компании окажется полезной возможность их простой интеграции с существующей инфраструктурой; уровень SLA и технические параметры качества сервисов.
Услуга по быстрому развертыванию кластеров Kubernetes становится все более востребованной, отмечает Владимир Свиридов. – В IBS Datafort поступает минимум один запрос в неделю от достаточно крупных клиентов, которые либо уже имеют в собственном приватном облаке некие контейнерные решения и хотят их повторить у нас, либо ищут площадку, где можно запустить новую архитектуру. |
Экономическая целесообразность микросервисного подхода хорошо видна на сравнении типичной конфигурации кластера Kubernetes в классическом облаке и на платформе микросервисов IBS Datafort. Ниже приведен расчет для следующих параметров: Мастер-ноды — 1 шт. 4 vCPU, 32 памяти и 100ГБ SSD; Компьют-ноды — 3 шт 4 vCPU, 32 памяти и 100ГБ SSD. В классической модели необходимо сразу создать 4 виртуальных сервера с фиксированной платой.
Группа | Показатель | Сумма |
---|---|---|
Вычислительные ресурсы | 16vCPU | 54450 руб. |
128 Гб RAM | ||
400 Гб SSD | ||
Доступ в сеть Интернет | 100 Мб/с |
В случае с микросервисной платформой оплата производится по фактическому объему потребляемых ресурсов, и аналогичная конфигурация может быть представлена в следующем виде:
Зарезервированные ресурсы (40% от максимального сайзинга) | 11 972 руб. | |
Дополнительные ресурсы On Demand для пиковых нагрузок (100% утилизация сайзинга) | 17 958 руб. | |
SSD (40% от максимального сайзинга) | 160 Гб | 7 218 руб. |
SSD (80% от максимального сайзинга) | 320 Гб | 14 436 руб. |
Трафик Интернет 20% утилизации полосы | 6500 ГБ | ~5000 руб. |
Трафик Интернет 80% утилизации полосы | 13000 ГБ | 6760 руб. |
Итого при минимальном потреблении | 24 190 руб. | |
Итого при максимальном потреблении всех ресурсов в течение всего месяца | 50 826 руб. |
Таким образом, даже при максимальном потреблении всех ресурсов кластера контейнеров стоимость реализации данного сервиса в микросервисной платформе IBS Datafort Cloud почти на 20% ниже по сравнению со стандартной схемой аренды вычилительных машин. При этом заказчик получает всю дополнительную функциональность в виде автоматического масштабирования систем по требованию, автоматического развертывания большинства решений, доступа к маркетплейсу с сотнями доступных для скачивания и установки приложений.