Size: a a a

2021 September 09

MM

Maksim Masiukevich in symfony
я выделил)
источник

SP

Sergey Protko in symfony
"отправить письмо что не удалось зарезервировать билет" - это ж не совсем фэйл)
источник

SP

Sergey Protko in symfony
ну то есть процесс не остановится в неопределенном состоянии
источник

MM

Maksim Masiukevich in symfony
что ты вкладываешь в фейл?
источник

SP

Sergey Protko in symfony
то что не позволяет тебе на уровне UI делать предположения что все хорошо и можно идти дальше по флоу)
источник

MM

Maksim Masiukevich in symfony
а, тогда ушёл дальше в сумрак) мисандестендинг)
источник

SP

Sergey Protko in symfony
например флоу - заплати денежку и билетик твой. Операции типа холд денег и т.д. - это ж твои деньги - там нет конкаренси и т.д. и толку от CQRS там нет. Там можно подождать пока мы захолдим денежки. Ибо но мани но хани. А вот бронь можно уже сделать не дожидаясь подтверждения, потому что в 99% случаев все проходит хорошо а если что мы тебе деньги вернем. Главное не заставлять тебя ждать чего-то что бы ты не передумал покупать то говно которое тебе не нужно
источник

SP

Sergey Protko in symfony
если у тебя карточка привязана и проблем с оплатой никогда небыло - можно и оплаты не ждать
источник

SP

Sergey Protko in symfony
а если вдруг будут проблемы - попросить проверить карточку и повторить - это ж по сути тоже не фэйл, это просто нелинейно закинуть тебя в альтернативный флоу
источник

✨Basic_Instinct✨ in symfony
во оно как, т.е. гарантия выполнения 100%
источник

✨Basic_Instinct✨ in symfony
и даже не 99,99
источник

SP

Sergey Protko in symfony
ну тип не обязательно просто выполняется именно то что задумывалось. просто процесс должен быть полностью описан. А не "если шот пошло не так - ролбэк и ошибка, а значит пользователю надо ждать пока все пройдет что бы идти дальше"
источник

SP

Sergey Protko in symfony
потому и поинт основной - подход этот хорошо работает там где мы не хотим пользователей заставлять ждать и при этом не хотим проебывать их данные. Самый простой способ "заставить ждать и проебать данные" - это гонки (collaborative domain)
источник

✨Basic_Instinct✨ in symfony
ну потому комманды и не возвращают ничего
источник

SP

Sergey Protko in symfony
тип того, им нечего возвращать еще. Максимум идентификаторы которые помогут тебе потом слинковать все вместе
источник

SP

Sergey Protko in symfony
благо юиды можно генерить и без персиста в базу
источник

SP

Sergey Protko in symfony
но просто надо понимать что CQRS это дорого и юзать этот подход просто так - это бернить деньги. А в кейсах аля "профиль пользователя обновить" это просто тупо оверинжениринг.

Ну а "шина команд" как обычно это делают - это просто command pattern. простой и удобный способ заставить разработчиков делать сервисы юзкейсы которые реально обслуживают только один юзкейс. Оно сильно древнее CQRS
источник

SP

Sergey Protko in symfony
(хотя в целом все что CQRS юзает было описано в 70-х, потому больше подход интересен)
источник

SP

Sergey Protko in symfony
еще комбинации этих подходов с event storming - тож прикольно только я так и не научился ивент сторминг этот делать нормально
источник

✨Basic_Instinct✨ in symfony
все новое - хорошо забытое старое ))
источник