Size: a a a

Software Design/Architecture/Zen

2020 October 21

SP

Sergey Protko in Software Design/Architecture/Zen
раз ты собираешься работать по принципу request/response
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Sergey Protko
раз ты собираешься работать по принципу request/response
от реквест-респонса то я никуда не денусь
источник

SP

Sergey Protko in Software Design/Architecture/Zen
что до "хотим ли мы CQRS" - это имеет смысл тянуть когда у тебя колаборация есть, когда есть сущность/процесс и там есть конкурентный операции с данными (гонки)
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
на уровне всего приложения
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
от реквест-респонса то я никуда не денусь
ну вообще есть еще варианты но пока рано наверное)
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
Сергей Предводителев
от реквест-респонса то я никуда не денусь
ну тогда ты можешь его свести только в HTTP контроллерам
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
т.е. когда у тебя только самый верхний уровень будет "дожидаться" рид моделей или ошибок от комманды
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
Sergey Protko
в хэндлере уже поздно
хочу уточнить, почему поздно?

Чтобы в контроллере мы могли создать событие о создании с нужным id, которое попадет в сагу и она с этим id отправит одну или несколько комманд?
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
например у меня точно так же. фронты не хотят ничего слышать давай им HTTP респонс с полной датаструктурой.  поэтому я просто делаю await() в роутах.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
изменение имени юзера - тут нет колаборации.

$user = $repo->loadUser($id);
$user->changeName($newName);
$this->commit();
источник

RS

Roman Shandur in Software Design/Architecture/Zen
Sergey Protko
что до "хотим ли мы CQRS" - это имеет смысл тянуть когда у тебя колаборация есть, когда есть сущность/процесс и там есть конкурентный операции с данными (гонки)
Могли бы вы слегка подробнее про коллаборацию и гонки с данным? Не совсем пойму, к чему тут конкуретный доступ к данным 😕
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Максим Федоров
хочу уточнить, почему поздно?

Чтобы в контроллере мы могли создать событие о создании с нужным id, которое попадет в сагу и она с этим id отправит одну или несколько комманд?
что бы не создавать зависимости порядка выполнения - нам не должно быть важно когда мы создадим пост грубо говоря.
источник

RS

Roman Shandur in Software Design/Architecture/Zen
Anton Lakotka
например у меня точно так же. фронты не хотят ничего слышать давай им HTTP респонс с полной датаструктурой.  поэтому я просто делаю await() в роутах.
command / reply?
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
Roman Shandur
command / reply?
не совсем comman / reply.
там я подписываются на QueryBus и жду определенную рид модельку (или несколько) и потом им возвращаю.

хотя по-сути они могли бы сами это делать, но они так не умеют 🙂
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
Anton Lakotka
например у меня точно так же. фронты не хотят ничего слышать давай им HTTP респонс с полной датаструктурой.  поэтому я просто делаю await() в роутах.
когда решил всякие CQRS делать без бизнеса
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
Максим Федоров
когда решил всякие CQRS делать без бизнеса
не совсем
источник

AL

Anton Lakotka in Software Design/Architecture/Zen
CQRS это не про бизнес или нет.
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
Anton Lakotka
CQRS это не про бизнес или нет.
я и не говорю, что это про бизнес 🙂
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Sergey Protko
давайте сразу условимся - мы CQRS хотим или мы хотим транзакционные скрипты в хэндлерах?
Свидетели CQRS))
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Roman Shandur
Могли бы вы слегка подробнее про коллаборацию и гонки с данным? Не совсем пойму, к чему тут конкуретный доступ к данным 😕
ну смотри, если нет конкурентных запросов на изменение стэйта системы то и проблемы сделать update в базе нет. Для таких задач подходит любой подход даже уровня "а давайте мы перед базой просто postgrest поставим" - тут чем проще тем лучше. Достали поменяли сохранили.

Если же возникают гонки то гонки надо как-то разруливать. Ты положил товар в карзину и в это же время товар сняли с продажи. Что делать? Тут надо с бизнесом разбираться, делать разделение на операции и т.д. Можно конечно "по старинке локи выставить и транзакции фэйлить" но это может пагубно сказаться на масштабировании системы.

То есть CQRS нам даже не всегда нужен когда есть колаборация, а скорее когда вероятность конфликтов действий людей очень высокая.

Иначе мы просто оверинженерим потому что писать круды скучно
источник