Skip to content
@ureca3-comprehensive-project

ureca3 comprehensive project

URECA 3기 종합 프로젝트 1조

📊 대용량 통신 요금 명세서 및 알림 발송 시스템

1. 프로젝트 개요

본 프로젝트는 통신사의 대용량 요금 청구 데이터를 기반으로
요금 명세서를 생성하고, 고객에게 이메일/SMS 알림을 안정적으로 발송하는 시스템을 구현하는 것을 목표로 합니다.

월 수백만 건 이상의 요금 데이터와 대량 메시지 발송 환경을 가정하여
비동기 메시지 처리 아키텍처(Kafka) 를 중심으로 설계하였습니다.

2. 프로젝트 배경 및 목적

통신 서비스에서는 매월 대규모 요금 데이터가 생성되며,
요금 고지·연체 알림·청구 안내 등 다양한 고객 알림이 필수적으로 발생합니다.

본 프로젝트는 다음과 같은 문제를 해결하는 데 목적이 있습니다.

  • 대량 요금 데이터의 안정적인 정산 처리
  • 대규모 메시지 발송 시 장애 격리 및 재처리
  • 발송 성공/실패 이력 관리 및 중복 발송 방지
  • 실무에서 사용되는 메시지 기반 아키텍처 경험

3. 시스템 아키텍처 개요

  • Batch 정산 시스템을 통해 요금 데이터를 생성
  • 메시지 발송 요청을 Kafka 이벤트로 발행
  • 이메일/SMS 발송 서비스는 이벤트를 구독하여 비동기 처리
  • 발송 결과는 DB에 저장하여 이력 관리 및 재시도 가능

4. 주요 기능

4.1 요금 정산 및 명세서 생성

  • 가상 고객 100만 명, 청구 이력 500만 건 데이터 생성
  • 월별 Batch 작업으로 요금 정산 수행
  • 요금 명세 데이터를 데이터베이스에 저장

4.2 메시지 발송 요청 처리

  • 요금 정산 완료 시 Kafka 이벤트 발행
  • 메시지 발송은 비동기 방식으로 처리
  • 이메일, SMS 발송 채널 분리 설계

4.3 이메일 / SMS 발송

  • 이메일, SMS 발송 기능 구현 (Mock 기반)
  • 발송 실패 시 자동 재시도 로직 적용
  • 이메일 발송 실패 시 최대 1초 지연 후 재시도
  • SMS는 실패하더라도 재시도 없이 종료 가능

4.4 발송 이력 및 상태 관리

  • 메시지 단위 발송 상태 관리
    • ATTEMPTING / SUCCESS / FAIL
  • 발송 시도 횟수 기록
  • 외부 발송 시스템 메시지 ID 저장
  • 중복 발송 방지 로직 구현

4.5 확장 기능

  • 이메일, SMS 외 Push 메시지 확장 가능 구조
  • 특정 시간대 예약 발송 기능
  • 발송 실패 메시지 재처리(Replay) 기능

5. 기술 스택

● FrontEnd - React ● BackEnd - Java 17 - Springboot 3.X - Spring Batch - Kafka - Spring JPA / JDBC - Spring REST Docs - JUnit5 / Mockito / Jacoco ● Database / Infra - MySQL 8.0 - AWS - Redis


6. 데이터베이스 설계

https://www.notion.so/1-2d9d55c21c58802ea317fac5a07c480c

나머지 기능명세서 및 요구사항 정의서 엔티티 설계 ERD 다이어그램 확인가능

7. 기대 효과

  • 대용량 트래픽 환경에서의 비동기 메시지 처리 경험
  • Kafka 기반 이벤트 드리븐 아키텍처 이해
  • 메시지 발송 실패 대응 및 재처리 전략 구현
  • 실무형 요금 청구 및 알림 시스템 설계 경험

Pinned Loading

  1. Front-end Front-end Public

  2. Back-end Back-end Public

    1

Repositories

Showing 4 of 4 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…