Стоит ли использовать Docker на продакшене?

Есть приложение с нагрузкой 5-25 запросов в секунду (10-40 тыс. человек ежедневно)
Очень хотим настроить CI/CD дабы процесс деплоя автоматизировать, но почему-то в голове сложились стереотипы по использованию докера на боевом сервере. На stage(тестовых) серверах мы его используем и очень успешно (за исключением того, что иногда там кончается память)

Какие преимущества вы можете выделить в Docker на продакшене?
Стоит ли использовать?
Ваш опыт.

Спасибо за внимание!
  • Вопрос задан
  • 7161 просмотр
Решения вопроса 1
kumaxim
@kumaxim
Web-программист
Если у Вас один-три сервера, скорей всего, Docker Вам не нужен. В этом случае для управления конфигурацией лучше используйте ansible.

Потребность в Docker возникает либо в случае когда нужно расшарать одно окружение на множество машин, например, у меня и моих коллег сейчас девелоперское окружение(php + apache + mysql + redis) крутиться на контейнерах. Второй пример - нужно настроить динамическое горизонтальное масштабирование. Этот вариант Вам нужно рассматривать, только если Вы используйте AWS или что-то подобное.

В целом, docker / ansible / chef / puppet и т.п. Вам нужны только в случае, если нужно шарить одно окружение на разные машины, причем часто, с уверенностью что оно везде одно. Другого примера использования придумать не могу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@de1m
У нас пять серверов в hetzner и несколько больших во внутреней сети, на них на всех крутяться контейнеры для разных вещей(mysql, mssql, bind, openvpn, etc). Начали со всем этим, где-то года три назад. Проблемы были, но небольшие и они уже исправлены, последние где-то месяцев 10 я ничего не вспомню.
Если вы хотите CI/CD, то смотрите в сторону kubernetes. Его главный плюс, что можно всем управлять через API. Мы к этой идеи тоже пришли и я буквально неделю назад закончил установку kubernetes'а на трех серверах у hetzner и начал туда переводить наши сервисы.
У докера я вижу два главных преимушества:
1. Очень чёткое разделение между данными и системой. Выводишь нужные данные на volumes и делаешь с них бэкапы. Если сервер сгорел, заливаешь образы для docker'а и накатываешь данные и готово.
2. Повторяемость окружения.
Ответ написан
@yiicoder
Мы gamedev, у нас docker + hetzner'овские сервера. Настроили CI\CD так, что тестируем именно тот самый образ, который уйдет на продакшн и это избавило нас от бесконечной головной боли.
Меня в свое время вдохновили статьи от Альфа.Лаборатории - ссылку не привожу, как и они так и ваша статья - сейчас это все безнадежно устарело. Наш опыт уже около 1.5 года, полет нормальный - проблемы были больше от непонимания. Оркестрация досихпор самописная на ansible, смотрим в сторону kubernetes.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы