채권 백오피스 시스템은 금융기관의 채권 업무 전 과정을 디지털화한 백엔드 시스템입니다. 채권 발행부터 거래, 정산, 만기까지의 라이프사이클을 관리하며, 금융투자협회(KOFIA) 보고 의무를 자동화합니다.
업무 목적: 시장에 유통되는 채권의 기본 정보와 생명주기 관리
비즈니스 로직:
- ISIN 코드 표준 준수 (KR로 시작하는 12자리)
- 신용등급 기반 투자등급 자동 분류
- 만기일 기준 포트폴리오 위험도 평가
- 이자 계산의 정확성 (연 360일 vs 실제 일수)
업무 목적: 채권 매매 거래의 전 과정 처리 및 리스크 통제
비즈니스 로직:
- 고객별 일일 거래 한도 관리
- 매도 시 보유 수량 검증 (공매도 방지)
- 대량 거래 모니터링 및 알림
- T+1 정산 스케줄 관리
업무 목적: 고객별 채권 보유 현황과 수익률 추적
비즈니스 로직:
- 평균 매입가 자동 계산
- 시가평가 기반 손익 계산
- 만기별 포트폴리오 분산도 분석
업무 목적: 거래 후 자금과 증권의 안전한 이전
비즈니스 로직:
- DVP 원칙 준수 (동시 이행)
- 정산 실패 시 자동 재처리
- 한국예탁결제원(KSD) 연동
1. 복잡한 도메인 로직의 명확한 표현
// 비즈니스 로직이 도메인 객체에 명확히 표현됨
public class Bond {
public boolean isInvestmentGrade() {
return creditRating.isInvestmentGrade();
}
public BigDecimal calculateAccruedInterest(LocalDate settlementDate) {
// 실제 금융 업계 이자 계산 로직
}
}2. 유비쿼터스 언어 구현
- 개발팀과 금융 업무팀이 동일한 용어 사용
- 코드가 곧 업무 매뉴얼이 되도록 설계
3. 변화에 유연한 설계
- 금융 규제 변경 시 도메인 계층만 수정
- 외부 시스템(KSD, KOFIA) 연동 변경의 영향 최소화
┌─────────────────────────────────────────┐
│ Infrastructure Layer │ ← REST API, JPA, 외부 API
├─────────────────────────────────────────┤
│ Application Layer │ ← Use Cases, DTO 변환
├─────────────────────────────────────────┤
│ Domain Layer │ ← 비즈니스 로직
└─────────────────────────────────────────┘
장점:
- 도메인 로직의 순수성 보장
- 테스트 가능한 비즈니스 로직
- 기술 변경의 영향 격리
- Java 17 + Spring Boot 3.3.5
- Spring Data JPA
- MySQL
- SpringDoc OpenAPI
src/main/java/com/bank/bondbackoffice/
├── domain/ # 비즈니스 로직
├── application/ # 유스케이스 조합 및 트랜잭션 경계
└── infrastructure/ # 기술적 구현 (DB, API, 외부 연동)
# H2 메모리 DB 사용 (개발/테스트용)
./gradlew bootRun --args='--spring.profiles.active=local'
# API 문서 확인
open http://localhost:8080/swagger-ui/index.html
# H2 콘솔 (DB 상태 확인)
open http://localhost:8080/h2-console# MySQL 설정
export DB_USERNAME=admin
export DB_PASSWORD=pw1234!
# 프로덕션 프로파일로 실행
./gradlew bootRun --args='--spring.profiles.active=prod'각 계층별 상세 구현 내용은 해당 패키지의 README.md 참고:
- Domain Layer - 비즈니스 로직과 도메인 모델
- Application Layer - 유스케이스와 애플리케이션 서비스
- Infrastructure Layer - 기술 구현과 외부 연동
- RESTful 설계 준수
- 도메인별 엔드포인트 분리 (
/bonds,/trading,/portfolio) - 명확한 HTTP 상태 코드 사용
- 도메인 로직: 단위 테스트 (순수 Java)
- 유스케이스: 통합 테스트 (TestContainers)
- API: E2E 테스트 (MockMvc)