Work.Дыбр - разгребая наследие ушедших
Jan. 26th, 2023 05:05 pmИ никогда, вы слышите, никогда не доверяйте web-разработчикам проектирование архитектуры промышленных систем!
Задачка - относительно простая система управления видеоконтентом для андроидных экранчиков. Архитектура - 6 виртуальных серверов на реальных IP (2 базы, бэк, storage, фронт, nginx-маршрутизатор) + CI/CD с гитлабом для всего этого великолепия. Декомпозиция по учебнику :)
Товарищ уволился три месяца назад, проект передали в мой отдел.
Сейчас понадобилось собрать standalone-машинку для мелкого пилота. Два человека охреневают от мощи архитектурного решения уже третий день, постепенно впихивая весь этот сон разума в одну операционку :)
Мораль: не переусложняйте.
P.S. Автор хотел написать систему, масштабируемую на 100500 клиентов. Но само приложение разработано так, что каждому клиенту нужен свой экземпляр системы. Sic.
Задачка - относительно простая система управления видеоконтентом для андроидных экранчиков. Архитектура - 6 виртуальных серверов на реальных IP (2 базы, бэк, storage, фронт, nginx-маршрутизатор) + CI/CD с гитлабом для всего этого великолепия. Декомпозиция по учебнику :)
Товарищ уволился три месяца назад, проект передали в мой отдел.
Сейчас понадобилось собрать standalone-машинку для мелкого пилота. Два человека охреневают от мощи архитектурного решения уже третий день, постепенно впихивая весь этот сон разума в одну операционку :)
Мораль: не переусложняйте.
P.S. Автор хотел написать систему, масштабируемую на 100500 клиентов. Но само приложение разработано так, что каждому клиенту нужен свой экземпляр системы. Sic.
:(
Date: 2023-01-26 02:35 pm (UTC)Блин, коллега, вот щщаз прям наотмашь и по живому врезали...
Я тут перед НГ в дружественном журнале уже плакался комментарием на подобную тему:
===
Нам сейчас усиленно впаривают одно ЭДО-подобное поделие отечественной(?) разработки... вот где адок-то самоходный на пердячем паре! :((
Начать с того, что базовая бизнес-модель у них — предоставление услуг ЭДО в своём "облаке" (да пребудет над всеми админами "безоблачное" небо во веки веков).
Когда мы возмутились, то они выкатили, мол, есть у нас и т.н."онпремизная" инсталляция... мля-а-а-аа, лучше бы я этого никогда не видел!
Эта "онпремизная" представляет из себя докер(!)-сборку, в контейнерах которой базируются компоненты системы.
Ладно, что докер, вроде, депрекейтед уже или вот-вот — меня это никогда не парило и в других вариантах софта. Но, сцуко, он же дырявый насквозь, "понятный" как клубок спагетти в плане конфигов (ага, устриц ел!), а самое главное — нахуа!
Ну сделайте вы апплайенсы — ща куда ни плюнь, на "физике" уже мало кто работает, даже у "малышей" (если это не хайлоад какой-то).
Нет, они запихнули в контейнеры докера:
— сам сервер приложения (ЭДО)
— БД PostgreSQL
— Nginx
— Zookeeper
— Kafka
При этом остаётся требование совместной работы этого поделия с их "облаком" (там ещё пяток "сервисов" вынесено), а так же:
------------------------------
Требования к окружению и инфраструктуре
1. С машины должен быть открыт доступ к адресам:
https://license.vendor.ru
https://docker.vendor.ru
https://host.vendor.ru
https://host2.vendor.ru
https://domain.ru
https://integration.ext_service.ru
https://ext_service.vendor.ru
2. Приложение должно принимать запросы на 443 порт, со следующих адресов
x.y.z.36-x.y.z.62/27
a.b.c.d
e.f.g.h
i.j.k.l
---
У меня волосы на жопе шеволятся от ужаса при чтении их "документации", вот честно.
Сцуко, когда — не если! — их "облако" подломят, я хз какая тварь от них заползёт ко мне в сеть через вот это вот всё.
И самое печальное, что лавка наша не очень большая (как говорится, "маленькая, да удаленькая") и ей эта хтонь будет сущим оверкиллом (причём во всех смыслах).
И я НЕ ХОЧУ админить и траблшутить это дерьмо, ну разве что за миллион мелкими купюрами и заправленный вертолёт. :)
фуф...
===
Вот как-то так.
С уважением.
no subject
Date: 2023-01-26 02:50 pm (UTC)Вот прямо очень понимаю. Очень.
У меня такое впечатление, что сейчас так народ учат, главное — не задачу решить в условиях ограничений, а продемонстрировать владение архитектурными паттернами. То, что паттерны были придуманы в помощь при решении определённых классов задач, людям в голову не приходит.
P.S. Встречал ещё у молодых программеров возмущённое "мы что, монолит разрабатывать будем?". Немодно же, сейчас никто такое не носит :)))
no subject
Date: 2023-01-26 08:08 pm (UTC)Не народ так учат, а просто разрабов стало больше и, соответственно, процент умных людей, понимающих зачем и отчего, снизился и они стали реже тебе попадаться.
no subject
Date: 2023-01-27 08:40 am (UTC)Прямо таки, классическое "Сумма разума на планете — величина постоянная. А население растёт" :)
Скорее всего, это издержки низкого порога вхождения в профессию по сравнению с тем, что было лет 20 назад.
RE: :(
Date: 2023-01-26 06:36 pm (UTC)Да, докер это такое. У нас когда-то была заведена сборка в джекнисе в докер контейнерах под полсотни разных дистрибутивов (с учетом версий). Вчера деплоили новый сервер, я за час там развернул полтора десятка lxc-контейнеров для тестов и поставил их под продакшн нагрузку. Потом коллега стал ставить докер. Поставил и ба-бах все мои конейнеры перестали по dhcp с внешнего сервера IP-адреса получать. НУ вот блин какое докеру до Lxc дело? У него свой бридж, у lxc- свой (вернее, мой, руками отсетапленный). Ан нет, надо насоздавать по умолчанию таких правил файрволла, чтобы никому другому на этой машине не жилось. Прям кукушонок какой-то в гнезде, а не софтина.
RE: :(
Date: 2023-01-26 08:06 pm (UTC)VK, что ли? :-)
Хммм...
Date: 2023-01-26 08:39 pm (UTC)В смысле? Не понял вопроса... :(
С недоумением.
RE: Хммм...
Date: 2023-01-26 08:49 pm (UTC)Я про название компании-производителя?
Впрочем, по ответу понял, что нет, не угадал. 8о)
?
Date: 2023-01-26 09:13 pm (UTC)У меня VK ассоциируется только с Втентакликом.
В контексте моего комментария — что это ЭДО — у мну вообще никак не смыкается Ваше предположение и моё истолкование оного. Где соцсеть и где ЭДОшка?
С уважением.
RE: ?
Date: 2023-01-27 08:38 am (UTC)Соцсеть, ориентированная на электронный документооборот, и другие кошмары :)
RE: ?
Date: 2023-01-27 10:43 am (UTC)https://www.syssoft.ru/VK-tech/vk-workspace/?ysclid=ldeebbpydl610707080
Хммм...
Date: 2023-01-27 02:58 pm (UTC)Поглядел — да, не соцсеть. Но и не ЭДО (так что непонятно, откуда возникла ассоциация моего исходного комментария с ними).
Ну, такое себе — таких "корпорашек-коммуникашек" ща "пучок пятачок" чуть ли не в каждой подворотне.
Не впечатлило. :)
С уважением.
no subject
Date: 2023-01-26 03:23 pm (UTC)А вот такие захардкоженные конструкции — это уже лет 5-7 назад было совсем не комильфо. Самый треш что мне попадался — десяток дроплетов на DigitalOcean, на каждом вручную запущенный докер, в каждом по одному (!) контейнеру, и в каждом контейнере айпишники и секреты прописанные вручную, разумеется. Типа двойное резервирование всего (зачем-то), зеркалящаяся mongo, но даже докер сам при перезагрузке не запускался, не говоря уж о контейнерах. Не говоря уж о процессах в контейнерах — node там падал быстро и фатально.
no subject
Date: 2023-01-26 03:35 pm (UTC)На самом деле, придумать архитектуру, которая нормально масштабируется вниз, не так просто. Я обычно два перетекающих друг в друга варианта прорабатываю — облачный "капучино" и автономный "эспрессо".
А в описанном случае контейнеризация тоже была бы избыточна, т.к. в приложении нет механизма балансировки нагрузки. Достаточно было раскидать сервисы по портам, а дальше хочешь — пакуй в докеры, хочешь — собирай всё на одной железке.
no subject
Date: 2023-01-26 03:46 pm (UTC)Ну и да, разумеется контейнеры и вообще микросервисная архитектура — вещь хитрая, и не всегда оптимальная. Подобные реализации — это обычно когда люди услышали про принцип где-то, но сути так и не поняли.
!
Date: 2023-01-26 04:13 pm (UTC)Вы правы.
Я тут первым комментарием обрыдался с подобного подхода — "все (и всё) по контейнерам!".
Так ладно описываемые упыри суют туда Кафки с Зукиперами — но и в более простых вещах такое чудят, что на голову не натянешь!
Вчерась завёл у себя в периметре "локальный/онпремизный "тимвьювер"" на базе РустДеска, так слегонца ошалел от документации по развёртыванию.
Там же, сцуко, два — ДВА, Карл! — модуля (сервер и релей), запускаемые с минимальными пар-рами шелл-скриптом посредством rc.local (ладно, можно залудить самопальный "сервис" для systemd, если уж так хочется).
Ан нет: дока по развёртыванию упоминает альт-решение с запуском через pm2 (который сам требует последнего nodejs). Вот что в головах у людей, а?
Так ещё и есть у них вариант с докером — они эту пиписечную поделку по контейнерам распихивают, прикиньте!
К слову — сам по себе продукт бомба.
Сегодня удалённо причинял пользу и наносил добро нашему удалёнщику из Еревана, сидящему на тухлом вайфае.
Начал с AnyDesk, но он чёта еле булькал, пришлось переползти на эту, пилотную, инсталляцию РустДеска.
Млин, небо и земля — легко, быстро, гладко, удобно.
С учётом того, что подключение шифрованное и идёт через мой локальный сервак на крохотной центосёвой виртуалке в периметре, ни о каком MiTM`e, даже потенциальном, речи не идёт, не говоря уже об "уходах с нашего рынка" всех этих тимвьюверов-энидесков (или вспышках их жадности, как у последнего недавно — с прикручиванием халявного использования).
Так что коллегам рекомендую присмотреться к RD — чёткое поделие.
С уважением.
RE: !
Date: 2023-01-26 04:24 pm (UTC)Ну мы-то по другую сторону "железного занавеса" сидим, от нас ничего не уходит.
По счастью нам и самим уходить ниоткуда не приходится, потому что никуда и не приходили (у нас нет on-premises инсталляций нашей платформы восточнее Саксонии).
Ну а нынешняя страсть к контейнерам и микросервизации везде где надо и не надо — это беда, да. Вторая, как по мне — неожиданное признание функционального программирования как спасения ото всех бед и анафема ооп (я и сам не сторонник марксизма в программировании, но это уж слишком, классы сами по себе — не зло, зло программисты на жабе и шарпах что плодят их без меры).
RE: !
Date: 2023-01-27 04:52 am (UTC)Классы — не зло. Классы — отсутствие добра (как Дьявол — отсутствие Бога).
Классы и экземпляры это слишком общая абстракция.
Хорошая абстракция имеет ограниченную область применимости и за счет этих ограничений позволяет какие-то эффективные оптимизации.
Вот, например реляционная алгебра.
Беда в том, что для того чтобы придумать хорошую абстракцию нужен гений уровня Кодда или Кнута. (впрочем, если абстракция должна работать не во всем мировм IT, то может и кто попроще сойдет навроде Пола Грэма. Но вот гений который придумал бы хорошую абстракцию для пользовательского интерфейса, хотя бы для распространенных частных случаев, до сих пор не нашелся).
Функциональное программирование кажется привлекательным потому что до сих пор, пока оно не было мейнстримом, с ним справлялись в основном люди с математическим бэкграундом, которые умеют придумывать абстракции. Но вообще -то функциональная парадигма сама по себе — тоже штука слишком общаяя, и когда вместо людей туда набегут дево-псы, будет то же, что и с ООП.
Re: !
Date: 2023-01-27 06:38 am (UTC)Re: !
Date: 2023-01-27 06:40 am (UTC)На мой взгляд, классы крайне неудачный инструмент для ШИРОКОГО пользования. Он дает ощутимые преимущества только при правильном ОО-дизайне. Что, конечно, проще чем придумать целый новый раздел математики, но тем не менее.
RE: Re: !
Date: 2023-01-27 08:35 am (UTC)Строго говоря, ЛЮБАЯ технология даёт преимущества только при грамотном её использовании :)
Применительно к ООП, разработка системы классов — основа дизайна программы, поскольку неверно выбранное решение влияет на весь код. Понимание того, какие прикладные классы нужны и нужны ли вообще (и можно обойтись только библиотечными) — показатель квалификации программиста. Ибо единственный универсальный инструмент — это мозг :)))
В тех же контейнерах принципиально нет ничего плохого, для ряда задач они ой как полезны и удобны, но надо понимать, когда как их готовить.
no subject
Date: 2023-01-26 06:38 pm (UTC)Беда в том, что веб-разработчик не думает, а применяет готовые шаблоны. Его так учили — сначала странички рисовать с помощью какой-нибудь template engine, потом клиент-сайд из готовых фреймворков собирать, ну и так далее.