Skip to content

Conversation

@Dimo-2562
Copy link
Contributor

❤️ 기능 설명

주요 개선 사항

1. 중복 처리 최적화 (성능 50% 개선: 28초 → 12초)

  • 변경 전: Processor에서 각 아이템마다 existsByUrl() 개별 조회 (N번의 SELECT)
  • 변경 후: Reader에서 모든 URL을 한 번에 배치 조회하여 필터링 (1번의 IN 쿼리)
  • PostRepository.findExistingUrls() 메서드 추가로 배치 중복 체크 구현

2. 병렬 처리 방식 개선

  • 변경 전: Spring Batch taskExecutor 사용 (실질적 병렬화 효과 없음)
  • 변경 후: parallelStream()으로 테크 블로그마다 병렬 RSS 수집
  • ConcurrentLinkedQueue → 단순 List 사용으로 코드 간소화

3. 좀비 프로세스 정리 최적화

  • 변경 전: 5분마다 스케줄러로 RUNNING 상태 이력 정리
  • 변경 후: 크롤링 완료 후 한 번만 실행
  • 불필요한 스케줄 작업 제거로 리소스 절약

4. 보안 강화

  • 제거: 모든 SSL 인증서를 신뢰하는 InsecureTrustManagerFactory 코드 (MITM 공격 위험)
  • 추가: 연결 타임아웃 설정 (10초)

5. 쿼리 최적화

  • TechBlog 조회 시 getReferenceById() 사용으로 프록시 객체만 가져오기
  • TechBlog의 id 외 필드를 사용하지 않으므로 불필요한 SELECT 쿼리 제거

성능 측정 결과

  • 크롤링 시간: 25초 → 12초 (약 50% 개선)
  • URL 중복 체크: N번의 SELECT → 1번의 IN 쿼리
  • 테크 블로그 조회 최적화: findById → getReferenceById

연결된 issue

연결된 issue를 자동으로 닫기 위해 아래 {이슈넘버}를 입력해주세요.

close #137



🩷 Approve 하기 전 확인해주세요!

  • 리뷰어가 확인해줬으면 하는 사항 적어주세요.
  • [ ]

✅ 체크리스트

  • PR 제목 규칙 잘 지켰는가?
  • 추가/수정사항을 설명하였는가?
  • 테스트 결과 사진을 넣었는가?
  • 이슈넘버를 적었는가?

@Dimo-2562 Dimo-2562 self-assigned this Jan 2, 2026
@Dimo-2562 Dimo-2562 added ✨ IMPROVE 기존 기능 변경 🏢 domain:source 테크블로그 출처 labels Jan 2, 2026
@Dimo-2562 Dimo-2562 merged commit d02e64f into develop Jan 2, 2026
1 check passed
@Dimo-2562 Dimo-2562 deleted the improve/#137 branch January 2, 2026 14:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🏢 domain:source 테크블로그 출처 ✨ IMPROVE 기존 기능 변경

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[IMPROVE] RSS 크롤링 성능 및 안정성 개선

2 participants