쇼핑몰에서 상품 옵션과 SKU를 분리해야 하는 이유
옵션은 고객에게 보여 주는 선택지이고 SKU는 창고에서 세는 단위입니다. 둘을 합쳐 두면 재고·연동·정산에서 어떤 문제가 생기는지, 분리하면 무엇이 쉬워지는지 설명합니다.
옵션과 SKU는 서로 다른 목적을 가진다
쇼핑몰을 만들 때 옵션은 화면 요소처럼 다뤄지기 쉽습니다. 상품 상세에 셀렉트 박스를 두고 "빨강 / 파랑"을 넣으면 끝나는 것처럼 보입니다. 하지만 그 선택은 창고에서 물건을 집을 때, 발주할 때, 정산할 때 전부 다시 쓰입니다.
- 옵션 — 고객에게 보여 주는 선택지. 마케팅 문구처럼 바뀔 수 있습니다.
- SKU — 세고, 사고, 보내는 단위. 바뀌면 안 되는 값입니다.
이 둘을 한 덩어리로 저장하면, 보여 주기 위해 바꾼 값이 재고와 발주까지 흔들게 됩니다.
합쳐 두면 생기는 문제
1) 옵션별 재고를 셀 수 없다
상품 단위로만 재고를 관리하면 "빨강 L은 품절인데 파랑 M은 남았다"를 표현할 수 없습니다. 결국 운영자가 품절 옵션을 수동으로 숨기게 되고, 그 작업을 놓치면 팔 수 없는 주문이 들어옵니다.
2) 외부 연동에서 맞출 기준이 없다
WMS, 오픈마켓, 공급사 시스템과 데이터를 주고받으려면 양쪽이 같은 단위로 대화해야 합니다. 우리 쪽에 SKU가 없으면 "빨강 L"이라는 문자열로 맞추게 되고, 표기가 조금만 달라도 매칭이 실패합니다.
3) 정산과 원가를 계산할 수 없다
같은 상품이라도 옵션에 따라 매입 단가가 다른 경우가 많습니다. SKU 단위로 원가를 저장하지 않으면 마진을 계산할 수 없고, 결국 전체 평균으로 뭉뚱그리게 됩니다.
분리하면 구조가 이렇게 된다
| 상품 | 고객이 인지하는 하나의 물건. 이름, 설명, 이미지, 카테고리. |
|---|---|
| 옵션 축 | 색상, 사이즈처럼 선택의 기준이 되는 축과 선택지. |
| SKU | 옵션 선택지의 조합 하나. 고유 코드, 재고, 판매가, 매입가, 바코드가 붙습니다. |
| 채널 매핑 | 이 SKU가 각 판매 채널·공급처에서 어떤 식별자로 불리는지 기록합니다. |
주문 항목은 상품이 아니라 SKU를 참조합니다. 이것이 핵심입니다. 주문이 SKU를 가리키면 재고 차감, 피킹 지시, 발주, 정산이 모두 같은 키로 이어집니다.
SKU 코드는 어떻게 만들까
규칙을 담은 코드(예: 브랜드-품목-색상-사이즈)는 사람이 읽기 좋지만, 나중에 규칙이 바뀌면 코드를 다시 만들어야 합니다. 실무에서는 다음이 무난합니다.
- 내부 식별자는 의미 없는 일련번호로 두어 영원히 바뀌지 않게 합니다.
- 사람이 읽는 코드는 별도 필드로 두고, 필요하면 규칙을 바꿔 다시 부여합니다.
- 바코드는 내부 식별자와 1:1로 연결합니다.
이미 합쳐서 만들어 버렸다면
운영 중인 쇼핑몰을 갈아엎기는 어렵습니다. 보통은 다음 순서로 옮깁니다.
- 기존 옵션 조합을 그대로 SKU 테이블로 옮겨 일련번호를 부여합니다.
- 신규 주문부터 SKU를 참조하도록 주문 항목에 SKU 컬럼을 추가합니다(기존 데이터는 마이그레이션).
- 재고를 SKU 단위로 재집계합니다. 이 시점에 실사를 함께 진행하는 편이 좋습니다.
- 외부 연동을 SKU 기준으로 전환합니다.
정리
옵션은 고객을 위한 것이고 SKU는 업무를 위한 것입니다. 지금 재고를 관리하지 않더라도, 앞으로 창고를 쓰거나 외부 채널에 붙일 계획이 있다면 처음부터 분리해 두는 편이 압도적으로 쌉니다. 나중에 분리하는 비용은 데이터 마이그레이션과 재고 실사까지 포함되기 때문입니다.
관련 내용
지금 쓰는 쇼핑몰에서 막히는 지점이 있으신가요?
판매 방식(B2C·B2B·위탁·사입)과 막히는 기능을 알려 주시면
맞춤 개발이 필요한 부분과 아닌 부분을 구분해 드립니다.