Self-POS(무인 계산대): 무신사식 오프라인 고객경험을 설계하다
대기 시간을 줄이기 위해 Self-POS를 설계하고, 상태·검증·하드웨어까지 재구성했다.
오프라인 매장에서 고객은 상품보다 계산대 앞 대기를 먼저 경험한다. 무신사는 이 문제를 풀기 위해 Self-POS(무인 계산대) 를 도입해, 빠르게 결제하려는 고객과 도움을 원하는 고객의 선택지를 분리했다.
도입 범위는 처음부터 제한했다. 300평 이상 대형 스토어, 월 매출 일정 규모 이상인 점포를 우선 대상으로 삼고, 시니어 고객 비중이 높은 매장은 제외했다. 인력 효율과 설치 공간 측면에서도 Self-POS는 직원 POS 대비 같은 면적에 4대에서 6대로 늘릴 수 있는 구조였다.
가장 먼저 풀어야 했던 문제는 멀티UID였다. 동일 상품에 이벤트용 UID가 붙어 하나의 바코드에 여러 UID가 매핑되는 케이스를 정리하기 위해, 단순한 예외 처리 대신 상품 데이터에서 오프라인판매여부 = N으로 정리해 Self-POS에 노출되지 않도록 했다. 직원의 판단에 의존하던 문제를 시스템과 데이터 정합성으로 옮긴 것이다.
기획은 현재 경험만이 아니라 미래 전환까지 포함했다. 런칭은 바코드 기반으로 시작하되, 장기적으로는 바코드 Only → 바코드 + RFID Dual → RFID Only 로 전환할 계획을 전제로 하드웨어를 설계했다. 그래서 지금은 RFID를 쓰지 않더라도, 키오스크 내부에는 RFID 리더기, 매립식 QR/바코드 리더기, 여권 리더기까지 모두 담아 두었다.
프론트엔드는 Self-POS를 단순 화면이 아니라 연속된 결제 흐름으로 다뤘다. 비회원이 결제 중 회원가입을 하거나, 결제 단계에서 이전 화면으로 돌아가 상품을 다시 담는 경우에도 흐름이 끊기지 않도록, 화면별로 상태를 흩어 놓지 않고 단일 상태 흐름으로 유지했다. 바코드 스캐너, 여권 리더기, 결제 단말기, 영수증 프린터 같은 외부 디바이스 이벤트까지 모두 이 흐름 안에서 다뤘다.
또한 각 단계마다 진입 조건을 명확히 정의해 잘못된 상태로 다음 단계에 들어가지 않도록 막았다.
- 스캔한 상품과 주문서가 일치할 때만 결제 단계 진입
- 텍스리펀 가능 조건을 만족할 때만 텍스프리 단계 진입
- 결제 상태가 정상일 때만 결제완료 단계 진입
초기화 전략도 중요했다. 여러 고객이 한 포스를 이어 쓰는 환경이기 때문에, 유휴 시간(idle time) 기반 초기화가 필요했지만 결제 단말기 통신이나 API 호출처럼 실제로는 흐름이 진행 중인 구간까지 타임아웃으로 끊을 수는 없었다. 그래서 초기화가 가능한 구간과 보류해야 하는 구간을 나눠, 현재 상태를 기준으로 타이머를 멈추고 다시 시작하는 방식으로 설계했다.
오류는 고객과 직원의 관점으로 분리했다. 고객 화면에는 “주문 처리 중 문제가 발생했습니다”처럼 이해 가능한 수준의 짧은 안내만 보여 주고, 원인과 대응 정보는 영수증과 직원 화면에 남겼다. 네트워크 상태와 디바이스 연결 오류는 이벤트 기반으로 사전 감지하고, 텍스프리 및 결제 전후 로그, API 오류, 세션 분석까지 남겨 흐름이 어디서 끊겼는지 추적할 수 있게 했다.
백엔드는 Self-POS 전용 서버를 분리하지 않고, 기존 MPOS 위에 POS 타입 축을 추가했다. 상품 조회, 재고 차감, ERP 연동, 결제 처리처럼 사람의 조작 주체와 무관한 흐름은 재사용하고, 타입별 분기는 필요한 지점에서만 처리했다. 대신 그만큼 서버 검증이 강화됐다.
Self-POS에서는 고객이 조작자이므로 클라이언트를 신뢰할 수 없다. 주문 생성 시 서버가 금액, 회원 등급, 수량을 다시 검증하고, 할인도 POS 타입에 따라 허용 목록만 필터링했다. 운영팀이 특정 할인 정책의 Self-POS 허용 여부를 코드 배포 없이 바꿀 수 있도록 조건 합성 방식으로 구현한 점도 핵심이다.
주문은 주문생성과 주문완료 두 단계로 나뉘었다. 두 단계 사이에 물리적인 결제 단말기 통신이 끼어들기 때문에 단일 API로 끝낼 수 없었고, 주문생성 응답에 토큰을 넣어 주문완료 시 검증함으로써 요청 간 무결성을 확보했다. 같은 서버 안에 모든 흐름이 들어오면서 Cross-POS 환불 같은 경계 이슈도 드러났고, 환불 거래에는 원주문이 아니라 환불을 실행하는 POS의 정보가 들어가야 한다는 점을 보정했다.
결국 Self-POS 프로젝트에서 가장 큰 일은 새 기능을 만드는 것이 아니라, 직원이 암묵적으로 처리하던 규칙을 시스템의 명시적 검증으로 바꾸는 작업이었다. 고객에게는 빠르고 단순한 결제를, 직원에게는 복구와 운영을 위한 도구를, 시스템에는 미래의 RFID 전환까지 담을 수 있는 구조를 남겼다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.
