Большая игра: как НСПК меняет систему оплаты на городском транспорте России
Весь бэк у нас реактивный и написан на Kotlin (Spring Reactor, R2DBC, Radisson), на фронте используем Angular. В качестве основной in-memory-базы данных применяем Redis. Там у нас хранятся стоп-листы, вся платёжная информация, параметры системы, ключи идемпотентности и всё необходимое, чтобы не только платёж довести до банка, но и информацию о поездках при запросе показать в личных кабинетах организации и пассажира (bilet.nspk.ru).
Система микросервисная, event-driven, транспорт сообщений — уже всем знакомая Kafka. Мастер-данные храним в PostgreSQL, оркестрация контейнеров — K8S, инфраструктура — гибридная: частное облако и выделенные сервера.
Также используем Camunda как BPMN-движок. Работа в личном кабинете организации построена через бизнес-процессы. В каждом из них могут участвовать пользователи с разными ролями: как внутри НСПК, так и извне.
На страже мониторинга используем для различных задач Prometheus, Splunk, ELK, Grafana. Казалось бы, есть конкуренция, но её нет.