🌱 프로젝트 소개


대량의 영상 시청기록에 대한 통계 및 정산 Batch 작업 프로젝트

🐥 프로젝트 목표


  1. 대량의 데이터(1억건 이상)에 대한 Batch 작업이 가능하도록 한다.
  2. 부하분산 및 페일오버 기능을 포함한 MSA 구조를 설계한다.
  3. 주요 서비스 로직에 대해 테스트 코드 커버리지 100%

🛠️ 주요 기능


  1. 통계 및 정산 기능

    1. 멀티 프로세스: 2대의 Batch 서버에서 동시 작업
    2. 멀티 스레드 : 각 Batch 서버에서 가상스레드를 활용
  2. 관련 API 기능

    1. 일간, 주간, 월간 조회수 및 재생시간 Top5 조회
    2. 일간, 주간, 월간 사용자 정산내역 조회
    3. 주간 Top5 정보 및 주간 사용자 정산내역 pdf 형태로 메일발송
  3. 아키텍처 관련

    1. 도메인 별 서버 분리
    2. 로드밸런싱
      1. 부하가 큰 일부 서비스에 대해 다수 인스턴스 부하분산 기능 구현
      2. Spring Cloud Gateway & LoadBalancer & Eureka 활용
    3. 장애복구
      1. Feign Client로 통신하는 일부 서버에 대해 회복 탄력성 및 예비 서버로의 라우팅 기능 구현
      2. resilience4J CircuitBreaker 활용
        • 상세 파라미터
    4. CQRS
      1. DB main - replica 구조 적용
      2. main DB ec2에서 다른 2대의 ec2 인스턴스로 MySQL replication

🚀 아키텍처


무제.001.png