Посмотрел интервью Docker для 1С-разработчиков, которое взял Сергей Сыпачев у Йосифа Правец
Как и другие интервью, записанные Сергеем, это имеет узнаваемую структуру - сначала о входе в профессию, обсуждение основной и вспомогательных тем, байки из практики на финал. Поэтому интервью интересно смотреть, даже если слушатель далек от основной темы, или если тема не раскрыта как было тут.
К сожалению, тема не раскрыта.
Действительно к сожалению, так как для меня применение Docker при разработке и тем более при сервисной поддержке на платформе "1С:Предприятие" - сомнительная идея, которая не приносит ощутимой пользы. Потому я хотел послушать аргументы противоположной стороны для расширения кругозора.
Что такое Docker?
Это инструмент легкой виртуализации. В интервью верно отмечено, что текущая версия Docker построена на базовых возможностях ядра Linux по изоляции процессов и доступов с помощью пространства имен (изначально у них была более высокоуровневое решение, что приводило к проблемам безопасности). Следовательно полноценно Docker работает исключительно на Linux.
Можна ли запускать Docker на Windows и macOS?
Да, через инструменты виртуализации, что потребует значительных системных ресурсов. В обоих случаях для работы с образами Docker используются легковесные виртуальные машины. На Маках интеграция более эффективная, а на Windows все сложнее из-за необходимости использовать виртуализации WSL2, в рамках которой нужно установить полноценный дистрибутив Linux, в рамках которого уже будет работать виртуализация Docker.
Мое отношение к Docker для разработки в 1С
Полноценно разработчик 1С сможет использовать Docker только работая на дистрибутиве Linux, где не будут работать все завязки на программы и библиотеки Windows, а по отзывам использующих Конфигуратор там сильно глючит. Если использовать Docker на Windows, где выполнять разработку, то эффективнее поднять виртуалку - минус один уровень виртуализации.
Но главного я не услышал - зачем вообще нужен Docker для разработки в 1С
Были упомянуты контуры CI/CD, которым якобы удобнее работать с базами 1С внутри Docker. Сомнительно! Если базы маленькие/пустые для быстрых тестов (юниты, дымовые) или для сборки релизов, то эффективнее копировать в рабочую папку заранее приготовленный файл 1Cv8.1CD , а для больших баз на SQL-серверах можно быстро накатывать приготовленные бекапы. В этой схеме Docker явно лишний.
Было упомянуто, что на физических тестовых стендах и на виртуалках сложно обновлять платформу 1С, а в Docker легко. Не согласен! Обновление платформы внутри образа Docker не совсем простая задача, а разово обновить платформу для эталонной базы и сделать её бекап - намного проще.
Зачем Docker применяют не аденсовские айтишники?
Решается очень больная проблема зависимостей - Dependency hell, когда один компонент требует второй, а тот требует третий, а тот требует иную версию первого компонента и отказывается работать с текущей - распространённая проблема с пакетами на Node.JS, с гемами Ruby и в прочих языках с централизованными пакетными менеджерами. Docker позволяет заморозить среду выполнения определенных компонентов с нужными для них зависимостями. Это далеко от монолита 1С, который держит внутри себя почти все требуем компоненты (включая упомянутый в интервью ImageMagick)
Вторая решаемая проблема следует из первой - больше никаких "не знаю почему у вас не работает, ведь у меня работает". Но это касается низкоуровневых программ, большая часть которых консольные - тоже далеко от мира 1С. Если у клиента на его данных отчет работает не так как на данных у разработчика 1С, то тут никакой Docker не поможет.
И третья проблема, которая пришла из мира веб-разработки - это поднятие множества версий зависимых друг от друга служб (микросервисная архитектура), которые должны слушать определенные порты. Очень частая задача для веба, которая крайне редко встречается в мире 1С. Иногда нам нужно для каждого изолированного теста поднять один Apache на случайном порту, но с этой задачей легко справляются простые скрипты на физической системе или можно поднять виртуалку.
Post #363
270