<aside>
<img src="/icons/info-alternate_gray.svg" alt="/icons/info-alternate_gray.svg" width="40px" /> Overview
이 문서는 Dot Slash Dash 의 신규 스케줄러 개발 진행 과정과 구체적인 정보에 대한 설명을 포함하고 있습니다.
각 단계별 진행 과정과 목적을 설명하기 위해 작성되었습니다.
</aside>
<aside>
<img src="/icons/list-indent_gray.svg" alt="/icons/list-indent_gray.svg" width="40px" /> List Of Contents
</aside>
1. 기술 스택 정의
기존 기술 스택 : Python - Cronjob
변경 기술 스택 : Kotlin, Spring Batch Server - Pod
- 선택 이유
- Spring Boot : 잘 정의된 구조와 많은 자료로 유지보수성을 향상시킵니다.
- Kotlin : Java 기반의 Spring과 호환성이 좋고, Java와 비교했을 때 결하고 가독성이 좋아 생산성을 높일 수 있습니다.
- Spring Batch : 배치 작업을 처리하는 강력한 기능을 제공합니다. (트랜잭션 관리, 청크 기반 처리, 재시도 및 오류 처리 등)
- Cronjob → Batch Server(pod)
- 초기화 시간 : Spring Boot 는 JVM 기반으로 동작되는데 이는 초기화하는데 많은 시간을 소요하게 됩니다. 따라서, 시간에 맞게 매번 새로 구동되어야 하는 Cronjob 보다는 지속적으로 실행하는 방식인 Batch Server(pod)가 더 적합하다 판단하였습니다.
- 오류 처리 및 복구 : Batch Server는 지속적으로 실행되어 있기 때문에 단발성 실행인 Cronjob 보다 높은 신뢰성을 제공합니다.
2. 개발 및 테스트
-
서비스 구조

- 데이터소스 및 엔티티 정의
- PostgreSQL DataSource : 모니터링 할 대상의 데이터소스 (
JpaTransactionManager
사용)
- Batch DataSource : 배치 작업 로깅 데이터소스 (
PlatformTransactionManager
사용)
- Job 정의
- 예약된 포인트 지급, 만료된 포인트 소멸, 예약된 정산 확정, 마케팅 수신 동의 갱신 및 알림
- Read -> Processor -> Writer 구성
- Reader : DB로 부터 필요한 데이터 읽어오기 (
JpaPagingItemReader
, JPQL
사용)
- Processor : 데이터 처리 과정
- Writer : 처리된 데이터 DB에 기록 (JPA 변경감지 적용), 알람 작업 추가
- CI/CD 구축
- ECR 빌드(build_and_push)
- 배포 승인(deployment_hold)
- EKS 이미지 업데이트(deployment)
- 테스트
- 동작 테스트 : Datadog (Log), Slack 알람, DB 데이터 변경 등을 모니터링 하며 기존과 제대로 동작하는지 테스트
- 실패 전략 수립 : Log - Datadog 수집, 실패된 데이터 - DB에 추가 기록
3. 문서화
Asgard 가이드 문서