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

«Был ли у вас опыт развертывания сервисов без использования контейнеров?» — вопрос из категории Архитектура и DevOps-практики, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, у меня есть опыт деплоя приложений на bare-metal серверах и виртуальных машинах. Основной стек для этого включал Ansible для конфигурации, systemd для управления процессами и Nginx в качестве reverse proxy и балансировщика нагрузки.

Пример практического сценария: Развертывание Python (Django) приложения на двух виртуальных машинах Ubuntu.

  1. Автоматизация конфигурации (Ansible): Плейбук устанавливал системные зависимости, настраивал окружение, копировал код и конфигурационные файлы.
  2. Управление сервисами (systemd): Создавался unit-файл для запуска приложения как демона с автоматическим рестартом при сбоях.
  3. Веб-сервер и балансировка (Nginx): Nginx выступал как точка входа, проксируя запросы на бэкенд-процессы и раздавая статику.

Ключевые отличия от контейнерного подхода:

  • Плюсы: Меньший оверхед (нет слоев контейнера и рантайма), прямой доступ к аппаратным ресурсам, иногда проще отладка.
  • Минусы: Сложнее обеспечить идентичность окружений на разных серверах («works on my machine»), менее гибкое масштабирование, более трудоемкий процесс обновления и отката. Этот опыт хорошо показывает эволюцию инфраструктуры и причины перехода на контейнеризацию.