Size: a a a

2021 August 19

ЕК

Евгений Котов... in symfony
всем привет) вопрос на тему VO.. допустим проект монолит, но стремимся делить на модули, чтобы в будущем было легче все это дело переводить на микросервисы
можно ли расшарить некоторые VOшки на все модули, почему это может быть плохо?

уточню, расшарить хочется например адрес, у него могут быть nullable поля, адрес же
нет желания шарить все подряд, только штуки типа фио, денег, адрес и тп
любой кто будет юзать эту структуру данных, должен будет сам проверять, достаточно ли ему этой voшки, это норм?
источник

ЕК

Евгений Котов... in symfony
типа такая вот расшаренная voшка получается не имеет понимания, валидная ли она для того или иного потребителя
фио например будет обязательно требовать имя и фамилию, а то что кому то от нее может понадобиться отчество - это не ее проблемы 🤔
источник

SB

Sergei Baikin in symfony
Попробуйте расширить просто addressId зачем вам все эти данные дублировать во все модули?
источник

ЕК

Евгений Котов... in symfony
можно подробнее? не очень понял
сейчас у нас в каждом модуле свои VO для адресов, это какая-то дичь, кмк
источник

SB

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

ЕК

Евгений Котов... in symfony
ну то есть адреса могут лежать в отдельной таблице, а все кому они нужны - привязываются по AddressId, так?
источник

SB

Sergei Baikin in symfony
Приведите пример зачем нужна информация по адресу во многих модулях? Почему айдишника недостаточно?
источник

SB

Sergei Baikin in symfony
Нет. Надо сделать так чтобы они не были им нужны, данные не передавать и не забирать. Плюс про таблицы и прочее знать они не должны. Вся работа с адресами только там где они лежат.
источник

ЕК

Евгений Котов... in symfony
ну, вообще как я вижу - во многих местах хранить всю инфу совсем не нужно, достаточно айдишника
но это ж таскаться в бд, если хочешь адрес достать (если что, я не считаю это чем-то плохим)
в каких то местах да, надо адрес "зафиксировать"
в документах например
источник

SB

Sergei Baikin in symfony
Фиксируйте адрес в модуле адреса там где они у вас. Зачем его тащить наружу?
источник

SB

Sergei Baikin in symfony
Ну и не используйте вы базу как глобальную штуку доступную везде. Смысла тогда разделять на модули/модели нету.
источник

ЕК

Евгений Котов... in symfony
кстати да, тоже верно
источник

AD

Andrey Dembitskyi in symfony
А деньги в модуле денег
источник

SB

Sergei Baikin in symfony
Просто просите зафиксировать вам адрес с айдишником таким то и на выход новый айдишник можно получить.
Или в мрдуле адресов лучше хранить для какого айди было зафиксировано
источник

ЕК

Евгений Котов... in symfony
"но ведь проект на стадии разработки") сейчас да, бд общая)
а вообще, отдельный модуль для адресов это норм? будь это микросервисы, мог бы он быть отдельным сервисом? выглядит нормальным
просто у нас и сами модули разделены так себе, где-то норм, а где-то спорно
источник

SB

Sergei Baikin in symfony
Я же в качестве примера. Имеется ввиду любой модуль который инкапсулирует данные адресов
источник

ЕК

Евгений Котов... in symfony
так а если мы шарим эти адреса, это получится именно модуль адресов 🤔
источник

AD

Andrey Dembitskyi in symfony
Если ты тянешь некий decimal или money из библиотеки - с этим ведь не врзникает вопросов, адекватно ли это.

Ты можешь эти же VO воспринимать как внешние библиотеки и использовать
источник

SB

Sergei Baikin in symfony
Зависит от сценариев использования. Надо от ограничений и согласованности отталкиваться а не от данных.
Но обычно адрес доставки попадает в shipping. А биллинг адрес в биллинг соответственно.
источник

AD

Andrey Dembitskyi in symfony
Слишком упрощённый пример, что может привести к оверинжинирингу на ровном месте ради культа карго
источник