Skip to content

[BE | 뉴스] 데이터 정합성 보장을 위한 Outbox Pattern 구현 및 검색 동기화 자동화 #31

@slay1379

Description

@slay1379

✅ 이슈 제목

  • [BE | 뉴스] 데이터 정합성 보장을 위한 Outbox Pattern 구현 및 검색 동기화 자동화

📌 이슈 유형

  • 기능 추가
  • 버그 수정
  • 리팩토링
  • UI 작업
  • 문서 작성
  • 기타

🛠️ 작업 내용

  • 목표: 기존의 Double Write 방식(Service에서 MySQL과 ES를 동시에 저장)의 한계점인 트랜잭션 불일치 문제를 해결합니다.
  • 해결 방안: Transactional Outbox Pattern을 도입하여, 뉴스 저장 시 MySQL 저장과 '이벤트 발행'을 하나의 트랜잭션으로 묶고, 별도의 스케줄러가 비동기로 Elasticsearch에 데이터를 적재하도록 변경합니다.
  • 기대 효과: 뉴스 크롤링/저장 시 데이터 누락 방지 및 시스템 간 결합도 감소.

📍 Todo

  • OutboxEvent Entity 및 Repository 구현 (MySQL outbox_event 테이블)
  • NewsService 저장 로직 리팩토링 (직접 ES 호출 제거 -> Outbox 이벤트 발행으로 변경)
  • NewsEsDto 생성 (JSON 직렬화/역직렬화 및 Elasticsearch 매핑용 DTO)
  • OutboxEventScheduler 구현 (2초 주기로 PENDING 상태 이벤트 감지 및 처리)
  • NewsSearchService 동기화 메서드 구현 (기업명 매핑 로직 포함)
  • 기존 데이터 마이그레이션(Backfill) 테스트 및 검증 완료

📎 참고사항

  • 관련 아키텍처: Phase 2 (데이터 정합성 확보)
  • 변경 파일:
    • NewsService.java
    • NewsSearchService.java
    • OutboxEventScheduler.java
    • NewsEsDto.java
    • OutboxEvent.java

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions