다챠 서비스의 주요 데이터 처리 작업을 자동화하여 주기적으로 수행하기 위한 모듈입니다.
스케줄링을 통해 매일 또는 매시간 처리 작업을 수행하여 시스템의 안정성과 효율성을 유지하는 역할을 담당합니다.
- 제재 복구, 판매글/쿠폰 만료 등 서비스 운영에 필요한 핵심 배치 로직을 설계 및 구현
- JDBC 기반 Reader/Writer 전환 및 인덱스 추가로 10만 건 데이터 처리 속도 37분 → 26초로 개선
- Retry/Skip 전략 및 Slack, Discord 알림 연동으로 배치 안정성 강화
- 관리자가 직접 배치 Job의 실행을 제어할 수 있는 기능을 제공하여, 예외 상황 발생 시 수동 조치 및 데이터 정합성 관리 용이성 증대
- 배치 작업으로 변경된 데이터(ex. 판매글 만료)를 Elasticsearch에 동기화하여 검색 결과의 정합성을 보장
- 배치 작업 결과를 Kafka 메시지로 발행하여, 알림 서버와 느슨하게 결합된구조로 설계
이 모듈은 다음과 같은 핵심 기능들을 제공합니다.
입찰 판매글의 낙찰자를 선정하여 거래를 진행합니다.
-
최종 입찰자 선정: 매일 스케줄링을 통해 각 판매글에 대한 낙찰자를 선정합니다.
-
거래 프로세스 진행: 선정된 낙찰자와 판매자 간 거래 프로세스를 진행합니다.
제재 기간이 종료된 사용자에 대한 권한 복구 처리를 수행합니다.
- 제재 만료 대상 권한 복구: 매일 스케줄링을 통해 제재 기간이 종료된 사용자를 조회하여 권한을 복구합니다.
만료일자가 지난 판매글을 만료처리합니다.
- 판매글 만료 처리: 매일 스케줄링을 통해 만료일자가 지난 판매글을 조회하고, 해당 판매글을 기간만료 처리합니다.
이벤트 쿠폰과 데이터 충전권의 만료를 자동 처리합니다.
-
데이터 충전권 만료 처리: 매일 스케줄링을 통해 만료일자가 지난 데이터 충전권을 조회하고, 해당 충전권을 기간만료 처리합니다.
-
이벤트 쿠폰 만료 처리: 매일 스케줄링을 통해 만료일자가 지난 이벤트 쿠폰을 조회하고, 해당 쿠폰을 기간만료 처리합니다.
매달 사용자 보유데이터 및 판매데이터를 초기화합니다.
-
보유데이터 초기화: 매일 스케줄링을 통해 데이터 초기화 일자에 해당하는 사용자의 보유데이터를 해당 요금제에 설정된 초기 데이터 용량으로 초기화합니다.
-
판매데이터 초기화: 매일 스케줄링을 통해 데이터 초기화 일자에 해당하는 사용자의 판매데이터를 요금제에 있는 0으로 초기화합니다.
서비스 거래량과 시세를 주기적으로 통계 내립니다.
-
거래량 통계: 매 시간별로 통신사별 일반거래 및 입찰거래의 총 거래량을 집계하여 통계를 생성합니다.
-
시세 통계: 매 시간별로 통신사별 일반거래 및 입찰거래의 100MB당 평균 거래 가격을 계산하여 통계를 생성합니다.
-
Backend: [Spring Boot, Java 17, Spring Data JPA, Spring Batch]
-
Database: [MySQL]
-
Infrastructure: [AWS, Docker]
-
Monitoring: [Grafana, loki]