Skip to content

Conversation

@jher235
Copy link
Member

@jher235 jher235 commented Jan 1, 2026

🔊 Summaries

  • Related Artist 데이터 정합성을 위한 배치 작업 구현
  • Processor 에서 external server 를 호출하는 부분을 병렬적으로 처리한 후 writer에선 청크 단위로 받아서 이를 한번에 처리하는 형태입니다. 지난 Artist Song에선 Writer에서 artist 마다의 작업을 스레드별로 할당해서 external server 호출, DB update를 모두 수행했었는데 이번에 작업하면서 이 방식이 DB에 부하를 훨씬 덜 줄 수 있는 형태가 될 것 같아서 추후 리팩토링을 생각하고 있어요.
  • relatedArtist가 존재하지 않는 Artist 들은 Apple Music API 에서 404 를 반환하는데.. Processor 에서 Future 로 감싸서 응답을 주기 때문에 feignClient 의 응답에 문제가 있을 경우 artistId를 알 수 없어요. 따라서 ArtistIdAwareException 을 통해 artistId를 전달하고 로깅 시 사용하도록 했습니다.

✨ Notification

jher235 added 14 commits January 1, 2026 22:35
- getRelatedArtistsById 에 offset 파라미터 추가
- ArtistRelations 를 사용하여 데이터를 전달하도록 구현. confetiRelatedArtist 보다 구조가 효율적이라고 판단함
- 해당 서비스 내부에서 DB의 데이터를 가져오고 정합성을 맞추는 작업을 모두 진행하도록 함
- 배치 작업 특성 상 데이터를 전달할 때 파라미터 타입이 Map<String, Set<String>>, List<ConfetiRelatedArtist>, List<ArtistRelations> 등으로 달라지는 형태가 됐는데, 이를 파사드 단에서 관리하면서 서비스를 호출하는 것보다 newArtistRelations 라는 파라미터를 한번에 전달하는게 더 좋다고 판단함
- 정합성 작업은 싱크가 맞지 않는다고 해서 큰 문제가 발생하진 않으므로 오류 발생 시 로그만 남기고 다음 작업으로 넘어가도록 구현함
- 기존 try-catch에서 예외를 던지도록 변경하고 이를 listener 가 처리하도록 함. 책임 분리와 retry 등을 위함
-  feignClient 에서 예외가 발생할 경우 Future 로 감싸서 응답을 주기 때문에 artistId를 알 수 없음 따라서 ArtistIdAwareException 으로 wrapping 하여 문제가 발생한 artist 의 id 를 전달함
@jher235 jher235 self-assigned this Jan 1, 2026
@github-actions github-actions bot requested a review from ch1hyun January 1, 2026 18:07
@jher235 jher235 merged commit 603d47f into develop Jan 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants