Size: a a a

Software Design/Architecture/Zen

2021 July 28

NF

Nikita Fedorov in Software Design/Architecture/Zen
хотя нет, плохая диаграмма, щас ещё поищу
источник

NF

Nikita Fedorov in Software Design/Architecture/Zen
ладно, сложно нагуглить норм пример, суть: если у вас есть составные кейсы из других кейсов то вы вполне можете сделать составной кейс атомарным если это необходимо
источник

NF

Nikita Fedorov in Software Design/Architecture/Zen
транзакции не просто так могут быть вложенными)
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Спасибо. Основной вопрос в том, что сохранение агрегата - подразумевает одну транзакцию. Несколько кейсов = несколько сохранений агрегатов = несколько отдельных транзакций. Норм ли обернуть все это одной бд транзакцией поверх всех юзкейсов? Или я путаю транзакции в бд с какими то еще транзакциями, про которые говорят в контексте агрегатов?
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
Саги
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Это да, спасибо, но это когда ивенты я так понимаю и следить за ними и поддержание конечной согласованности. А у меня атомарная операция
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Но из нескольких юзкейсов
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
если тебе нужно ходить на 2 разных сервиса -- это не атомарная операция
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
Она может казаться атомарной на уровне клиента
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Ну они в рамках одного сервера. И мне надо выдать ошибку пользователю сразу.
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
так и задача сделать его атомарным)
источник

ДС

Дмитрий Солнцев... in Software Design/Architecture/Zen
Вопрос по построению схемы бд. Что считается лучше:
1. Определять “тип” юзера по полю “тип” в самой таблице юзера
2. Определять “тип” юзера по наличию соотвествующей связи. (Записи в соотвествующей таблице)

И как понять, по каким критериям выбирать дизайн.

user:
  id
  //Нужен ли тут userType?
company:
  id
  userId
  TIN
  someAnotherCompanyInfo
team:
  id
  userId
  typeOfActivity
  someAnotherTeamInfo
auth_email:
  id
  userId
  email
  password
  …
auth_phone:
  id
  userId
  phone
  …
auth_facebook:
  id
  userId
  facebookId
  …
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
Ок. это делается через саги энивей. Выглядит так:
1. Юзер кликает на кнопку
2. контроллер принимает запрос и запускает сагу
3. контроллер ждет событие завершения саги
4. контроллер отвечает http запросом что все ок или нет
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Не, конечно можно сделать сагу, конпенсацию - но если в этом смысл в такой задаче?
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
ты ж программист, а не мы)
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Ок, пусть это будет сага, но внутри нее можно обернуть транзакцией или делать именно конпенсационные действия и прочее?
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Я хочу послушать советы опытных :)
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
моя сага не про компенсационные действия, а про оркестрацию.
источник

ИЛ

Иван Лещёв in Software Design/Architecture/Zen
Я бы ставил юзерроли и от них плясал.
источник

ДС

Дмитрий Солнцев... in Software Design/Architecture/Zen
Типа сначала запрашиваем user и смотрим на userRole, а дальше делаем запрос к другой таблице уже?
Не является ли userRole дублированием? У нас уже уже есть связь и мы можем по ней понять role юзера
источник