( ^ИГ мВо ib 4. - W .dIHÜ Ч~ A ЁЯПг № ; j ! -Г sky л*' 3^ ■ Ж i р^5®вИИ| ¿лйии РЙЖЖ Шйймд шВ / Друзья (Сериал) :: it-юмор :: Сериалы :: geek (Прикольные гаджеты. Научный, инженерный и айтишный юмор)

it-юмор geek Друзья (Сериал) Сериалы 
( ^ИГ мВо ib	4.	
- W .dIHÜ Ч~	A	
ЁЯПг №	; j	! -Г sky
л*' 3^ ■ Ж i р^5®вИИ| ¿лйии РЙЖЖ Шйймд шВ		
дДСр]иТ»шо^|ít]^»у*1Й^И^ЯИ^И- л /jJ íJjüM¿A gH	Щц	i,it-юмор,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,Друзья (Сериал),Сериалы
Подробнее
( ^ИГ мВо ib 4. - W .dIHÜ Ч~ A ЁЯПг № ; j ! -Г sky л*' 3^ ■ Ж i р^5®вИИ| ¿лйии РЙЖЖ Шйймд шВ дДСр]иТ»шо^|ít]^»у*1Й^И^ЯИ^И- л /jJ íJjüM¿A gH Щц i
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,Друзья (Сериал),Сериалы
Еще на тему
Развернуть

Отличный комментарий!

За монолит!
Индеец Индеец30.09.202320:20ссылка
+33.4
одно другому не мешает как бы )
imhosep imhosep 30.09.202319:41 ответить ссылка 3.2
Кубер монолиту лучше точно не сделает, а вот помешать вполне сможет
ktulhu74 ktulhu74 30.09.202319:54 ответить ссылка -2.5
ну блин это две разные сущности. сравнение хуя с пальцем.
да и если у тебя уже есть настроенный кубер с мониторингом и прочей херней, то запуск в нем монолита потенциально будет полезен - уберет определенную головную боль
Любая инит-система (типа системд) делает для монолита ровно то же самое, что и кубер, только без лишней прокладки между приложением и ОС
imhosep прав. Способ запуска и архитектура приложения - разные вещи. И в кубере можно обеспечить горизонтальное масштабирование, в том числе и монолита, если приложение поддерживает безболезненный запуск нескольких экземпляров одновременно.
Во-первых монолит и горизонтальное масштабирование это вещи слабо совместимые и запуск такого это всегда костыли и нихуёвый оверхед, потому что ты масштабируешь сразу всё что есть в монолите, даже если он задыхается только на одном конкретном этапе, во-вторых что мешает несколько системд сервисов запустить?
Можно заскейлить на несколько компут, как вариант.
bp390 bp390 30.09.202322:42 ответить ссылка 1.0
Я непонел
В кубернетесе ты управляешь кластером. В кластере есть контролплейн (3-5 среверов на которых нет ворклоада, только инфра) и компуты (3-∞) серверов, на которых запущен ворклоад---поды, с компонентами програм, которые делают что-то полезное. Если у тебя монолит сидит в одной поде, и нагрузка на на него высокая, то единственный способ увеличить производительность---запустить еще одну его копию на другой компуте. Естественно, это работает только для того, что скейлится.
bp390 bp390 30.09.202322:58 ответить ссылка 0.6
Это называется воркер-ноды
Запускать несколько экземпляров можно и без кубера
Динамически включать и выключать монолиты это какое-то адовое извращение и я не хочу это обсуждать
Монолит---это просто нераспиленная на компоненты программа. Я за всю свою карьеру работал только с одним монолитом---Cisco NSO и он, в принципе, спокойно, пусть и с некоторыми оговорками жил в кубах. Что ты имеешь ввиду, когда говоришь "включать и выключать монолит"? Мб отдельный сервер? Так это рутинная задача, решается по разному, например EC2 Spot если у тебя все на амазоне, я чаще имею дело с bare-metal, поэтому для лайфсайклинга использую Ironic, раньше был MaaS.
bp390 bp390 30.09.202323:26 ответить ссылка -0.1
>Монолит---это просто нераспиленная на компоненты программа
Ага, я как-то видел хуйню, которая вендором поставляется сразу вместе с эластиком и запускает его прямо хардкодом из жавы, жить в кубах оно может, это понятно, ничего этому не мешает, как я сказал выше - профита от этого нету, а минусы могут быть, например я од одного дба слышал, что посгря в контейнере чуть ли не в 2 раза медленней

>Что ты имеешь ввиду, когда говоришь "включать и выключать монолит"?
Я имею ввиду, что кубер умеет автоматически запускать и выключать нужные контейнеры при изменении нагрузки, так-то одна из главных причин его популярности
ktulhu74 ktulhu74 30.09.202323:37 ответить ссылка -0.1
> Я имею ввиду, что кубер умеет автоматически запускать и выключать нужные контейнеры при изменении нагрузки, так-то одна из главных причин его популярности

Поднимаемся на два поста выше и читаем:

> Динамически включать и выключать монолиты это какое-то адовое извращение и я не хочу это обсуждать

Можешь объяснить, как одно соотносится с другим?
bp390 bp390 30.09.202323:43 ответить ссылка -0.1
Эээ напрямую? Ну то есть динамически запускать и выключать монолиты в зависимости от нагрузки с помощью инструментов кубера это извращение
ktulhu74 ktulhu74 30.09.202323:46 ответить ссылка -0.1
А чем это отличается от автоматического включения-выключения, например, небольшого куска бекенда?
bp390 bp390 30.09.202323:51 ответить ссылка -0.1
Тем что у тебя уже есть инструменты для этого и не надо писать это самому, плюс разные плюшки с обëрткой типа автодискавери и сетевых политик на основе лейблов кубер-объектов, но это всё имеет смысл только для микросервисов
Какие из этих инструментов по-твоему не подходят для монолита?
Монолит в кубах сидит в точно таком же поде, как и микросервис.
bp390 bp390 01.10.202311:20 ответить ссылка 0.0
Блять, я уже несколько раз сказал, что монолит работает в кубере, но не получает профит от этого, и кубер-инструменты ему не нужны аж все, потому что кубер сделан специально чтобы гонять микросервисы, а монолит сам внутри себя это делает, у него вместо микросервисов внутренние сабпроцессы, если ты его горизонтально скалируешь, то получается либо пиздец с адовым оверхэдом, либо распиливание на микросервисы
Так инструментнов нет, или их надо писать, или они не нужны, или их использование---это извращение? Можешь, пожалуйста, привести свою мысль к общему знаменателю?
bp390 bp390 01.10.202314:09 ответить ссылка 0.0
Да и так всё приведено, для микросервисов есть кубер, для монолитов пишутся свои и куберовские не нужны
С самого начала было очевидно, что ты считаешь, что монолитным приложениям не место в кубернетисе. Вопросы касались того, на основании чего ты так считаешь и на какие факты опираешься.
bp390 bp390 01.10.202316:05 ответить ссылка 0.0
И я эти основания описал где-то там в верху, сделай поиск по слову "оверхэд"
ktulhu74 ktulhu74 01.10.202316:58 ответить ссылка -1.0
И все? То есть, небольшой прирост по расходуемым ресурсам ты считаешь достаточным основанием?
bp390 bp390 01.10.202317:36 ответить ссылка -1.8
Блять, ладно, я уже задолбался как попугай одно и то же повторять, ты либо читаешь жопой, либо троллишь тупостью, в любом случае - иди нахуй мудила
ktulhu74 ktulhu74 01.10.202317:45 ответить ссылка -1.0
За монолит!
как же чел раскрутился с тех времен (crymory)
Не чокаясь!
Что такое монолит в данном контексте?
velikain velikain 30.09.202320:44 ответить ссылка 0.3
Crisis Crisis 30.09.202320:47 ответить ссылка 4.2
Приложение/продукт сделанное "одним цельным куском"
Делать проект одним большим куском. Кубернетс - приблуда для компоновки отдельньіх кусков-кирпичиков проекта. При монолите он не нужен (на самом деле нужен, так как всегда на монолит потом чегото навешивают)
Так стали называть классические серверы после того, как в моду вошли микросервисы. Микросервисы это зоопарк разных сервисов, которые друг с другом общаются по сети. Чтобы их всех поднимать или обновлять, нужен специальный "оркестратор", который бы следил за ними и спавнил или гасил по необходимости. Ебала та еще, так что требует отдельной роли "девопс".
e38m4 e38m4 30.09.202321:40 ответить ссылка 0.6

Тоже самое что и мейнфрейм по сравнению с сотней инстансов в облаке.

just_w just_w 30.09.202322:18 ответить ссылка 0.0
Монолит---это подход при котором приложение не разделяется на независимые компоненты и взаимодействие между ними. В современной айтишке сейчас это сохранилось в нескольких изолировнных направлениях, все остальное пилится на микросервисы, потому что так 9 матерей могут родить ребенка за месяц---после того, как архитекты запилят логику, несколько независимых команд параллельно педалят каждый свои сервисы. И можно запилить готового к продаже энтерпрайсного франкейштейна за три спринта.
bp390 bp390 30.09.202322:39 ответить ссылка 0.3
А ещё это даёт более предсказуемый результат. Поскольку контракты на обмен данными строгие, то изменения внутри модуля не трогают остального проекта. И всё это достаточно хорошо тестируется. А вот в монолите, в плохом случае, со временем могут начать вытекать новые правки, которые могут неявным образом повлиять на пятый мизинец третьей ноги на второй жопе, отчего там начинается на ровном месте фантомная боль, будто на лего наступил.
Читал на хабре, что многие кто успел много поработать с микросервисной архитектурой пришли к выводу, что их не стоит пихать во все проекты и первое что нужно сделать при согласовании проекта это определить - монолит ли тут будет лучше или микросервисы. То есть, монолит вполне имеет сеье место быть и надо уметь работать с ним, а не отказываться полностью. Видел картинки где связи между микросервисами настолько запутанные, что нужен новый инструмент, поисковая система чтобы ориентироваться в них (картинка в статьях была другая, но эта думаю тоже подойдет для наглядности)
А иногда микросервисы просто не подходят по лейтенси. И хотелось бы сделать красиво и распилить на сервисы, но у тебя предел времени обработки месседжа 900 наносекунд...
Микросервисы можно не объединять в такую паутину, а общаться через общую шину в виде какой-нибудь кафки. Тогда таких страхіть как на картинке не будет
А у кафки какой предел?
Кафка это pub-sub система, количество подписывающихся (консьюмеров) или публикующих (продьюсеры) сервисов может быть условно каким угодно (там есть своя специфика конфигурации, но даже в самой примитивной конфигурации топиков, можно повесить тысячи консьюмеров на топик, а продьюсеры кажется не ограничены, лимит только на throughput. Если делать по нормальному - то каждый сервис будет иметь свой топик, тогда кол-во сервисов вообще будет не ограничено - но тут придется помудрить с месседжингом все-таки)

Если же говорить о пропускной способности - confluent kafka например гарантирует пропускную способность до 1Гб/сек, если не писать в кафку бинарные файлы, а использовать ее только для метаданных, то этого хватит для своего нетфликса, скорее всего.
Про кафку и хайлоад честно мало что знаю, но тебе не кажется что система все таки немного сильно усложнилась в итоге? От этого никуда не деться или все таки можно было этого избежать, выбрав другую архитектуру?
Кафка конечно хорошо подходит для хайлоада, но я бы даже не-хайлоад систему, которая уже становится настолько запутанной как на картинке выше, переводил бы на простую интеграцию с кафкой.

Сейчас опишу вкратцу, а ты скажи кажется ли это усложнением, а то я со своей проф. деформацией могу не заметить что это сложнее чем паутина сервисов и сверху еще и оркестрация.

* Один топик, из которого читают все консьюмеры (сервисы).
* Унифицированный меседж, с возможнотсью передавать кастомный пейлоад (чтобы сервисы могли свои app-specific данные передавать).
* Меседж включает тип, по которому каждый консьюмер фильтрует его/не его меседж.

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

Единственное что при этом слегка взрывает голову по сравнению с традиционной сервисной архитектурой - это то что система по сути становится асинхронной (хотя и это обходится, правда лучше просто начать интегрироваться с такой системой асинхронно, чем писать обходные пути)
Ах да, забыл упомянуть самое главное преимущество: при таком подходе почти невозможно завалить сервисы спайк-нагрузкой (back-pressure control) . Такая опасность бывает даже не при хайлоаде. При pub-sub же каждый сервис обрабатывает ровно столько месседжей сколько может, остальные ждут в очереди. Если вдруг происходит спайк-нагрузка, очередь чуть чуть увеличится до тех пор пока нагрузка не уменьшится, а затем сервера прожуют оставшиеся месседжи.

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

В целом, если приложение большое, то так или иначе, там будут архитектурные задачи которые нужно решать более сложными подходами, вне зависимости от того, монолит это или микросервисы
В общем,
Почему Рим пал?
Я рад, что ты спросил
Плюс минус остаётся тоже самое. Кроме того что появляется кафка.
Просто логика частично выносится из кода на уровень выше - уровень взаимодействия микросервисов.
А какая разница? Кафка даст возможность копить и не терять сообщения.
Но сложность от этого никуда не делась. Как хуева туча микросервисов общалась друг с другом, так и общается. Только теперь через кафку.
граф зависимостей в монолите выглядит обычно страшнее
Я читал "Чистую архитектуру" Мартина, и он учит, что первым делом нужно проектировать архитектуру, а на монолите она будет или на микросервисах, нужно определять в последнюю очередь. Связи между компонентами что там, что там будут с одинаковыми контрактами, вот эти контракты и нужно определять в первую очередь.
Ну и ещё кто-то из классиков стратегии (кажется, Сун-цзы) сказал, что равные позиции преобразуются в равные, поэтому ад зависимостей между классами в монолите превращается в ад зависимостей между микросервисами.
Ну насчет "Дяди Боба" в целом тоже многие спорят, типо да, можно и нужно все делать красиво, но все равно по многим причинам иногда придется делать что то буквально из гавна и палок лишь бы это работало как надо
bp390 bp390 30.09.202320:50 ответить ссылка 7.6
Начинать надо с арматуры и опалубки
3-tier архитектура, SOLID, DRY, KISS, YAGNI, сервисы, юнит-тесты (TDD) и codereview/куалити-гейты на CI/CD.

PS. "Дяденьки, я ведь не настоящий сварщик, я только сварочную маску нашел"(c)
avguard avguard 01.10.202301:43 ответить ссылка 0.5
То что раньше жило в одном месте, теперь делят на десяток мест. То что передавалось внутри памяти, теперь сериализуется и гоняется по сети. Процессы раньше управлялись ОС-ю внутри одной машины, теперь нужен кубернетес чтобы морочить десять машин. Кафку выдают за что-то новое (pub-sub схема была еще наверное лет 40 назад). Я решительно не вижу прогресса, лишь новые базз-ворды.
roddyb roddyb 01.10.202308:26 ответить ссылка -1.6
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
Прочитать Прочитать Документацию ДокументациюFriends S08E02 21:04 Friends S08E02 21:07стоит 4500р Вам не хватит 1 упаковки V на месяц лечения
подробнее»

лечение таблетки Друзья (Сериал) Сериалы

стоит 4500р Вам не хватит 1 упаковки V на месяц лечения