О проекте
Ищем опытного Java-разработчика для работы над платежной системой, которая находится на финальной стадии перед production-запуском. Требуется исправить выявленные архитектурные проблемы и критические уязвимости.
Система работает с платежными транзакциями, интеграцией с банками и обработкой валютных операций. Проект имеет высокие требования к надежности и безопасности.
Технологический стек
Backend
- Java 17-24
- Spring Boot 3.5.x
- Spring Data JDBC (не JPA/Hibernate)
- Spring WebFlux (Reactive Stack)
- Spring Security (OAuth2, JWT)
- Spring Cloud Gateway
- Project Reactor
- Тесты k6
Databases & Caching
- PostgreSQL 15
- Liquibase (database migrations)
- Redis (caching, distributed locking)
Monitoring & Observability
- Micrometer
- Prometheus
- Grafana
- OpenTelemetry (traces, metrics, logs)
Infrastructure & DevOps
- Docker
- Docker Compose
- Kubernetes
- GitLab CI/CD
Additional Services
- Keycloak (authentication)
- Resilience4j (circuit breaker, retry)
Обязанности:
Критические задачи
Оптимизация работы с внешними API — улучшение стратегий обработки ошибок, добавление circuit breaker паттернов
Валидация бизнес-данных — добавление проверок корректности критических параметров перед обработкой
Оптимизация запросов к БД — замена неэффективных запросов, добавление пагинации
Обеспечение идемпотентности — добавление защиты от дублирования операций на уровне БД
Рефакторинг long-running транзакций — разбиение на более мелкие unit of work, добавление параллельной обработки
Исправление race conditions — реализация distributed locking для конкурентных операций
Усиление безопасности — перенос sensitive данных в secrets management
Дальнейшие задачи
- Внедрение event-driven архитектуры (Kafka)
- Добавление compliance-проверок
- Оптимизация производительности под высокие нагрузки (target: 500+ TPS)
- Интеграция с дополнительными внешними системами
Требования:
Обязательные навыки
- 5+ лет коммерческой разработки на Java/Spring
- 3+ года работы с финансовыми или платежными системами
- Глубокое знание Spring Boot 3.x, Spring Data JDBC, Spring WebFlux
- Опыт работы с PostgreSQL (индексы, constraints, блокировки, миграции)
- Понимание reactive programming (Project Reactor)
- Опыт с микросервисной архитектурой и distributed systems
- Знание паттернов работы с распределенными транзакциями (saga, compensating transactions)
- Понимание финансовых расчетов: работа с денежными суммами, точность вычислений, BigDecimal
- Опыт реализации идемпотентности операций
- Опыт исправления production incidents в критичных системах
Технические компетенции
- Distributed locking: Redis (Redisson), оптимистичные/пессимистичные блокировки
- Безопасность: OWASP Top 10, secrets management, OAuth2/JWT, защита от SQL injection/XSS
- Базы данных: ACID, транзакции, race conditions, миграции под нагрузкой, SELECT FOR UPDATE
- DevOps: Docker, Kubernetes, CI/CD, мониторинг (Prometheus/Grafana)
- Testing: JUnit 5, integration tests, нагрузочное тестирование
- Отказоустойчивость: Circuit breaker, retry policies, Resilience4j
Желательный опыт
- Работа с платежными шлюзами (EMVCo, QR-платежи)
- Опыт миграции legacy-систем на микросервисы
- Опыт с высоконагруженными системами (500+ TPS)
- Знание финансовых стандартов (ISO 4217, PCI DSS)
- Опыт с Kafka и event-driven архитектурой
- Знание практик double-entry bookkeeping
Что НЕ подходит
- Опыт только с монолитными приложениями
- Отсутствие опыта с финансовыми системами
- Незнание разницы между JPA и JDBC
- Незнание reactive programming
- Непонимание проблем race conditions и distributed locking
- Легкомысленное отношение к безопасности финансовых систем