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

Доброе утро. Недавно изучал пример от майкрософт, eshop on containers.

Это пример event driven архитектуры. И я заметил что в тестах для каждого микросервиса используются одинаковые классы для реализации авторизации. И они дублируются для каждого проекта тестов. Сделал PR на удаление этих дублей, но мне сказали что в микросервисной архитектуре такая реализация это норма, чтобы не делать лишних связей между проектами. И вот я не понимаю, а почему? Почему лучше задублировать код, а не сделать референс на другой проект, где такой код есть?

16 ответов

24 просмотра

Потому что микросервисы не должны зависеть друг от друга, чтоб их независимо можно было вести А Вы куда код вынесли дублирующий?

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

CountNeuroman- Автор вопроса
Michael Snytko
в тестах для каждого микросервиса

Ну ок, тогда нужно тащить с собой отдельную зависимость только для тестов

CountNeuroman- Автор вопроса
Oleg Safonov
Ну ок, тогда нужно тащить с собой отдельную зависи...

Вот там вроде такая и была, я собственно там оставил, в остальных удалил

Artem iokir
Дублирование кода - дело заведомо плохое, хотя бы ...

Есть другая сторона. Когда раньше времени выносишь, а потом одному нужно правки внести, а другому нет

Oleg Safonov
Ну ок, тогда нужно тащить с собой отдельную зависи...

Зависимость - интерфейс, который: 1) Гораздо проще таскать с собой 2) Можно соблюдать обратную совместимость и не делать брейкингов, тогда это вообще не проблема

Oleg Safonov
Есть другая сторона. Когда раньше времени выносишь...

Тут важен изначально правильно описаный контракт взаимодействия между сервисами

Artem iokir
Зависимость - интерфейс, который: 1) Гораздо проще...

Согласен. Я против изначально "дублирование всегда плохо и нужно выносить" - нет, не всегда

CountNeuroman- Автор вопроса
Oleg Safonov
Согласен. Я против изначально "дублирование всегда...

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

Oleg Safonov
Согласен. Я против изначально "дублирование всегда...

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

CountNeuroman
Вот я вот в этом и хочу разобраться. Когда же лучш...

Есть правило, что два повтора норм, в три - уже повод задуматься Но, в первую очередь,головой думать))

CountNeuroman
Вот я вот в этом и хочу разобраться. Когда же лучш...

В случае с аутентификацией/авторизацией вынесение в отдельный сервис еще важно по причине централизованного управления ей. Даже на примере JWT токенов, тебе нужно уметь ими управлять. Даже тем же secret'om для вычисления сигнатуры

Artem iokir
В случае с аутентификацией/авторизацией вынесение ...

В разных микросервисах разная авторизация может быть)

Oleg Safonov
В разных микросервисах разная авторизация может бы...

Согласен, зависит от кейса) Но аутентификация обычно одна)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
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
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта