강의

멘토링

커뮤니티

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

wheon06님의 프로필 이미지
wheon06

작성한 질문수

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

코드 느끼기

상품 목록 조회 고도화 질문

작성

·

30

1

상품 목록 조회가 복잡해질 때의 상황을 생각해보고 있는데요. 감이 오지 않는 부분들이 몇가지 있어 질문드립니다.

 

상품 목록 조회 시 옵션 개념이 있다면 재고는 어떻게 처리해야 할까요?

 

재고는 상품옵션들의 조합이 가지고 있는 것이 이상적일 것 같은데, 상품 목록 조회던, 상세 조회던 품절 여부와 최대 구매가능 수량을 나타내기 위해서는 재고 정보도 필요해보입니다. 따라서 Product 필드에 해당 상품의 전체재고수량(모든 조합의 실재고 합)을 필드로 가지고 있는게 맞나? 라는 생각이 들고... 필드로 가지고 있다면 상품 조회 시 조합을 전부 조회하고 매번 합해 주어야 하나? 그럼 Product 테이블 컬럼단에 미리 합한 값을 넣어두어야 하나? 여러 생각이 듭니다.

 

다음으로는 프로모션(타임세일) 적용가, 쿠폰적용가 등으로 보여줘야 한다면 이게 실질적으로 Product 도메인 객체의 가격을 변경해도 되는 건가? 라는 생각도 했습니다.프로모션(타임세일) 적용가, 쿠폰적용가 등으로 보여줘야 한다면 쿠폰적용가, 타임세일 적용가 등이 처음에는 보여주기만을 위한 정보이지 않을까 생각했는데, 실제 주문할 때 반영될 금액이기도 하고, 타임세일 같은 경우는 대부분 모두에게 적용되어 보이는 형태이기에... 뷰의 목적이 아니라 개념적으로 봐도 되는걸까? 라는 생각이 듭니다.

조금 고도화 하여 생각해보니 감이 잡히지 않는 부분들이 너무 많네요,,, 실무에서는 주로 어떤 구조를 추구하는지 제미니님은 어떻게 생각하시는지 궁금합니다. 긴 글 읽어주셔셔 감사드려요!

답변 2

0

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

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

[옵션 존재 시 재고 관련]

상품 옵션이 존재한다면 구매 단위가 상품옵션이 되는 것 이므로 상품 옵션 단위로 재고를 구성하는게 맞을 것 같습니다!

Product 는 상위의 대표 상품에 대한 의미로 사용해야할 것 같고 재고에 대해서는 몰라야할 것 같습니다

별개로 조회 시에는 전략이 필요할 것 같습니다.
주기적으로 배치를 돌려서 모든 옵션의 재고가 다 떨어진 상품을 목록에서 제외 시키는 방법이 있을 것 같구요

준 실시간으로 하려면 매번 전체 옵션의 재고를 체크해야하는 전략이 있을 것 같습니다

이런 부분은 요구사항과 서비스 특징을 참고하여 구현하면 될 것 같습니다

 

[프로모션 관련]

제 생각에는 상품 자체의 가격을 변경하는 것은 최종적으로 UI단에서만 그렇게 처리 되면 될 것 같습니다
개념적으로 할인이라는 것은 상품 입장에서는 당하는 관점이라고 생각합니다

그렇기에 상품에 직접적으로 할인을 설정하는 것 보다는 할인이 별개 개념으로 존재해서 두개가 병합되는 형태가 더 좋다고 생각합니다

다만 클라쪽에서 "우리 계산로직 넣기 힘들고 API 하위호환성 문제도있으니 서버에서 최종 금액 주세요" 라고 한다면 Presentation Layer에서 가격을 조합해서 내리면 된다고 생각합니다


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

0

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

백엔드 개발에서 상품 목록 조회 시 다양한 조건(예: 옵션, 재고, 프로모션 등)들을 고려하는 것은 매우 중요한 주제입니다. 질문하신 두 가지 주요 질문을 다루면서 실무적인 접근 방안을 추천 드리겠습니다.

1. 옵션 기반 재고 관리

상품의 옵션이 복잡해질 경우, 재고 관리도 함께 복잡해집니다. 이는 각 옵션의 조합마다 개별적으로 재고를 관리해야 하는 도전과제를 제시합니다.

  • 전체 재고 표시 방법:
    • 일반적으로는 각 상품 옵션의 조합마다 별도의 재고 정보를 테이블로 관리하며, 이를 이용해 옵션 조합별로 구체적인 재고를 추적합니다.
    • 상품 테이블에는 전체 재고량을 따로 보관하기도 합니다. 새 옵션이 추가되거나 재고가 변경될 때, 이 데이터를 업데이트하여 상품 전체의 재고 상태를 관리합니다.
    • 재고 변화가 잦은 경우엔 계산 비용이 높을 수 있으므로, 이벤트 기반의 재고 업데이트(or 캐싱) 전략을 도입하는 것도 고려해볼만한 방법입니다.

2. 프로모션 및 쿠폰 적용 가격 관리

프로모션이나 할인 적용가는 단지 화면에 표시되는 데이터가 아니라, 실제 구매 단계에서 중요한 역할을 합니다.

  • 적용 가격 관리 방법:
    • 가격 정책(프로모션, 쿠폰)을 별도의 엔티티로 관리하여, 해당 정책이 적용된 최종 금액을 계산하도록 합니다. 이를 통해 기본 가격을 변동시키지 않으면서, 다양한 할인 및 프로모션 정책을 유연하게 관리할 수 있습니다.
    • 프로모션이 적용되었을 때는, 프로모션 기간 및 타입(예: 타임세일, 쿠폰할인)에 따라 달라지는 가격을 고객에게 반영합니다.

상품 옵션 및 다양한 가격 정책을 관리하는 데 있어서는 복잡성이 증가할 수 있으므로, 각 서비스가 자신의 역할을 분리하여 책임지도록 설계하면 유지보수가 용이해집니다.

관련 유사 질문 및 참고 링크:
- 컬렉션 조회에서의 데이터 조립: 다양한 데이터 조합을 고려할 때, 어떻게 각각의 서비스를 디자인하고 조립하는지에 대한 논의가 이루어졌습니다.

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

wheon06님의 프로필 이미지
wheon06

작성한 질문수

질문하기