170 похожих чатов

Ребята, как проще всего хранить микросервисы в рамках проекта? Сейчас выбрали

вариант хранения все в одной репе, чтобы удобнее было деплоить, фиксы делать, прото файлы юзать и т.п. (помню на GolnagConf 2019 говрили это самый норм вариант) Но что-то подсказывает что это супер костыль, но и отдельно хранить каждый микросервис в отдельной репе радости не приносит.

12 ответов

17 просмотров
Nikita-Krasnikov Автор вопроса

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

Nikita Krasnikov
Да я знаю про эти варианты, но хочется услышать пл...

“избавиться от дублирующего кода” обычно означает “сделать такую жесткую связность, что развивать проект станет невозможно”

Nikita-Krasnikov Автор вопроса

С отдельными репа и есть проблема соблюдение версий? По факту если я обновлю какой-то общий пакет мне придётся по всем микросервисами лезть и обновлять его

Nikita Krasnikov
Да я знаю про эти варианты, но хочется услышать пл...

монорепа и связность - это параллельные понятия,даже если храните код в монорепе, нельзя просто делать импорт из соседней папки

Nikita Krasnikov
С отдельными репа и есть проблема соблюдение верси...

если у вас так все устроено - у вас не микросервисы, а распределенный монолит

Nikita-Krasnikov Автор вопроса
Daniel Podolsky
если у вас так все устроено - у вас не микросервис...

Ок, а как тогда выносить общие пакеты типа мидлварей, оберток на трейсинг и т.п Придётся все это дублировать в каждом микросервис?

Nikita Krasnikov
Ок, а как тогда выносить общие пакеты типа мидлвар...

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

Nikita-Krasnikov Автор вопроса
Daniel Podolsky
выносить, но вычищать из них всю бизнес-логику. т...

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

Nikita-Krasnikov Автор вопроса

Вот такая ситуация крайне меня огорчает, именно поэтому мы решили все в мнорепу складывать

Nikita Krasnikov
Вот такая ситуация крайне меня огорчает, именно по...

а как монорепа исправит ситуацию? у вас все еще 3 сервиса, и они все еще зависят от разных версий библиотеки

Nikita-Krasnikov Автор вопроса
Daniel Podolsky
а как монорепа исправит ситуацию? у вас все еще 3...

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

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта