Size: a a a

Software Design/Architecture/Zen

2021 June 24

AN

Alexander Nazarov in Software Design/Architecture/Zen
да центральная система. Не хотелось все это прокидывать, но видимо тут палка в двух концах.
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
ну не прокидывайте ходите в нее
или просто притазите часть той системы к себе и пусть она сама разбирается что и как ей делать
источник

AN

Alexander Nazarov in Software Design/Architecture/Zen
Сейчас проблема такая что на каждый запрос, сервис идет в эту центральную систему и проверяет:
1. токен валиден
2. права на действие есть
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Привет.
Подгружаю агрегат.
У агрегата есть бул поле isnew.
Если версия агрегата < 0 то isnew.
Конечно некоторые правила и методы предметной области не применимы к новому агрегату.
Поэтому в методе я вызываю проверку на New или не New.
Это не бизнес правило, поэтому это больше походит на спецификацию.

То есть
Void DoSomething()
{
Spec.isNewAgg(this)

CheckRule(Бизнес правило 1)
...
}

И теперь в большинстве методов весит какая то 'дебильная' спецификация - проверка на новый агрегат.
Как лечить?
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
что мешает передават все жто внутри токена и проверять его по публичному ключу например? Как самый лешкий вариант
источник

AN

Alexander Nazarov in Software Design/Architecture/Zen
Есть мысль, сделать все межсервисное общение, только через кролика. Типа если сервису А нужно что то в сервисе Б, то все это делается только через очередь, и консьюмеры не проверяют уже ничего на валидность, а сразу из очереди получают все что необходимо. Такое жизнеспособно?
источник

k

knopkod4v in Software Design/Architecture/Zen
звучит как какая-то закрытая сеть, только при помощи кролика 🤔
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Вообще идея такая себе когада одному сервису нужно что то в другом
А как они друг у друга получают дело десятое
С таким же успехом можно в изолированную сеть их загнать и все будет рабоать
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
Как всегда нужно больше деталей, особенно почему для нового агрегата что-то недоступно. Возможно у вас не один агрегат, а два. Один "новый", а второй "не новый". В какой-то момент (какой?) новый становится не новым(и вы буквально создаете новый объект, а старый убираете)
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
сделать два отдельнх новый и старый
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Приходит команда.
В команде id
Если такого потока не существует, то агрегат стор возвращает новый агрегат
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
А на языке бизнес-кейса что происходит?
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Создаётся новая заявка.
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
Когда новая заявка перестает быть таковой?
источник

AN

Allan Nettzan in Software Design/Architecture/Zen
Когда она скофигурирована.
источник

AN

Alexander Nazarov in Software Design/Architecture/Zen
В изолированной сети, мне ведь тоже нужно убедится что у сервиса А есть права на действия в сервисе Б. И мне все также необходимо идентифицировать запрос, что он именно от сервиса А а не от сервиса Д.
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
Возможно это два разных объекта: Новая Заявка и Сконфигурированная Заявка
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
зачем? Не очень понимаю если вы их всех  контролируете? Просто не отправляйте запросов из Д которых не должно быть
источник

AN

Alexander Nazarov in Software Design/Architecture/Zen
ну самый простой пример, мне надо понять кто последний изменил некую сущность в сервисе А. Это сделал сервис Б или сервис Д ?
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Ну добавьте в сузность кто ее менял
Опять же это какаято дичь клогда кто то левый приходит в сервис и что то в нем меняет
источник