Как стать автором
Обновить

Комментарии 13

А как решается проблема с состоянием гонки, конкурентными запросами на снятие/пополнение и прочим?

В случае данной реализации, когда мы на HTTP запросы синхронно выполняем эти операции, — никак. И когда время расчета текущего состояния по событиям в агрегате будет ощутимым — могут начаться проблемы. Очередь для команд в агрегаты — решит проблему. Не пойму почему создатели примера использования этой библиотеки не учли это.
> eventual consistency;
> банк
Вы уверены что подобрали нужный инструмент?

Пример из статьи носит исключительно ознакомительный характер, чтобы описать быструю пробу концепции в экосистеме Laravel. Данная реализация, по моему мнению, достаточна наглядна. Что касается CQRS/ES для операций с деньгами, то она вполне оправдана в случаях, когда функциональные требования не будут нарушены особенностями реализации. С eventual consistency можно жить, если клиентам не придется мучительно долго ждать обновления проекций. Надеюсь правильно понял Ваш вопрос.


Интересная статья на эту тему от команды, которая на Elixir разрабатывает банкинг

Отставание будет только в проекциях, что вполне допустимо.
Агрегаты же обеспечивают достаточную consistency, чтобы нельзя было снять со счета, если там не хватает денег — там всё четко
А что вы бы выбрали?
К сожалению, однозначно сказать не могу, т.к. выбор подхода очень ответственная задача, без досконального выяснения всех требований её решать опасно. Если бы в функциональных требованиях была историчность, то CQRS/ES, многопоточность и реализация блокировок на уровне приложения.
Банк лучше сразу писать на WordPress — там всё есть из коробки для этого.

Когда сказать нечего на хабре — минусуют, классика

Можно конечно и на Wp. Мы к примеру в 2008 на Yii писали банковскую CRM для кассы и финансов в целом. (горький но полезный опыт)
Но тут Банк представлен как пример а не как призыв к действию.
В WP из коробки 40 разных API, его давно используют не как CMS для бложиков, а делают большие сложные проекты с REST API, бэкенд для мобильных приложений, бэкенд для сервисов на node.js.

Так что и банковские заморочки на нём можно реализовать.
Да, делают.
Блаженные в мире всегда были и будут.
Взять наиболее корявый продукт и сделать на нем проект, это шикарный ход.
Правильно, зачем нам брать Symfony/LAravel etc., продумывать архитектуру DDD или реализацию микросервисов на Golang / NodeJs etc…

Покажите нам проект API на WP, хотя бы с 100 RPS. Где эндпоинт на WP.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории