강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

비오님의 프로필 이미지
비오

작성한 질문수

제미니의 개발실무 - 커머스 백엔드 기본편

개념 정리

찜목록 조회시 product 의 상태

해결된 질문

작성

·

16

1

찜 목록을 조회해야하는 상황에서,
Product 의 상태가 전이되는 경우가 있을거 같은데요. 예를들어, 어떤 이유로 soft delete 되거나, 판매자가 숨김 처리를 하거나,,

이런 경우에는 물론,, 회사마다 정책이 다른거 같긴하더라구요.
예를들어, 들어가니 404 페이지가 뜨는 경우도 있고, 안보여주는 경우도 있구요.

이때 고민되는 부분이 찜 목록 (페이지네이션 한다는 가정) 을 조회할 때 아래의 문제들이 발생하는거 같은데, 혹시 어떻게 푸는게 좋을까요?
1. product 의 상태를 이벤트로 받아서, 찜 목록을 처리한다. -> 이 경우 찜이 많이 된 경우 (유명한 아이템이라 100만개의 찜이 있는) 처리가 애매해보이더라구요.
2. join 을 통해 풀어준다. -> 현재는 상품의 찜 목록이라, 사실 같은 팀내에 같은 서비스가 접근 가능해서 join 이 가능할거 같은데,
이게 찜이 아니라, 나의 리뷰보기 같은 경우 다른 팀에 있을 가능성이 있어서 join 을 통해 풀기 어려운 경우도 있을거 같다는 생각도 드네요.

답변 2

1

제미니님의 프로필 이미지
제미니
지식공유자

안녕하세요 질문 감사드립니다

우선 규모에 따라 다르고 찜을 얼마나 비즈니스에 따라 중요하게 다루는지에 따라 다를 것 같습니다

현재 강의에서 정의한 상황 일반적인 기준으로 보면 사실 페이징 처리 시에 Product 정보를 조회하기만 해도 충분할 것 같습니다

  • 찜 20개 조회 => 찜의 productIds 로 상태 조회 -> 상태 기준 조합하여 응답

다만 여기서 데이터 빵꾸가 난 페이징 응답이 내려갈 수 있습니다만, 이 찜 목록이 실제 1,2,3,4,5 같은 페이지 기반 UI가 아니라 무한 스크롤 기반이라면 일반적으로 크~게 문제는 없을 것 같습니다
(실제 페이지 기반 UI라 해도 찜이 그렇게 민감한 영역이 아니라고 생각해서, 몇개가 빵꾸나서 내려가겠지만 다음 데이터가 있다면 쭉 내려줄 것 이니까요! 이건 기획하고 상의하는게 맞아보입니다)

다른 전략으로는 만료된 상품이라고 아예 고객의 UI에 표시하고 삭제를 직접 유도하는 것 입니다
(모 쇼핑몰이 이렇게 구현해두었더라구요)


강의 예제 상황을 벗어나 규모가 커졌다고 가정한다면 규모에 따라 다르지만 배치로 데이터 동기화 처리, 이벤트 기반으로 데이터 복제 (다만 적어주신 것 처럼 이벤트를 받아서 찜 데이터를 삭제하는 것이아니라, Product 데이터 복제본을 저장 후 join or 제가 적은 쿼리 전략 활용) 등이 있을 것 같습니다!

모쪼록 답이 되었길 바랍니다! 감사합니다!

비오님의 프로필 이미지
비오
질문자

아하, 팀의 규모가 커지는 경우 데이터를 복제해서 가지고 있는 경우도 고려해볼 수 있겠군요.
감사합니다!!

0

안녕하세요, 인프런 AI 인턴입니다. 비오님!

찜 목록을 조회할 때, Product의 상태 변화를 어떻게 처리할지에 대한 고민을 공유해주셨군요. 이와 관련하여 몇 가지 접근 방식을 고려할 수 있습니다. 제가 관련된 기존 질문에서 답변을 찾았습니다.

  1. “상품 상태 변경 시 찜 목록 유지에 대한 정책 질문입니다.”

    • 해당 대상 제품이 삭제되거나 비공개 처리되는 경우, 어떻게 찜 목록에서 이를 효과적으로 반영할 것인지에 대한 다양한 접근 방식과 트레이드오프가 설명되어 있습니다.
  2. “Event-driven 아키텍처에서 Product 상태 변경 관리에 대해 궁금합니다.”

    • 상태 전이를 관리하는 이벤트 기반의 접근법에 대한 설명이 있어, 대규모 데이터(예: 100만 찜)의 상태 전이 시 고려해야 할 기술적 요소와 최적화 방안이 제시됩니다.

각 접근 방법에 대한 간단한 설명입니다:

  • 이벤트 기반 처리: 상품의 상태 변화에 따라 찜 목록을 즉시 업데이트할 수 있습니다. 이는 실시간으로 데이터를 동기화할 수 있지만, 대량의 데이터를 처리해야 하는 경우 성능 고려가 필요합니다.

  • JOIN을 통한 처리: 찜 목록을 조회할 때, 상품 데이터와 조인하여 실시간으로 상태를 반영할 수 있습니다. 이는 서비스 간 데이터 공유가 가능할 때 유용합니다. 하지만 다른 팀이나 분산 시스템 환경에서는 복잡해질 수 있습니다.

이는 설계의 유연성과 향후를 고려하여 선택해야 하는 요소들이 많습니다. 회사의 정책이나 시스템 구조에 따라 적절한 방식을 선택하시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

비오님의 프로필 이미지
비오

작성한 질문수

질문하기