Banking • Mar 2025 • BNY Mellon Contract Platform

High-throughput Contract Processing

Java 17 / Spring Boot / Kafka • @Async / @Transactional • GAE / Docker / GitLab CI/CD

Refactored the critical contract upload pipeline that handles high-volume financial workloads under strict SLAs. Owned the service end-to-end.

Java 17Spring BootKafkaAPI GatewayGAEJUnit/Mockito
Contract processing — Select All, spinner, batch vs loop — 36% faster
300-contract story: Select All valid → spinner → batch update (not for-loop 1×1) — Click to enlarge →
PROBLEM

Contract uploads were slow and non-deterministic — large batches hit transaction timeouts, retries created duplicates, and SLAs slipped. The domain is banking: correctness and idempotency matter more than raw speed.

APPROACH
  • Re-tuned transaction boundaries — short, batched @Transactional units instead of one giant TX.
  • Parallelized with @Async + bounded queues — predictable throughput, no thread starvation.
  • Added idempotency keys + validation/anomaly detection — safe retries.
  • Secured REST + Kafka via API Gateway / Manager (throttling, rate limiting, sandbox URLs).
  • Deployed on Google App Engine with Docker + GitLab CI/CD, expanded JUnit/Mockito/API coverage for confidence.
Architecture sketch: Client → API Gateway (throttle) → Spring Boot (Controller → Service @Async → Repo @Transactional batched) → Kafka (async reconciliation) → DB → GAE/Docker.
CHALLENGES

Tuning @Async thread pools without starving Kafka consumers; keeping transactions short enough to avoid lock escalation but not so short that rollback cost spikes; and the *.bnymellon.* → *.bny.* URI migration with zero perceived downtime across F5 and assembly configs.

RESULT

36% end-to-end reduction, predictable SLAs, zero-downtime migration, higher deployment confidence from expanded tests.

Valid patterns reused for DR/Kafka work on the same platform.

Stack
Java 17, Spring Boot, Spring Data JPA/Hibernate, Kafka, API Gateway/Manager, GAE, Docker, Jenkins, GitLab CI/CD, JUnit/Mockito
Team: BNY Mellon Contract Platform
Role: Backend owner
Timeline: Mar 2025