Облачные сервисы

Контейнеры в IaaS: как Docker и Kubernetes ускоряют запуск сервисов

Контейнеризация — это способ упаковать приложение вместе со всем, что нужно для его работы, в лёгкий переносимый «контейнер». В облачной инфраструктуре (IaaS) это позволяет запускать и масштабировать сервисы гораздо быстрее, чем через классические виртуальные машины, и переносить их между серверами без переустановки и настройки заново.

Что вообще такое контейнер?

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

Чем контейнер отличается от виртуальной машины?

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

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

Что такое Docker и почему все его вспоминают?

Docker — это самый известный инструмент для создания и запуска контейнеров. Он не изобрёл саму идею контейнеризации, она существовала и раньше в мире Linux, но именно Docker сделал технологию удобной и массовой: разработчик может описать всё окружение приложения в одном файле, а дальше собрать из него контейнер, который одинаково запустится где угодно — хоть на компьютере программиста, хоть на облачном сервере в проде. Это решило старую проблему «у меня на компьютере работало» — теперь окружение переезжает вместе с кодом.

А зачем нужен Kubernetes, если есть Docker?

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

Интересный факт: Kubernetes был разработан на основе внутренней системы Google под названием Borg, которой компания много лет управляла собственными огромными дата-центрами. Позже разработку открыли всему миру, и сегодня Kubernetes стал фактическим стандартом управления контейнерами в облаке.

Клауд АйСи — облачная инфраструктура и защищённые серверы под 1С и цифровые сервисы бизнеса: размещение в дата-центре, резервное копирование и поддержка.
Всё в одном кабинете по подписке.
Есть бесплатные тарифы навсегда.

Какие задачи бизнеса решает контейнеризация в облаке?

На практике контейнеры в связке с облачной инфраструктурой закрывают сразу несколько типичных бизнес-потребностей:

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

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

Не усложняет ли всё это инфраструктуру?

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

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

С чего начать бизнесу, который хочет попробовать контейнеры?

Обычно путь такой: сначала разработчики упаковывают одно-два приложения в контейнеры и тестируют их на облачном сервере, чтобы убедиться, что всё работает стабильно. Затем, если сервисов становится больше, подключают систему оркестрации для автоматического управления ими. Важно с самого начала продумать вопросы резервного копирования данных, мониторинга состояния контейнеров и защиты образов от уязвимостей — контейнерная среда требует не меньше внимания к безопасности, чем классические серверы.

Как облачная инфраструктура «Клауд АйСи» помогает с запуском контейнеров?

Платформа «Клауд АйСи» предоставляет гибкие облачные серверы, на которые удобно разворачивать как отдельные контейнеры, так и полноценные кластеры для оркестрации. Ресурсы — процессор, память, диски — можно наращивать по мере роста нагрузки, не пересобирая инфраструктуру заново, а сеть и хранилища настраиваются под конкретный проект. Это позволяет бизнесу начать с малого — одного сервиса в контейнере — и постепенно расти до полноценной микросервисной архитектуры, не привязываясь к покупке и обслуживанию собственного оборудования.

Разместите 1С и сервисы в облаке

Зарегистрируйтесь и подключите инфраструктуру под ваши задачи — начните с бесплатного тарифа.

Частые вопросы

Чем контейнер отличается от виртуальной машины?

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

Нужен ли Kubernetes каждому бизнесу с контейнерами?

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

Можно ли использовать контейнеры и виртуальные машины одновременно?

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

Безопасно ли использовать контейнеры для бизнес-приложений?

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