Size: a a a

Software Design/Architecture/Zen

2021 May 06

SP

Sergey Protko in Software Design/Architecture/Zen
Два запроса меняют одну запись. Один падает из-за конфликта. Тебе это надо разрулить
источник

IM

Igor Molochnikov in Software Design/Architecture/Zen
Тут, насколько понимаю, самое главное, что данные остаются консистентыми. И клиент увидит что что-то не вышло, будет пробовать еще.
Если цена вопроса - миллион, то и раз в пять лет это много )
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
или не допускать конфликта изначально
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Все это надо там где тебе нельзя терять данные и есть колаборация разных участников процесса (collaborative domain)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
И вот тут нужны саги, cqrs и т.д.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
А ещё есть out of order обработка запросов и т д.
источник

SP

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

OR

Olexandr Ryabchuk in Software Design/Architecture/Zen
Знаете способ лучше не допускать конфликтов?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Ну или 10к людей ринулись покупать чёт крутое на скидке с ограниченным предложением (видеокарты)
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
есть. обычно работают с 3д-пати, которая занимается резервированием и гарантией стока в резервированных айтемах.... Это чуть ли не единственное "коллаборативное" место в е-коммерс
источник

DE

Dmitry Eliseev in Software Design/Architecture/Zen
Ну так в проекте обычно не только чистую функцию выполнить и платёж в БД переместить.

В реальности ещё нужно в платёжную систему сходить, коллбэк платежа принять, чек в API онлайн-кассы отправить, на расылку вип-клиента подписать, в CRM закинуть и в рекламный кабинет в группу ретаргетинга добавить.

Удачи делать это без саг и ретраев :)
источник

SP

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

Kd

Konstantin dmz9 in Software Design/Architecture/Zen
есть мысль выделить релейшны в отдельные обьекты, и по ним уже будет попроще матчить БЛ
типа FooBarRelation( Foo foo, Bar bar ){ function valid():bool }
источник

Kd

Konstantin dmz9 in Software Design/Architecture/Zen
правда тогда и логика размазывается несколько...
будет отдельный rbac/abac, и тут же еще дубль в *Relation::valid
источник

IK

Ivan Katkov in Software Design/Architecture/Zen
Добрый день! Подскажите пожалуйста, вот если посетитель сайта кладёт в корзину товар, то достаточно хранить массив ид товара и его количество, или лучше держать расширенную информацию о товаре? Сейчас делаю вторым вариантом, но есть сомнения в необходимости этого.
источник

IK

Ivan Katkov in Software Design/Architecture/Zen
Интересует личная практика, кто поделится?
источник

IM

Igor Molochnikov in Software Design/Architecture/Zen
У меня личной практики нет такой, но обычно советуют вот это видео. Если вам еще оно не попадалось
https://www.youtube.com/watch?v=hev65ozmYPI
источник

IM

Igor Molochnikov in Software Design/Architecture/Zen
если правильно помню, вкратце, там из всей корзины есть по сути только её id, остальное в других контекстах. Очень неожиданно )
источник

IK

Ivan Katkov in Software Design/Architecture/Zen
Спасибо, посмотрю)
источник

AV

Alexey Vetrov in Software Design/Architecture/Zen
источник