красиво, но когда нужно прокидывать атомарную запись между сервисами, то начинаются дикие проблемы
                  
                  
                  
                  
                  
                  Пример архитектуры:
                  
                  
                  Есть модуль покупок (купить вещь за такую-то сумму) и модуль транзакций (перевод денег от пользователю пользователю)
                  
                  
                  
                  
                  
                  Задача:
                  
                  
                  Провести какие-то бизнесовые действия в модуле покупок и перевести нужную сумму с помощью сервиса транзакций _атомарно_
                  
                  
                  
                  
                  
                  Вопрос:
                  
                  
                  Как?
                  
                  
                
Делай это в рамках одного сервиса, не надо разносить по разным сервисам то, что должно выполняться атомарно.
У меня есть в сервисе транзакций бизнесовая логика (проверить тип транзакции, сумму, наличие денег у пользователя). Не буду же я это копипастить везде
Вынеси это в логику доменного уровня и используй в сервисном слое.
https://t.me/gogolang/503601 уже не раз задавали же подобный вопрос
У меня в сервисе транзакций еще и ивент в рэббит валится после коммита в базу. Но если делать такую архитектуру, то ивент будет валиться до записи в бд. Там даже роллбек может случиться
Обсуждают сегодня