Size: a a a

2020 August 11

SP

Sergey Protko in PHP
Dmitriy Tkachenko
тут даже не про конкаренси по большей части. Нагрузка пока минимальная, а про то, что если к этим формам будет доступ через сам агрегат - то да, он будет пухнуть. А если это будет сущность (Entity), то можно ли в агрегате держать реф на нее? Если да, то как принимать решения исходя из состояния сущности, когда у тебя есть только реф? опрашивать напрямую?
смысл в том что агрегат есть граница транзакции. Если у тебя есть составной элемент который предоставляет доступ наружу и от которого зависят инварианты стэйта твоего агрегата - то у нас тут eventual consistency сразу и в целом нет нужны эту штуку внутри агрегата хранить (возможно)
источник

AM

Artem Molotov in PHP
Sergey Protko
я помню зачем я делал - кто-то накосячил и добавил не нулабл колонки и зафэйлился деплой)
а вы как-то потом проверяете, что в код не прилетит nullable (тупой вопрос наверн)
источник

AM

Artem Molotov in PHP
?
источник

DT

Dmitriy Tkachenko in PHP
Sergey Protko
смысл в том что агрегат есть граница транзакции. Если у тебя есть составной элемент который предоставляет доступ наружу и от которого зависят инварианты стэйта твоего агрегата - то у нас тут eventual consistency сразу и в целом нет нужны эту штуку внутри агрегата хранить (возможно)
ну да, получается, что у составного элемента будет свой стрим событий, а агрегат слушает важные для него и делает проекцию из элементов, важных для принятия решения и сам же кидает свои события связанные с собой (т.е. дубликация событий в связи со сменой контекста)
источник

SB

Sergei Baikin in PHP
Dmitriy Tkachenko
ну да, получается, что у составного элемента будет свой стрим событий, а агрегат слушает важные для него и делает проекцию из элементов, важных для принятия решения и сам же кидает свои события связанные с собой (т.е. дубликация событий в связи со сменой контекста)
оставить аггрегат в покое и перенести логику в отдельные саги?
источник

SB

Sergei Baikin in PHP
очень похоже что вам надо саги с состоянием а не вот эти проекции внутри аггрегатов
источник

SP

Sergey Protko in PHP
Dmitriy Tkachenko
ну да, получается, что у составного элемента будет свой стрим событий, а агрегат слушает важные для него и делает проекцию из элементов, важных для принятия решения и сам же кидает свои события связанные с собой (т.е. дубликация событий в связи со сменой контекста)
на тему проекций и агрегатов...

ПРОЕКЦИИ могут быть не только left fold стрима, они могут так же на основе этого left fold кидать новые события. Например

projection
  .on(stream)
  .partitionBy(({customerId}) => customerId)
  .init(() => 0)
  .on('OrderConfirmed', (numberOfOrders, emit) => {
       numberOfOrders++
       if (numberOfOrders === 3) {
            emit(customerPurchasedThreeOrders())
            numberOfOrders = 0
       }
       return numberOfOrders
  }
источник

SP

Sergey Protko in PHP
это в чем-то похоже на саги)
источник

SP

Sergey Protko in PHP
саги к слову те же агрегаты)
источник

SB

Sergei Baikin in PHP
Sergey Protko
саги к слову те же агрегаты)
это да но у людей от такого когнитивный диссонанс
источник

DT

Dmitriy Tkachenko in PHP
да, и это получается взять эту сложную структуру, сделать из нее агрегат, и сагой связать оба агрегата?
источник

SB

Sergei Baikin in PHP
Другими словами можно еще сказать разбить логику на кучу мелких аггрегатов\моделей\саг а не вот эти вот обекты из реальной жизни. Но это очень сложно пояснить. Я не умею
источник

DT

Dmitriy Tkachenko in PHP
Sergei Baikin
Другими словами можно еще сказать разбить логику на кучу мелких аггрегатов\моделей\саг а не вот эти вот обекты из реальной жизни. Но это очень сложно пояснить. Я не умею
не, объектов из реальной жизни у меня нет))
источник

SB

Sergei Baikin in PHP
Dmitriy Tkachenko
да, и это получается взять эту сложную структуру, сделать из нее агрегат, и сагой связать оба агрегата?
да вынести ваши правила по отдельным сагам а не пихать в аггрегат
источник

DT

Dmitriy Tkachenko in PHP
Sergei Baikin
да вынести ваши правила по отдельным сагам а не пихать в аггрегат
Я слишком туп для таких interceptions. Но спасибо за направление)
источник

SB

Sergei Baikin in PHP
Dmitriy Tkachenko
не, объектов из реальной жизни у меня нет))
коллекции форм очень на них похожи
очень похожи на пернос UI в модель
Но я конечно же ошибаюсь и мне могло просто показатся
источник

DT

Dmitriy Tkachenko in PHP
Sergei Baikin
коллекции форм очень на них похожи
очень похожи на пернос UI в модель
Но я конечно же ошибаюсь и мне могло просто показатся
В данном случае формы выступает как набор множества полей, важных для принятия решений в будущем
источник

SP

Sergey Protko in PHP
Dmitriy Tkachenko
да, и это получается взять эту сложную структуру, сделать из нее агрегат, и сагой связать оба агрегата?
да
источник

SP

Sergey Protko in PHP
Dmitriy Tkachenko
Я слишком туп для таких interceptions. Но спасибо за направление)
попробуй event storming-ом расписать
источник

SP

Sergey Protko in PHP
где у тебя политики, где события, почему могут фэйлиться команды и т.д.
источник