GitHub : https://github.com/MoonJongHyeon1095/billingProject
🌱 프로젝트 소개
대량의 영상 시청기록에 대한 통계 및 정산 Batch 작업 프로젝트
🐥 프로젝트 목표
- 대량의 데이터(1억건 이상)에 대한 Batch 작업이 가능하도록 한다.
- 부하분산 및 페일오버 기능을 포함한 MSA 구조를 설계한다.
- 주요 서비스 로직에 대해 테스트 코드 커버리지 100%
🛠️ 주요 기능
-
통계 및 정산 기능
- 멀티 프로세스: 2대의 Batch 서버에서 동시 작업
- 멀티 스레드 : 각 Batch 서버에서 가상스레드를 활용
-
관련 API 기능
- 일간, 주간, 월간 조회수 및 재생시간 Top5 조회
- 일간, 주간, 월간 사용자 정산내역 조회
- 주간 Top5 정보 및 주간 사용자 정산내역 pdf 형태로 메일발송
-
아키텍처 관련
- 도메인 별 서버 분리
- 로드밸런싱
- 부하가 큰 일부 서비스에 대해 다수 인스턴스 부하분산 기능 구현
- Spring Cloud Gateway & LoadBalancer & Eureka 활용
- 장애복구
- Feign Client로 통신하는 일부 서버에 대해 회복 탄력성 및 예비 서버로의 라우팅 기능 구현
- resilience4J CircuitBreaker 활용
- CQRS
- DB main - replica 구조 적용
- main DB ec2에서 다른 2대의 ec2 인스턴스로 MySQL replication
🚀 아키텍처
