
핵심 기능
- OpenAPI 기반 부트캠프 데이터 자동 수집 시스템 구축
- Spring Batch + Quartz 기반 데이터 수집 자동화
- QueryDSL 기반 부트캠프 검색 및 리뷰 기능 구현
프로젝트 개요
고용24 OpenAPI 기반 부트캠프 정보를 자동 수집하고
리뷰와 커피챗 기능을 제공하는 커뮤니티 플랫폼을 개발했습니다.
Spring Batch와 Quartz Scheduler를 활용하여 외부 데이터 수집 자동화 시스템을 구축하고
신규 부트캠프 등록 시 알림 이벤트를 생성하여 SSE 기반 알림 서비스와 연동하도록 구현했습니다.
- GitHub. https://github.com/shCHO9801/boot-talk-back
- 시연 영상. https://www.youtube.com/watch?v=B4xHVZl11Qc
사용 기술
Backend
Spring Boot, Spring Batch, Quartz Scheduler, JPA, QueryDSL
Infrastructure
MySQL, Redis
Communication
SSE (알림 서비스 연동)
ERD
시스템 아키텍처
아키텍처 구성도

데이터 파이프라인 전체 흐름

구조 요약
- OpenAPI 기반 부트캠프 데이터 수집
- Spring Batch + Quartz 기반 데이터 수집 자동화
- Redis 기반 신규 Bootcamp 캐싱
- 알림 이벤트 생성 후 SSE 서비스로 전달
팀 구성 및 역할
주요 구현
OpenAPI 기반 부트캠프 데이터 수집
- 고용24 OpenAPI 기반 부트캠프 데이터 수집
- Bootcamp / TrainingCenter 엔티티로 변환 후 저장
trainingProgramId + bootcampDegree기준 중복 방지 로직 구현
Spring Batch 기반 데이터 수집 자동화
- Spring Batch 기반 부트캠프 데이터 수집 Job 구성
- Quartz Scheduler를 이용한 주기적 데이터 수집 자동화
- 신규 데이터만 DB에 저장하도록 로직 구현
Bootcamp 검색 기능
- QueryDSL 기반 동적 검색 구현
- 지역 / 카테고리 / 평점 / 기간 필터 지원
- 페이징 기반 조회 기능 구현
알림 이벤트 생성
- 신규 부트캠프 등록 시 사용자 알림 이벤트 생성
- Redis 기반 신규 Bootcamp 캐싱
- SSE 알림 서비스와 연동되는 이벤트 발행 처리
문제 해결 및 개선 경험
대량 알림 처리 시 서버 부하 문제
Quartz Job에서 다수 사용자에게 알림 이벤트를 생성하는 과정에서
단일 Job 내에서 반복 호출이 발생하며 서버 부하가 증가하는 문제가 있었습니다.
→ 알림 전송 구조를 이벤트 기반으로 분리하여
Quartz Job은 알림 이벤트 생성만 담당하도록 리팩토링했습니다.
결과
- Job 처리 안정성 개선
- 일부 알림 실패가 전체 Job 중단으로 이어지는 문제 해결
OpenAPI 요청 실패 문제
고용24 OpenAPI 요청 시 일부 파라미터(sort, sortCol) 사용 시
API 응답이 정상적으로 반환되지 않는 문제가 발생했습니다.
→ 요청 파라미터 조합을 테스트하여
문제가 되는 파라미터 제거 후 정상 데이터 수집 확인
외부 API 응답 데이터 매핑 문제
API 응답 JSON 필드와 DTO 필드명이 일치하지 않아
일부 데이터가 null로 매핑되는 문제가 발생했습니다.
→ @JsonProperty와 @JsonIgnoreProperties 적용으로
JSON → DTO 매핑 안정성 개선
Spring Batch 5 환경 변경 대응
Spring Batch 5에서 JobBuilderFactory가 제거되어
기존 Batch Job 설정이 동작하지 않는 문제가 발생했습니다.
→ JobRepository 기반 Builder 방식으로 변경하여
Spring Batch 5 구조에 맞게 수정
프로젝트 결과
- 외부 OpenAPI 기반 부트캠프 데이터 수집 파이프라인 구축
- Spring Batch + Quartz 기반 데이터 자동 업데이트 시스템 구현
- QueryDSL 기반 복합 조건 검색 기능 구현
- SSE 기반 실시간 알림 시스템 구축
프로젝트 회고
외부 OpenAPI 데이터를 수집하고 이를 서비스 기능과 연결하는 과정에서
데이터 수집 → 저장 → 알림 이벤트 생성까지 이어지는 데이터 파이프라인 구조를 직접 설계해 볼 수 있었습니다.
Spring Batch와 Quartz를 활용한 데이터 수집 자동화를 구현하며
배치 처리 구조와 스케줄링 시스템에 대한 이해를 높일 수 있었습니다.

