Backend Engineer focused on transaction processing systems, payment architecture, and distributed backend applications.
Interested in building reliable financial systems that guarantee atomicity, consistency, and data integrity under high-concurrency environments.
Currently exploring:
- Java
- Spring Boot
- Kafka
- Payment Systems
- JVM Performance
- Distributed Systems
Repository: https://github.com/zzzyoonnn/FinFlow-backend
FinFlow is a backend project that simulates core banking operations with a focus on transactional integrity, consistency, and auditability. It explores how financial systems safely process deposits, withdrawals, and transfers while maintaining reliable account state.
Designed and implemented essential banking operations including:
- Deposit
- Withdrawal
- Transfer
- Transaction history management
- Designed withdrawal and transfer workflows within a single transactional boundary, guaranteeing atomic state changes across account and transaction entities.
- Applied domain-driven design principles by encapsulating business rules and invariants within the domain model, preventing invalid account states.
- Centralized request logging and execution monitoring using Spring AOP, reducing duplication across service components.
- Implemented transaction ledger recording with balance snapshots, enabling full traceability of account state changes and financial audits.
- Structured transaction processing flows into validation, state mutation, persistence, and response stages to improve maintainability and clarity.
- Eliminated N+1 query problems using Fetch Join, reducing database round-trips and improving transaction history retrieval performance by 30%.
- Deployed the application on AWS EC2 with MySQL hosted on Amazon RDS, establishing a production-like environment for end-to-end testing.
Through this implementation, I became particularly interested in how financial systems prevent data inconsistency, race conditions, and double execution under concurrent requests.
π Core Banking Service Implementation: AccountService.java
- κ³μ’κ° λ§μμ§ κ²½μ°, μ΄λ»κ² μ€κ³νλ©΄ μ’μκΉ?π€
- N+1μ μ λ°μν κΉ?π€(Fetch Join μ μ© μ ν μ±λ₯ λΉκ΅)
- N+1μ μ JPAμμ λ°μν κΉ?π€(JPQL)
- N+1μ λ©λͺ¨λ¦¬μ μ΄λ€ μν₯μ λ―ΈμΉ κΉ?π€(JVM)
- μμμ± μ»¨ν μ€νΈλ N+1κ³Ό μ΄λ€ κ΄κ³κ° μμκΉ?π€(Hibernate)
- Fetch Joinμ μμμ± μ»¨ν μ€νΈμμ μ΄λ»κ² λμν κΉ?π€
- Hibernate λ΄λΆμμ μμμ± μ»¨ν μ€νΈλ μ΄λ»κ² λμν κΉ?π€
- N+1μ GCλ₯Ό μ μμ£Ό λ°μμν¬κΉ?π€
Repository: https://github.com/zzzyoonnn/Servlet2Spring
This project reflects my growth in understanding backend architecture evolution and framework-driven design.
Started with a JSP-based architecture and progressively evolved it into Spring MVC and Spring Boot.
- Replaced manual request handling and dependency management in Servlet-based architecture with Spring MVC and dependency injection, improving maintainability and testability.
- Migrated authentication from session-based login to Spring Security with JWT, improving scalability and decoupling authentication from server-side state.
- Integrated Spring Security to centralize authentication and authorization logic, reducing security-related code duplication.
- Deployed the migrated application on AWS using EC2, RDS, and S3, enabling cloud-native application management and deployment.
This migration process taught me the importance of modernizing systems without compromising stability, especially in environments where reliability is critical.
Backend
- Java 21
- Spring Boot
- Spring Data JPA
- Spring Security (JWT)
Database
- MySQL
- H2 (for testing)
Infrastructure
- AWS (EC2, RDS, S3)
Build Tool
- Maven
- Core Banking Systems
- Transaction Processing
- Financial Data Integrity
- High-reliability Backend Systems
I aim to build backend systems where correctness and reliability are prioritized over feature speed β especially in domains where data integrity is critical.
