Size: a a a

Software Design/Architecture/Zen

2020 October 27

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Sergey Protko
важный момент кому шлем сообщение.

Если ивент кидается в модуле и в этом же модуле потребляется - мы можем смело включать туда какие-либо детали которые описывают что произошло. Типа айдишка юзера кто отправил, текст сообщения если надо и даты там и т.д.

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

Ивенты как часть публичного интерфейса в целом имеют те же правила что и все остальные вещи про интерфейсы - меньше экспоузим наружу - лучше.
Спасибо!

Получается отправляем самый минимум, а детали подписчики сами пусть получают если нужны.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Сергей Предводителев
Спасибо!

Получается отправляем самый минимум, а детали подписчики сами пусть получают если нужны.
тип того. Но аккуратнее с temporal coupling.

пример - вот у тебя модуль кидает ивент "коммент добавлен" и другой модуль их потребляет и чет делает. Например отправляет текст коммента на email. А следом был ивент "коммент обновлен" и ты такой подписываешься и на него.

Если текст коммента внутри ивента то все гуд и все просто, наши данные отвязаны от времени. Если же ты только айдишку эскпоузишь то есть шанс что данные которые ты запрашиваешь по тригеру могут быть уже изменены и ты получишь по итогу 2 email-а с одинаковым текстом что может вызвать конфуз у пользователя.

Так же есть вопрос кому можно знать как интерпритируется текст коммента. Например это может быть не просто строка а строка + специфичная разметка + еще чего о чем знают только комменты и в целом распространять знания о том как рендрить комменты по всему проекту глупо.

Ну так что бы сложнее еще все это казалось)
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Sergey Protko
тип того. Но аккуратнее с temporal coupling.

пример - вот у тебя модуль кидает ивент "коммент добавлен" и другой модуль их потребляет и чет делает. Например отправляет текст коммента на email. А следом был ивент "коммент обновлен" и ты такой подписываешься и на него.

Если текст коммента внутри ивента то все гуд и все просто, наши данные отвязаны от времени. Если же ты только айдишку эскпоузишь то есть шанс что данные которые ты запрашиваешь по тригеру могут быть уже изменены и ты получишь по итогу 2 email-а с одинаковым текстом что может вызвать конфуз у пользователя.

Так же есть вопрос кому можно знать как интерпритируется текст коммента. Например это может быть не просто строка а строка + специфичная разметка + еще чего о чем знают только комменты и в целом распространять знания о том как рендрить комменты по всему проекту глупо.

Ну так что бы сложнее еще все это казалось)
Мне кажется норм, что получит два уведомления...

А вот с рендерингом - интересно...
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну это к вопросу "какие модули должны за это отвечать". Есть типичная история "модуль нотификашек которые подписаны на все на свете и шлют людям email-ы" либо модули должны сами подписываться на свои события и модуль нотификашек это лишь инфраструктура которые подготовленные и отрендернные данные могут отправлять ресипиентам (модули могут не знать о том как списки ресипиентов формируются а могут и знать, зависит от кейсов).

Декомпозиция это весело
источник

SP

Sergey Protko in Software Design/Architecture/Zen
опять же все эти вопросы не стоят так остро когда у тебя одна команда из там <10 человек.
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Sergey Protko
ну это к вопросу "какие модули должны за это отвечать". Есть типичная история "модуль нотификашек которые подписаны на все на свете и шлют людям email-ы" либо модули должны сами подписываться на свои события и модуль нотификашек это лишь инфраструктура которые подготовленные и отрендернные данные могут отправлять ресипиентам (модули могут не знать о том как списки ресипиентов формируются а могут и знать, зависит от кейсов).

Декомпозиция это весело
Правда, "весело" бизнесу не продаётся
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Всем надо надежно, понятно, и в одном месте
источник

VS

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

А вот с рендерингом - интересно...
тебе говорят, что 2 сообщения с одинаковым содержимым
ты когда будешь запрашивать текст нового комментария - этот текст уже может измениться
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
*и синхронно
источник

СП

Сергей Предводителев... in Software Design/Architecture/Zen
Vyacheslav Startsev
тебе говорят, что 2 сообщения с одинаковым содержимым
ты когда будешь запрашивать текст нового комментария - этот текст уже может измениться
точно, ступил
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Евгений Ромашкан
Всем надо надежно, понятно, и в одном месте
в жопе короч
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Sergey Protko
в жопе короч
Можно и так сказать
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
"Сервис хранения информации об объектах"
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Евгений Ромашкан
*и синхронно
конечно синхронно, один человек когда продумывает флоу в любом случае конкурентные сценарии рассматривать с позиции бизнеса не будет. То что для тебя "одновременно" для них "ну может через час после".
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Sergey Protko
конечно синхронно, один человек когда продумывает флоу в любом случае конкурентные сценарии рассматривать с позиции бизнеса не будет. То что для тебя "одновременно" для них "ну может через час после".
Ну ладно, синхронно хотят разработчики
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
Sergey Protko
хз, мне нравятся идеи вот этих лямбд серверлесс и децентрализации.
стоит ознакомиться с его книгой, или есть более лучшие и более первоисточнее?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Dmitriy Tkachenko
стоит ознакомиться с его книгой, или есть более лучшие и более первоисточнее?
хз, обычно его книги по фану рекомендуют) достаточно его блог почитать
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну и то что я перечислил это не то за что он топит (вроде)
источник

DT

Dmitriy Tkachenko in Software Design/Architecture/Zen
я кроме элегантных объектов и не слышал больше от него)
источник

AC

Artur Chobanyan in Software Design/Architecture/Zen
Dmitriy Tkachenko
я кроме элегантных объектов и не слышал больше от него)
Тебе повезло
источник