Skip to content

[Feat] 매거진 이미지 backfill 실행 추가 #201

Description

@hwistlezz

📌 이슈 종류

  • ✨ 기능 추가 (Feature)

📝 작업 내용

기존 매거진 배너와 썸네일을 최적화 이미지로 옮기는 실행기를 추가합니다. #194의 공통 기능을 사용하고, 식당·프로필과 같은 방식으로 조사·변환 준비·READY 이미지 연결을 나눠 처리합니다.

배너와 썸네일은 각각 전환하며, 기존 이미지 표시 방식과 매거진 정보는 유지합니다.

✅ 체크리스트

  • 선행 PR #200을 확인하고 작업 브랜치 준비
  • 매거진의 진행 기록 테이블과 Flyway migration 추가
  • 배너·썸네일의 기존 식별 기준과 업로드 목적 유지
  • 용도·모드별 처리 범위와 진행 위치를 저장하고 중단 후 재개·재시도·집계 지원
  • 서버 시작 후 정해진 분량만 실행하고 기본값은 비활성으로 설정
  • 조사 단계에서는 DB·S3에 쓰지 않고, 변환 준비와 READY 연결을 분리
  • 삭제된 매거진과 이미 전환된 이미지 슬롯 제외
  • 매거진 잠금 조회로 현재 삭제 상태·key·asset 연결 재확인
  • 이미지 UUID 연결·media 상태·진행 위치를 한 트랜잭션에서 반영
  • 기존 key, 다른 이미지 슬롯, ID·제목·리다이렉트 URL·삭제 상태 보존
  • 매거진 수정·삭제와 전환이 겹치거나 같은 슬롯에 중복 연결하는 상황 테스트
  • MySQL에서 제약 조건·실행 권한 인계·잠금 대기 중 만료·rollback·조회 계획 확인
  • 중단 처리가 거절되면 PAUSED 대신 LEASE_LOST로 표시하는지 테스트
  • 저장소 전체 장애에서는 cursor를 유지하고, 개별 실패는 checkpoint 저장 후에만 집계
  • 로그·지표에 콘텐츠 ID·S3 key·asset UUID·원본 식별값을 남기지 않도록 확인
  • 실패 원인별 집계와 재시도 성공·소진·지표 기록 실패 테스트
  • CI에서 매거진 MySQL 테스트가 실제 실행되고 실패·오류·건너뛴 테스트가 없는지 확인
  • 작업별 테스트와 코드 리뷰를 마치고 PR 검토 요청

💬 참고 사항

  • 선행 PR: [Feat] 프로필 이미지 backfill 실행 추가 (#199) #200. 구현 PR: [Feat] 매거진 이미지 backfill 실행 추가 (#201) #202.
  • 삭제된 매거진은 일반 조회와 같은 기준으로 제외합니다. 배너와 썸네일은 같은 매거진을 잠그되, 해당 슬롯만 변경합니다.
  • 새 API나 인증·권한 변경은 없습니다. 실제 AWS 적용, backfill 실행, 이미지 작업 발급 활성화와 legacy 삭제는 포함하지 않습니다.
  • 반복 SOURCE_UNREADABLE 중단 기준은 #203에서 보완합니다. 파일 정리·정합성 복구와 AWS 통합 테스트도 별도로 진행합니다.
  • PR은 검토 요청 상태이며 병합하지 않았습니다.

테스트 결과

  • #202의 3ad946b에서 매거진 실행기 38개와 실제 MySQL 영속성 테스트 26개 통과: 실패·오류·건너뛴 테스트 0개.
  • .\gradlew.bat build -x test --no-daemon 통과.
  • 전체 GitHub CI: 120개 스위트, 742개 테스트 통과, 실패·오류·건너뛴 테스트 0개.
  • MySQL backfill 전용 CI: 식당·프로필·매거진 영속성 통합 테스트 실행 및 통과.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions