Статья
Docker и Kubernetes: когда бизнесу это действительно нужно
Контейнеры решают конкретные задачи и создают новые. Разбираем без восторгов, что нужно проекту на вашем этапе.
Слова из технических предложений, о смысле которых заказчик обычно не спрашивает, чтобы не выглядеть некомпетентным. Спрашивать стоит: разница в стоимости обслуживания между вариантами измеряется в разы.
Docker простыми словами
Способ упаковать приложение вместе со всем, что ему нужно для работы: нужной версией языка, библиотеками, настройками. Получается коробка, которая одинаково запускается на компьютере разработчика, на тестовом сервере и на боевом.
Решает конкретную и очень старую проблему: «на моей машине работает». Больше не имеет значения, что стоит на сервере, — приложение приносит своё окружение с собой.
Что даёт на практике
Одинаковое окружение. Исчезает целый класс аварий, вызванных различием версий.
Быстрый ввод в работу. Новый разработчик запускает проект одной командой, а не тратит два дня на настройку.
Безболезненный переезд. Смена хостинга перестаёт быть проектом на неделю.
Обновление без страха. Новая версия языка проверяется в контейнере, не трогая боевой сервер.
Что забирает
Нужен человек, который в этом разбирается. Главная плата. Обычный администратор с контейнерами может быть незнаком, и обслуживание становится дороже.
Больше движущихся частей. Появляются образы, тома, сети — новый слой, где тоже случаются поломки.
Ресурсы. Немного, но накладные расходы есть.
Когда Docker оправдан
- над проектом работает больше одного разработчика;
- есть тестовый стенд и боевой сервер, и они должны совпадать;
- проект живёт дольше года и будет обновляться;
- используется несколько сервисов — приложение, база, кеш, очередь.
Не оправдан: статичный сайт, разовый лендинг, проект, который делает один человек и больше не трогает.
Kubernetes — это другой масштаб
Система, которая управляет контейнерами: сама запускает, распределяет по серверам, перезапускает упавшее, добавляет копии под нагрузкой.
Разница с Docker принципиальная. Docker — упаковка, инструмент разработки. Kubernetes — инфраструктурная платформа со своей сложностью, которая требует отдельной квалификации.
Когда он действительно нужен
Kubernetes оправдан, когда выполняется несколько условий сразу:
- приложение не помещается на один сервер;
- нагрузка сильно меняется и нужно автоматически добавлять и убирать мощности;
- простой недопустим, нужна выкладка без остановки и автоматическое восстановление;
- сервисов много — десятки, а не три;
- есть кому его обслуживать: свой специалист или подрядчик.
Если сайт живёт на одном сервере и нагрузка предсказуема, Kubernetes добавит сложности и стоимости, не решив ни одной существующей задачи.
Что выбрать по этапам
Небольшой проект. Обычный сервер, выкладка скриптом. Просто, дёшево, понятно любому администратору.
Растущий проект, команда есть. Docker плюс автоматическая выкладка. Оптимальное соотношение пользы и сложности для подавляющего большинства.
Нагруженный проект, простой стоит денег. Docker, несколько серверов, балансировщик. Отказоустойчивость без сложности оркестрации.
Большой продукт с командой из нескольких групп. Здесь Kubernetes начинает окупаться.
Что спросить у подрядчика
Если в предложении есть Kubernetes, задайте три вопроса: какую конкретную проблему нашего проекта он решает; сколько стоит обслуживание в месяц; кто будет обслуживать, когда вы уйдёте.
Внятные ответы означают, что решение принято под задачу. Ответ «это современный стандарт» — что вам продают технологию, а платить за неё будете вы.
Следующий шаг