LINUX.ORG.RU
ФорумAdmin

Развёртывание в суровый научный продакшн

 ,


0

4

(Ломоносовы наших дней, как сказать production по-русски?)

У нашей лаборатории есть сервер. Когда-то его брали, чтобы запустить на нём веб-интерфейс для научного кода, разработанного в нашей же исследовательской группе. Код написан в «лучших» традициях научного программирования, для работы требует FFTW и BLAS, а также базу данных MySQL со строго определённым содержимым. Веб-интерфейс сделан на Perl5, всё это более-менее хорошо работает.

Прошло время. Обстоятельства потребовали разместить на этом же сервере: NextCloud, ещё научный код (Python3, 1,3-гигабайтное виртуальное окружение), MediaWiki для другой исследовательской группы, а сейчас ещё и статический сайт для третьей исследовательской группы.

NextCloud из архива, как ни странно, есть не просит (но им почти не пользуются) и даже может сам себя обновлять без особых проблем. Научный код активно сопротивляется попыткам его опакетить и поэтому живёт прямо в системах контроля версий. (Было хуже. Когда мы начинали, научный код жил в виде папки на общем диске.) Он даже работает в двух экземплярах на разных поддоменах, один - для обкатки новых функций, другой - стабильная версия для всего мира. MediaWiki не простая, а семантическая, поэтому в дистрибутивную копию MW пришлось распаковать zip-архивы с расширениями. Коллегам со статическим сайтом нужен доступ по SFTP, чтобы сайт изредка редактировать. Всему этому нужны свои файлы конфигурации для nginx.

Как это всё разворачивать, чтобы ничего не забыть и не сойти с ума? Читал про Ansible, cdist, Chef, CFEngine, Puppet, но это скорее про организацию целой кучи машин; некоторые из них запускают специальный сервер обновления конфигурации. Для нашего одного VPS это из пушки по воробьям. Мне проще и безопаснее подключиться по SSH с аутентификацией по ключу, чем разбираться, как обезопасить ещё один сервер.

Сейчас всё сделано через пачку sh-скриптов общей длиной менее 500 строк кода, аккуратно написанных так, чтобы они были идемпотентными. Если что-то падает, безопасно исправить ошибку и перезапустить скрипт с самого начала. Чтобы убедиться, что скрипты работоспособны, почти все изменения в состояния сервера я сначала вношу в скрипт, а потом запускаю скрипт, чтобы их применить.

Но сложность скриптов только растёт, и там уже происходит очень много всего: пользователей создать, файлы распаковать, конфигурацию подложить, базу создать, права раздать, сертификаты получить. Как сделать систему, которую, если что, сможет поддерживать другой человек?

★★★★★
Ответ на: комментарий от Obezyan

Причем тут документация? Она в любом случае должна быть. Я про то, что не надо коллег заставлять лишнюю и бессмысленную работу делать просто из-за лени написать Dockerfile.

adn ★★★★
()
Ответ на: комментарий от Obezyan

Да отстань уже от докера. Он не исправит проблемы с отсутствием документации, денег и секса. Все что он может сделать - сэкономить время и трудозатраты развертывания.

adn ★★★★
()
Ответ на: комментарий от adn

Да отстань уже от докера. Он не исправит проблемы с отсутствием документации, денег и секса

Именно эту мысль я и пытаюсь донести всем советующим докер в этой теме - он тут не поможет, оставьте его в покое.

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

Obezyan
()
Ответ на: комментарий от Obezyan

проблема с документацией - отсутствие(или есть какие прогрессивные МЕТОДОЛОГИИ(тм)?!) автоматической когерентности между кодом и доками к ВЕЩЕ инструкцией к исполнению которой выступает код.

из нонешнего литературного

есть marimo.Io но пока далеко от повсеместности и общепризнаности

jupiter notebook забавное отклонение от исходного кнутовского ибо отсутствие повторимости оказалось причиной популярности среди этих таких учённых

qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 1)
Ответ на: комментарий от Obezyan

я и пытаюсь донести всем советующим докер в этой теме - он тут не поможет

Еще раз. Он очень сильно поможет в развертывании и эксплуатации. Но он не сделает рефакторинг и не напишет документацию.

Похоже, что я угадал, и вы таки девопс.

Да (точнее SRE), но я этого никогда не скрывал.

Меня больше интересует кто ты такой. Сеньор программист не умеющий в логику и не умеющий разобраться с ответами в диалоге это что-то новое для меня.

adn ★★★★
()
Ответ на: комментарий от Obezyan

Потому что документацию никто писать не будет. Или будет, но быстро забьёт. В таких условиях реально лучше один раз написать автоматику сборки и развёртывания, чем надеяться, что кто-то там не забудет описать где-то в мифической доке какой-то ЕНВ, который добавил в виде костыля и потом забыл его убрать или решил, что пусть будет.

Zhbert ★★★★★
()
Ответ на: комментарий от adn

Сеньор программист не умеющий в логику и не умеющий разобраться с ответами в диалоге это что-то новое для меня.

Ну ты ЛОРе, бро. Сейчас еще придёт какой-нибудь @firkax и будет просто неистово швыряться какашками в докер просто потому, что «докер не нужен».

Zhbert ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Да. Но есть нюанс: это всё теперь уже мнее распространено, чем докер и кубы. Поэтому когда помрет предыдущий автор всего зоопарка (ну ладно ладно, не помрёт, а уйдёт, я по старой памяти с НИИ), новый с докерами и прочим вкатится гораздо быстрее, чем с чрутами.

Zhbert ★★★★★
()
Ответ на: комментарий от qulinxao3

отсутствие(или есть какие прогрессивные МЕТОДОЛОГИИ(тм)?!) автоматической когерентности между кодом и доками к ВЕЩЕ инструкцией к исполнению которой выступает код.

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

adn ★★★★
()
Ответ на: комментарий от Zhbert

Ладно, убедил. @firkax, @Obezyan еще раз задача: Есть сервер на котором:

  1. mysql
  2. nextcloud
  3. mediawiki
  4. python3 (jupyter?)
  5. nginx
  6. sftp
  7. софтина которая использует библиотеки fftw и blas и имеет web интерфейс написанный на perl (в двух экземплярах: боевой и тестовый) и постоянно дописывается

Задачи: развернуть, обновить, пользователей создать, файлы распаковать, конфигурацию подложить, базу создать, права раздать, сертификаты получить + автоматический рестарт в случае падения.

Как будете это делать без систем оркестрации и контейнеров? Очень интересно послушать. И как оцениваете время, которое будет потрачено для развертывания и время на сопровождение/эксплуатацию?

adn ★★★★
()
Ответ на: комментарий от adn

или есть какие прогрессивные МЕТОДОЛОГИИ(тм)?!

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

adn ★★★★
()

короткий ответ: как угдоно.

понятно, что уже набежала куча людей, каждый из которых кричит, что его инструментарий самый кошерный, однако это всё не имеет никакого отношения к «если что, сможет поддерживать другой человек». как бы вы не придумали, почти наверняка «другой человек» не врубится во всё это с ходу, и ему понадобится время на разобраться. а если понадобится - не всё ли равно на чём и как оно там реализовано?

flant ★★★★
()
Ответ на: комментарий от adn

Еще раз. Он очень сильно поможет в развертывании и эксплуатации. Но он не сделает рефакторинг и не напишет документацию.

Тогда зачем вы его советуете если он не решает проблему? Это риторический вопрос - вы просто не знаете ничего другого.

Да (точнее SRE), но я этого никогда не скрывал.

Не обижайтесь, но на букву E из аббревиатуры вы пока не тянете. Инженер бы вчитался в условия задачи. На этом можно закончить нашу дискуссию.

Меня больше интересует кто ты такой.

Обезьян, после прихода которого на проект SRE обычно оказываются на улице, за ненадобностью.

Сеньор программист не умеющий в логику и не умеющий разобраться с ответами в диалоге это что-то новое для меня.

Но это вы нарушили логику с самого начала не поняв написанное в опппосте и поспешил сунуть докер. Не вам размышлять о логике, кек.

Obezyan
()
Ответ на: комментарий от Zhbert

Учёным не привыкать писать документацию. Или вы тоже просто примеряете задачу на свои реалии без контекста описанного автором темы?

Мои мартышки не учёные, но и доки и тесты они пишут.

Obezyan
()
Ответ на: комментарий от adn

И документацию должен человек писать

У меня документацию к API пишет нейронная сеть, причём пишет сразу в формате openAPI 3, в виде комментариев перед функциями, после чего документация автоматически обновляется в swagger и разработчики всегда имеют последнюю версию доков по тому что крутиться на проде.

Obezyan
()
Ответ на: комментарий от adn

Нет, задача: Как это всё разворачивать, чтобы ничего не забыть и не сойти с ума?

Так её обозначил автор темы. Вы увидели только разворачивать и совершенно пропустили не забыть.

Чтобы не забыть нужно записывать. Вы же буквально предлагаете «не знать».

Эх, девопсы, девопсики. Тупиковая ветвь развития.

Obezyan
()
Ответ на: комментарий от Obezyan

Но это вы нарушили логику с самого начала не поняв написанное в опппосте и поспешил сунуть докер. Не вам размышлять о логике, кек.

Знаешь, что самое смешное? Я не предлагал docker. Я предложил jenkins. Потому что прямо сейчас у TC все развернуто и работает. Путь к контейнерам и нормальной системе оркестрации на боевом продакшн сервере - это достаточно трудоемкая и длительная задача, которая не решается «за вечер».

adn ★★★★
()
Ответ на: комментарий от adn

Знаешь, что самое смешное? Я не предлагал docker. Я предложил jenkins.

И следующим постом начали писать про докер: Развёртывание в суровый научный продакшн (комментарий)

Нага с вами дискуссия берет начало именно из этого ответа, а не из ответа про jenkins. Вы уже пытаетесь юлить, но с Обезьян ом это не работает. Вы сейчас не со мной, вы сейчас с логикой дискутируете, буквально.

Но это ЛОР, потому - тем хуже для логики.

Obezyan
()
Ответ на: комментарий от Obezyan

Тогда зачем вы его советуете если он не решает проблему? Это риторический вопрос - вы просто не знаете ничего другого.

дядька, признайся: ты шизофреник? я три раза написал зачем нужны контейнеры и даже в том тексте который ты цитируешь? Хотя для человека, не способного написать документацию без нейросети это наверное очень сложно. Клиповое мышление, все дела. Не удержать даже одну фразу в мозгу - только определенные слова-триггеры.

adn ★★★★
()
Ответ на: комментарий от adn

то есть ответа нет? правильно понимаю?

Вы пытаетесь перекрутить исходную задачу подогнав её под свои суждения и хоть как-то отпетлять. Вы серьёзно?

Впервые на арене, девопс пытается переиграть системного архитектора на его же поле. Никогда такого не было и вот опять.

На стороне девопса знание докера и эффект Даннинга-Крюгера, на стороне архитекта логика и 20 лет опыта. Я вам сейчас искренне улыбаюсь лёгкой улыбкой на губах.

Obezyan
()
Ответ на: комментарий от Obezyan

Нага с вами дискуссия берет начало именно из этого ответа, а не из ответа про jenkins.

вы шиз? твои слова: "Но это вы нарушили логику с самого начала не поняв написанное в опппосте и поспешил сунуть докер. "

adn ★★★★
()
Ответ на: комментарий от Zhbert

и будет просто неистово швыряться какашками в докер просто потому, что «докер не нужен

А он точно нужен? А нужен он в 2-ух случаях

  1. Запулить свое невпендюренное приложение в облако облачному провайдеру, который предоставляет возможность деплоя в контейнерах и этот вариант удобней и/или дешевле остальных.
  2. Если невпендюренное приложение есть куча дерьма и палок, собранная из куч стороннего дерьма и палок, запускающееся только на локалхосте у разраба, где все эти кучи дерьма и палок заботливо собраны. Вот тогда нужно аккуратно завернуть все эти кучи в контейнер, и уже этот контейнет таскать на проды.

Все. В остальных случая докер-лишнее. Когда мне предлагают (это бригады модных молодежных девопсов всегда) завернуть все в докер (или другой контейнер) (а некоторые сразу еще и в кубер все это нахлабучить предлагают), то сразу прошу назвать хоть одну причину, зачем это нужно. Блеяние про «стандарты индухстрии» и «все так делают» в качестве причин не принимаются, ибо это не причины, а тупой стандый инстинкт. Причин назвать никогда не могут, ни одну (но про стандарты индухстрии все-таки блеют очень яростно). Так вот и идут в прод компактные rpm-ки и deb-ки вместо ведра параши в виде контейнера.

slew
()
Ответ на: комментарий от adn

дядька, признайся: ты шизофреник? я три раза написал зачем нужны контейнеры и даже в том тексте который ты цитируешь?

Я говорил вам, что такое безумие? Безумие это повторение одного и того же действия, в надежде получить другой результат (с) далёкий крик

Напишите про докер в четвёртый раз, вдруг поможет :)

Obezyan
()
Ответ на: комментарий от Obezyan

Нет, я просто работал с научными людьми в научном институте. Поверь, там никто ничего не пишет, а как работает та или иная штука знает лишь её разработчик, сделавший это на коленке.

Zhbert ★★★★★
()
Ответ на: комментарий от adn

да блин

граммотное(литературное) программирования Кнута ( ща по факту воплощённое в юпитер нотебуках)

чисто как показатель насколько индустрия молода и железо всё ещё настолько не выжато что приход следующих поколений в индустрию просто рушит уровень - ибо а зачем если и так сойдёт

документация может выкомпилироваться из обьщего дерева проекта - тот же java-doc потуги в туда

отдельно тем более после сдачи проекта в эксплуатацию писать док это ритуал реальне чисто что бы боги менеджерья были довольны за соблюдение заповедей

по факту код и есть док - если это код а не блин патч на патче

qulinxao3 ★☆
()
Ответ на: комментарий от adn

Я написал что докер под данную задачу не подходит, вы возразили, я вам ответил.

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

А то мне эти девопсовские извивания уже наскучили. Нет динамики, кругами ходим, под сабатон.

Obezyan
()
Ответ на: комментарий от Obezyan

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

Ты шизофреник? Я везде писал что документация естественно нужна и докер ее не заменит.

adn ★★★★
()
Ответ на: комментарий от Obezyan

Повезло тебе, стало быть. Я в трёх НИИ видел такое. И искренне считаю, что именно так будет в большинстве случаев.

Zhbert ★★★★★
()
Последнее исправление: Zhbert (всего исправлений: 1)
Ответ на: комментарий от Obezyan

Я написал что докер под данную задачу не подходит, вы возразили, я вам ответил.

ответь как бы ты это сделал и будет предметный разговор, где можно будет сравнить и покритиковать разные реализации.

adn ★★★★
()
Ответ на: комментарий от Zhbert

Лично работал в двух КБ (это не НИИ, но все же), а также был в технической группе взаимодействия с европейским институтом (вот там учёные были). И там и там документация это база, даже отдельный сервер по документации был поднят.

Obezyan
()