Ты разработаешь микросервисное приложение, имитирующее работу биржевого движка (trading engine). Система будет принимать заявки на покупку/продажу, обрабатывать их в реальном времени, учитывать балансы пользователей и публиковать данные о сделках.
✅ Java 17+ (используй современные фичи: Records, Pattern Matching, Virtual Threads)
✅ Spring Boot 3 (для микросервисов)
✅ Kafka (обмен сообщениями между сервисами)
✅ gRPC (высокопроизводительное взаимодействие сервисов)
✅ PostgreSQL (транзакции, балансы пользователей)
✅ Liquibase/Flyway (управление миграциями)
✅ Redis (кеширование стакана заявок)
✅ Multithreading & Concurrency (обработка ордеров в реальном времени)
✅ Docker & Kubernetes (развертывание)
✅ Prometheus + Grafana (мониторинг)
✅ TDD (напиши тесты: Unit, Integration, E2E)
- Принимает заявки (ордера) от пользователей по gRPC.
- Валидирует ордер (проверяет баланс, лимиты).
- Отправляет ордер в Kafka (
orders-topic).
- Подписывается на
orders-topic. - Обрабатывает ордера в реальном времени (FIFO или price-time priority).
- Использует многопоточность (
Virtual ThreadsилиDisruptor Pattern). - Формирует "стакан заявок" (order book) в Redis.
- При совпадении Buy/Sell → создаёт сделку (trade) и отправляет в
trades-topic.
- Управляет балансами пользователей.
- Обновляет баланс после сделки (транзакционно).
- Предоставляет gRPC API для проверки баланса.
- Подписывается на
trades-topicи уведомляет пользователей (WebSocket / Email).
🔹 Микросервисы (разделение ответственности)
🔹 Kafka (event-driven архитектура)
🔹 gRPC (быстрое взаимодействие сервисов)
🔹 Многопоточность (обработка ордеров с минимальными задержками)
🔹 Транзакции в DB (чтобы не терять деньги пользователей)
🔹 Docker + Kubernetes (деплой)
🔹 Нагрузочное тестирование (JMeter / Gatling)
⭐ Реализуй Circuit Breaker (Resilience4j) для Wallet Service.
⭐ Добавь JWT-аутентификацию (Spring Security).
⭐ Сделай репликацию PostgreSQL для отказоустойчивости.
⭐ Настрой Kubernetes Helm Charts для деплоя.