LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

Берём стабильный дистрибутив. Ставим там стабильную версию Python. Затем развёртываем на этом сервере пару сервисов разработанными разными командами из нашей организации и имеющими разный релизный цикл, разные зависимости и т. д.

Обнаруживаем, что команда сервиса A использует библиотеку работающую только с Python < 3.11, а команда сервиса B использует другую библиотеку работающую только с Python > 3.11. А наш стабильный дистрибутив не даёт поставить две версии третьего питона одновременно.

Теперь либо нужно два независимых сервера, либо ждать пока команда первого сервиса обновит библиотеку (а у них, напомню, свой релизный цикл и свои приоритеты и при отсутствии критических уязвимостей обновление библиотеки может быть вообще не в приоритете). Ещё можно собрать одного из питонов из исходников, поставить в другой префикс и т. д. Потом не забывать его руками обновлять при выходе фиксов безопасности и т. д.

С Docker просто у двух образов сервисов будут разные базовые образы с разными версиями Python, а админу сервера даже не обязательно знать на каком языке написаны сервисы. Ему нужно только знать какие порты они слушают, к каким другим сервисам обращаются (например, к СУБД) и, иногда, какие volume у них нужно сделать persistent.

Исходная версия KivApple, :

Берём стабильный дистрибутив. Ставим там стабильную версию Python. Затем развёртываем на этом сервере пару сервисов разработанными разными командами из нашей организации и имеющими разный релизный цикл, разные зависимости и т. д.

Обнаруживаем, что команда сервиса A использует библиотеку работающую только с Python < 3.11, а команда сервиса B использует другую библиотеку работающую только с Python > 3.11. А наш стабильный дистрибутив не даёт поставить две версии третьего питона одновременно.

Теперь либо нужно два независимых сервера, либо ждать пока команда первого сервиса обновит библиотеку (а у них, напомню, свой релизный цикл и свои приоритеты и при отсутствии критических уязвимостей обновление библиотеки может быть вообще не в приоритете).

Ещё, конечно, можно собрать одного из питонов из исходников, поставить в другой префикс и т. д. Но это головняк на ровном месте.

С Docker просто у двух образов сервисов будут разные базовые образы с разными версиями Python, а админу сервера даже не обязательно знать на каком языке написаны сервисы. Ему нужно только знать какие порты они слушают, к каким другим сервисам обращаются (например, к СУБД) и, иногда, какие volume у них нужно сделать persistent.