Skip to content

suakang17/bond-backoffice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

채권 백오피스 시스템 (Bond Back-office System)

시스템 개요

채권 백오피스 시스템은 금융기관의 채권 업무 전 과정을 디지털화한 백엔드 시스템입니다. 채권 발행부터 거래, 정산, 만기까지의 라이프사이클을 관리하며, 금융투자협회(KOFIA) 보고 의무를 자동화합니다.

업무 도메인

1. 채권 관리 (Bond Management)

업무 목적: 시장에 유통되는 채권의 기본 정보와 생명주기 관리

비즈니스 로직:

  • ISIN 코드 표준 준수 (KR로 시작하는 12자리)
  • 신용등급 기반 투자등급 자동 분류
  • 만기일 기준 포트폴리오 위험도 평가
  • 이자 계산의 정확성 (연 360일 vs 실제 일수)

2. 거래 관리 (Trading)

업무 목적: 채권 매매 거래의 전 과정 처리 및 리스크 통제

비즈니스 로직:

  • 고객별 일일 거래 한도 관리
  • 매도 시 보유 수량 검증 (공매도 방지)
  • 대량 거래 모니터링 및 알림
  • T+1 정산 스케줄 관리

3. 포트폴리오 관리 (Portfolio)

업무 목적: 고객별 채권 보유 현황과 수익률 추적

비즈니스 로직:

  • 평균 매입가 자동 계산
  • 시가평가 기반 손익 계산
  • 만기별 포트폴리오 분산도 분석

4. 정산 관리 (Settlement)

업무 목적: 거래 후 자금과 증권의 안전한 이전

비즈니스 로직:

  • DVP 원칙 준수 (동시 이행)
  • 정산 실패 시 자동 재처리
  • 한국예탁결제원(KSD) 연동

아키텍처 설계

Domain-Driven Design (DDD)

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, 외부 연동)

빠른 시작

1. 로컬 환경 실행

# 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

2. 프로덕션 환경 준비

# MySQL 설정
export DB_USERNAME=admin
export DB_PASSWORD=pw1234!

# 프로덕션 프로파일로 실행
./gradlew bootRun --args='--spring.profiles.active=prod'

상세 문서

각 계층별 상세 구현 내용은 해당 패키지의 README.md 참고:

개발 가이드

API 설계 원칙

  • RESTful 설계 준수
  • 도메인별 엔드포인트 분리 (/bonds, /trading, /portfolio)
  • 명확한 HTTP 상태 코드 사용

테스트 전략

  • 도메인 로직: 단위 테스트 (순수 Java)
  • 유스케이스: 통합 테스트 (TestContainers)
  • API: E2E 테스트 (MockMvc)

About

채권 백오피스 시스템 (개인 프로젝트)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages