// currently: Software Developer @ Amdocs (T-Mobile project)
3+ years building payment and data platforms. I design microservices that stay correct under retries, concurrency and partial failure — idempotency, event-driven messaging and resilient integrations are my day job, not buzzwords.
api: checking…
Not what I used — why I chose it, and what would change the answer.
A digital wallet backend built to handle the four failure modes every payments system faces:
Lost updates from concurrent transfers
Optimistic locking (@Version) + bounded retry. Low contention makes optimistic cheaper than row locks — under flash-sale contention I'd flip to SELECT … FOR UPDATE. The retry loop lives in a separate bean: self-invocation bypasses Spring's transaction proxy.
Double spend from client retries
Idempotency keys enforced by a DB unique constraint — an in-memory check loses the race between concurrent duplicates; the constraint is the only arbiter that survives it.
Dual-write between DB and event bus
Transactional outbox committed with the balance change; at-least-once relay + eventId dedupe in the consumer composes into exactly-once processing.
Silent balance corruption
Append-only double-entry ledger — every transfer nets to zero, asserted in the test suite.
Proof: concurrency tests — 10 simultaneous transfers with exact money conservation; duplicate keys produce one debit.
→ github.com/patil2001/payflowPeak run times blowing the batch window
Profiling showed reads dominated. SQL tuning + table partitioning let independent slices run in parallel steps without write contention.
Mid-run failures leaving partial state
Up-front input validation + retry on transient failures turned whole-job aborts into per-record skips with a report.
Outcome: peak runtime cut significantly; per-run metrics tracked to drive iterative reliability work.
Token generation hammering the identity provider
Generate once per client, cache in Redis with TTLs mirroring token expiry, inject via x-authorization headers. Restructuring the token data model yielded a 35% storage optimization.
Cross-tenant access attempts
Redis session validation + data fencing rejects requests that don't own the resource before business logic runs.
Partial failures in downstream token APIs
POP token generator with configurable retries + circuit breaker — fail fast when the provider is down; custom exceptions split retryable from terminal.
Wallet & payments backend: optimistic locking, idempotency, transactional outbox, double-entry ledger, concurrency test suite.
Java 21 · Spring Boot 3 · JWT · JPA
This site is itself a Spring Boot API + static frontend: OpenAPI-documented, containerized, CI-deployed, health-monitored. View the live Swagger UI.
Spring Boot · Docker · GitHub Actions · Render
Job-search automation: scraping, relevance filtering and application staging with human-in-the-loop approval.
Automation · Browser orchestration
EXPERT — use daily, can teach
Java · Spring Boot · Spring Batch · REST API design · Microservices · PostgreSQL · Redis
PROFICIENT — shipped to production
Kafka · AWS (S3, EC2, SNS, SQS, IAM) · Spring Security · Docker · Hibernate/JPA · JUnit + Mockito · Jenkins & GitHub Actions
FAMILIAR — used, still deepening
Kubernetes · Snowflake · MongoDB · GraphQL · Angular · Python
Hiring for backend roles, or want to talk distributed systems? Reach out.