예금 계좌 관리 및 대출 금리 산출 시스템
수신(예금/송금/이자)과 여신(금리 산출) 핵심 업무를 구현하고,
동시성 환경에서의 트랜잭션 정합성을 검증하는 프로젝트입니다.
┌──────────────────────────────────────────────┐
│ EKS Cluster │
│ │
│ ┌──────────────┐ ┌─────────────────┐ │
│ │ bank-core │ │ interest-batch │ │
│ │ API Pod │ │ CronJob │ │
│ └──────┬───────┘ └────────┬────────┘ │
│ │ │ │
│ ┌──────▼──────────────────────▼─────────┐ │
│ │ MySQL (StatefulSet + PVC) │ │
│ └───────────────────────────────────────┘ │
│ ┌───────────────────────────────────────┐ │
│ │ Redis (분산 락) │ │
│ └───────────────────────────────────────┘ │
└──────────────────────────────────────────────┘
|
|
|
bank-core/
├── app-api/ # REST API (계좌, 금리, 송금)
├── app-batch/ # 이자 계산 배치
├── domain/ # 엔티티, 리포지토리, 도메인 로직
├── common/ # BigDecimal 유틸, 공통 예외
├── infra/
│ └── k8s/ # Kubernetes 매니페스트
├── docker-compose.yml
└── build.gradle.kts
# 1. 인프라 실행
docker-compose up -d
# 2. API 서버 실행
./gradlew :app-api:bootRun
# 3. 테스트
./gradlew test| Method | Endpoint | 설명 |
|---|---|---|
POST |
/api/accounts |
계좌 개설 |
GET |
/api/accounts/{id} |
계좌 조회 |
POST |
/api/accounts/{id}/close |
계좌 해지 |
POST |
/api/transfers |
송금 |
GET |
/api/accounts/{id}/transactions |
거래 내역 조회 |
POST |
/api/rates/calculate |
금리 산출 |
🚧 구현 후 실측 데이터로 업데이트 예정
| 전략 | TPS | 정합성 | 적합한 환경 |
|---|---|---|---|
| 락 없음 | - | ❌ | - |
| 비관적 락 | - | ✅ | 충돌이 빈번한 환경 |
| 낙관적 락 | - | ✅ | 충돌이 드문 환경 |
| 분산 락 | - | ✅ | 멀티 인스턴스 환경 |
main ← development ← feature/worktree
| 브랜치 | 용도 |
|---|---|
main |
배포 가능한 안정 버전 |
development |
개발 통합 브랜치 |
feature/* |
worktree 기반 기능 개발 |
GitHub Actions (OIDC) → ECR → EKS
# 수동 배포
kubectl apply -f infra/k8s/Made with ☕ by @hyeongirlife