tgoop.com/dev_easy_notes/253
Last Update:
Теперь вернемся к набросам на пост про CLI. Самый интересный коммент был про то, что docker с jar можно сделать мелким и вообще jdk образы довольно минималистичные. Я пошел в docker, не поленился и скачал три образа: jdk, go и python. Скачал самые дефолтные образы, я не стал погружаться в то, на чем они основаны, вероятнее на каком-нибудь дистрибьюторе вроде ubuntu, который помимо нужных вещей, тянет за собой еще кучу всякого дерьма.
Оказалось что да, jdk самый минималистичный образ из всей троицы, тут вы меня уели ничего не скажешь: jdk – 500mb, python – 875mb, go – 850mb. Однако, и у go и у python есть alpine версия образа, т.е образ базирующийся на легковесном дистрибутиве, чтобы точно не тащить ничего лишнего. И вот тут уже go и python весят по 100mb от силы. Официальной alpine версии образа для jdk нет, так же как и нет jre версии (начиная с 11 java) в которой был бы только runtime – увы и ах.
Разумеется можно сделать свой образ, в котором не будет ничего лишнего, но вы точно уверены, что сделаете все правильно и готовы потратить на это силы? То же самое можно сказать про оперативку и ресурсы. Конечно можно оптимизировать java по памяти, но и блоху подковать можно, вопрос в том, нужно ли на это силы тратить?
Помимо этого, я все же говорю про CLI в рамках работы на CI, причем речь идет о CI для мобилок. Вот тут вообще начинаются преколы, когда узнаешь что на iOS Job гоняются не на виртуалках, а на реальных конкретных apple устройствах. И не факт, что там вообще jre есть, а вот python там будет 100%. Ну тут еще есть фактор, что когда iOS разработчики слышат сочетание букв JVM у них пена из рта начинает идти.
Касательно косяков с либами в CLI написанном на python это да, больновато. Тут go и правда выглядит более привлекательным, если CLI будет запускаться на разных устройствах у клиентов. Однако если CLI будет запускаться только на CI как часть какой-то автоматизации, то тут вы полностью контролируете все пакеты через docker образ, тем самым нивелируя эту проблему.
BY Dev Easy Notes
Share with your friend now:
tgoop.com/dev_easy_notes/253