tgoop.com/tarmolov_work/175
Last Update:
Я уже рассказывал о нашей прошлой системе выкладки сервисов — с помощью debian-пакетов и даже написал лонгрид с подробностями.
Перед установкой debian-пакета необходимо настроить сервер. Но если двум разным пакетам понадобится разное окружение, то возникает проблема.
Нужно либо каким-то образом "поженить" конфликтующие окружения на одном сервере, либо ставить такие debian-пакеты на разные сервера.
Чаще всего один физический сервер разделяют на независимые части с помощью виртуализации для оптимизации использования мощностей. И на такие виртуальные сервера можно поставить конфликтующие debian-пакеты с сервисами.
Но можно пойти немного дальше и воспользоваться контейнеризацией с созданием независимых виртуальных операционных систем.
Docker — де-факто стандарт контейнеризации. Docker-контейнеры используются повсеместно — и в Яндексе, в частности.
В отличие от debian-пакета в docker-контейнер включено необходимое окружение. Однажды настроенный docker-контейнер может быть запущен на любых серверах. Удобно обновлять и поддерживать.
Docker позволяет легко накатывать и откатывать новую версию приложения. И это с учетом изолированности среды выполнения и минимальным оверхедом по использованию ресурсов.
В моей команде docker используется не совсем по "канонам". В одном docker-контейнере одновременно живет несколько процессов: nginx, приложение и дополнительные вспомогательные процессы.
По-хорошему, их нужно было разносить по отдельным docker-контейнерам с провязкой через docker-compose, но нам оказалось удобнее сделать общий базовый образ "все в одном".
Docker-образ конкретного сервиса наследуется от базового образа и получает всю необходимую инфраструктуру "из коробки". Такой подход позволяет нам унифицированно работать с 50+ сервисами и упрощает обновление инфраструктуры.
#инфраструктура
BY Тармолов про работу
Share with your friend now:
tgoop.com/tarmolov_work/175