Общая задача:
- Создать систему процессинга денежных средств (как в банке)
- существуют постоянно обновляемые данные о передвижении денежных средств, содержащиеся в некоторой базе данных
- система должна обрабатывать эти данные и совершать транзакции
Технологии:
- База данных H2 embedded
- Java 8
- SpringBoot, SpringJpa, SpringMvc
Требования к системе:
- Должна быть возможность совершать следующие операции через вебинтерфейс:
- Управлять банковскими счетами:
- добавлять/удалять банковские счета (пользовательские аккаунты)
- получать список всех существующих банковских счетов
- получать остаток средств на указанном банковском счете
- Управлять денежными средствами:
- вычитать из баланса указанную сумму с указанного банковского счета
- добавлять указанную сумму на указанный банковский счет
- переводить указанную сумму с одного банковского счета на другой
- Система должна запрещать появление отрицательного баланса на банковском счете
- Система должна обеспечивать консистентность данных при любых нагрузках
- Запрещается использовать Optimistic/Pessimistic Locking (и другие техники) средствами СУБД