들어가며
안녕하세요! 올리브영에서 Back-end 개발을 담당하고 있는 '코드다이버(이시훈)'입니다. 많은 분들에게 오프라인 매장의 가격표는 매우 익숙한 풍경이지만, 그 이면에서 온-오프라인 데이터를 실시간으로 동기화하는 전자라벨(ESL, Electronic Shelf Label)의 메커니즘은 다소 생소하게 느껴지실 겁니다. 그래서 최대한 쉽고 간결하게 설명해드리려고 하니 차근차근 읽어주세요.
🎯 특히 이런 분들께 도움이 될 거예요
- 오프라인 매장의 디지털 전환(DX) 사례가 궁금하신 분
- 수백만 개의 IoT 기기를 제어하는 아키텍처가 궁금하신 개발자
- 레거시 시스템을 단계적으로 개선한 경험이 필요하신 분
💡 요약하자면 이런 기술적 난제를 해결했어요
- 물리적 부채 해결: 종이라벨 교체에 드는 수동 업무 제거
- 실시간 동기화: 온-오프라인 재고/가격 데이터 일치
- 운영 효율화: 매장당 일 평균 2시간 업무 시간 절감
개발자에게 '배포(Deployment)'는 익숙한 일상입니다. 코드를 수정하고, 빌드하고, 서버에 배포하면 끝이죠. 하지만 올리브영의 오프라인 매장에는 오랫동안 '사람의 손으로 직접 수행하는 수동 배포(Manual Deployment)' 시스템이 존재했습니다. 마치 수천 대의 서버에 SSH로 일일이 접속해 파일을 덮어쓰던 시절처럼, 이러한 종이라벨 교체는 매장 직원의 물리적인 리소스를 끝없이 소모하는 작업이었습니다. 이러한 물리적인 제약을 기술로 극복하고, 흩어진 데이터를 모아 동적인 디지털 환경으로 변화시킨 여정의 첫번째 이야기를 지금부터 본격적으로 시작해 보겠습니다.
배경: 규모의 경제가 아닌 '규모의 부채'
본격적으로 이야기를 시작하기 전, 다뤄야 할 숫자를 먼저 이야기 해보겠습니다. 올리브영은 전국에 약 1,300여 개의 매장을 운영하고 있으며, 각 매장에는 수천 개의 상품이 진열되어 있습니다. 이를 전체 매장으로 환산하면 수백만 개의 가격표가 존재한다는 계산이 나옵니다. 이 거대한 규모는 디지털 환경이 아닐 때, 단순한 관리의 대상을 넘어 감당하기 힘든 '부채' 로 다가왔습니다. 수백만 개의 라벨을 사람의 손으로 관리해야 한다는 것, 이것이 저희가 마주한 현실이었습니다.
레거시(Legacy)의 한계: 종이라벨이라는 '물리적 부채'
개발자 관점에서 종이라벨 시스템은 '확장성이 부족하고 업데이트 비용이 높은 정적 뷰(Static View)' 였습니다. 단순한 스티커 부착 작업처럼 보이지만, 그 이면에는 더 큰 비효율이 숨어 있었죠.
프로모션 기간 내 물리적 업무 부담 과중
올리브영의 핵심 경쟁력 중 하나가 다양하고 역동적인 프로모션이다보니 종이라벨 환경은 매장 직원들에게 엄청난 '물리적 부채(Physical Debt)'를 의미했습니다. 특히 올영세일과 같은 대규모 행사가 시작되면, 하룻밤 사이 수천 개의 상품 가격이 변동됩니다. 직원들은 개점 전에 이 수많은 라벨을 모두 새로 출력해 진열대를 일일이 찾아다니며 교체해야 했는데, 이 과정은 단순 반복 노동을 넘어 오프라인 운영의 가장 큰 병목 구간이었습니다.
물리적 지연(Physical Latency)과 동기화 이슈
종이라벨은 현재 상품이 품절인지 아닌지를 실시간으로 보여주지 못합니다. 그래서 고객은 진열대에 상품이 비어있으면 직원에게 "이거 재고 있나요?"라고 묻게 됩니다. 상품이 품절되어도 진열대의 라벨은 여전히 '판매 중' 상태를 유지하기 때문이죠. 이때 발생하는 비효율은 고스란히 직원의 리소스 소모로 이어집니다. 직원은 하던 일을 즉시 중단하고 시스템 조회나 창고 확인을 위해 자리를 비워야 합니다.
이에 저희는 '데이터(재고 유무)가 고객에게 도달하기 위해 반드시 직원의 물리적 개입이 필요한 시간'을 물리적 지연(Physical Latency)이라 정의했습니다. 시스템 관점에서는 매장 운영이라는 메인 루프를 멈추게 만드는 불필요한 I/O Blocking인거죠. 데이터가 스스로 자신을 증명하지 못해 발생하는 이 대기 시간은 결국 매장 전체의 업무 효율을 저하시켰습니다.
정보 표시 유연성 부족 및 마케팅 제약
매장의 진열대는 한정된 공간 내에서 수십 수천 개의 상품이 저마다의 존재감을 드러내야 하는 치열한 공간입니다. 하지만 종이라벨은 정해진 규격 안에 텍스트를 인쇄하는 '정적 렌더링' 방식에 머물러 있었습니다.
개발자 관점에서 이는 UI가 코드에 하드코딩되어 있어 런타임에 변경할 수 없는 상태와 같습니다. 예를 들어, 특정 상품이 '단독 특가' 중일 때는 가격을 강조하고, '증정 행사' 중일 때는 사은품 정보를 부각해야 하는 등 상황에 따른 UI 다형성(Polymorphism)이 필요하지만, 종이라벨은 이러한 동적인 요구사항에 대응할 수 없는 구조적 한계를 가지고 있었습니다. 결국, 프로모션의 성격과 상관없이 천편일률적인 정보만을 제공해야 했고, 이는 곧 오프라인 매장의 마케팅 유연성까지 제약하는 요소가 되었습니다.
Architecture: 수백만 IoT 기기를 제어하는 메시지 기반 파이프라인 구축
수많은 상품 정보와 실시간 재고 데이터는 어떻게 전국 매장의 진열대까지 오차 없이 도달할까요? 수천 개의 매장, 수백만 개의 상품 데이터를 실시간으로 동기화하기에는 단순한 API 호출 방식만으로는 한계가 명확했습니다. 매장 네트워크의 일시적인 불안정성이나, 대규모 세일 기간의 트래픽 폭주에도 시스템이 무너지지 않아야 했기 때문입니다. 그래서 저희는 대규모 데이터의 신뢰성 있는 전달을 위해 이벤트 기반의 메시지 파이프라인(Event-driven Message Pipeline)을 설계했습니다.
Tech Stack
저희는 수백만 개의 IoT 기기를 안정적으로 제어하기 위해 Kotlin과 Spring Boot 3.x를 선택했습니다. 특히 파이프라인 중간에 Message Queue를 도입한 것이 핵심입니다. 이는 전사적인 데이터 폭주를 완충하는 버퍼 역할을 수행할 뿐만 아니라, 네트워크 환경이 제각각인 1,300여 개 매장에 데이터를 비동기로 전달하여 시스템 전체의 가용성을 극대화하기 위한 결정이었습니다.
| 구분 | 기술 스택 |
|---|---|
| Language | Kotlin |
| Framework | Spring Boot 3.x |
| Messaging | MSK, SQS |
| Database | Oracle, ElastiCache (Redis) |
| Storage | S3 |
클라우드 기반의 데이터 중앙화 (Cloud Centralization)
파편화되어 있던 원천 데이터를 전자라벨(ESL)에 적합한 데이터로 모아 클라우드 환경으로 통합했습니다. 이제는 새로운 아키텍처가 '단일 진실 공급원(Single Source of Truth)' 역할을 합니다. 상품 정보 변경이나 프로모션 시작과 같은 모든 이벤트는 거대한 메시지 파이프라인을 통과합니다. 이 과정에서 DB 부하를 줄이고 속도를 높이며, 장애 복구 능력을 강화했습니다. 최종적으로 가공된 데이터가 각 매장의 게이트웨이로 일관성 있게 전달됩니다. 어떤 매장이든 동일한 시점에 동일한 데이터를 바라볼 수 있도록 보장하는 것입니다.
특히 이 과정에서 레거시 DB에 직접적인 쿼리를 날리는 대신, 이벤트 기반의 데이터 동기화를 택하여 조회 성능을 높이고 원본 시스템의 부하를 원천적으로 차단했습니다. 결과적으로 전국의 모든 매장이 물리적 위치와 상관없이 '가장 최신의, 동일한 데이터'를 바라보는 높은 데이터 일관성을 보장하게 되었습니다.
물리적 거리를 넘는 원격 관제 (Remote Monitoring & Control)
클라우드 아키텍처의 가장 큰 강점은 '현장에 가지 않아도 된다'는 것입니다. 이에 저희는 수백만 개의 IoT 디바이스를 안정적으로 운영할 수 있는 강력한 중앙 관제 시스템을 구축했고, 시스템은 실시간으로 반영된 데이터 및 업데이트 성공 여부를 모니터링하고 있습니다. 예를 들어, 제주도 매장의 특정 라벨 업데이트가 실패했다고 가정해 볼까요? 중앙 시스템은 문제를 즉시 감지하고 자동으로 재시도(Retry) 명령을 내려 해결합니다. 엔지니어가 KTX나 비행기를 타고 현장으로 출동하지 않아도, 서울 본사 사무실에 앉아 원격으로 문제를 진단하고 해결할 수 있는 환경을 구현된 것이죠.
Feature: 물리적 지연을 '0'으로 만드는 기술들
이러한 모든 기술적 노력은 결국 매장 운영의 물리적 비효율을 제거하고, 데이터를 통해 고객과 직원의 경험을 개선하기 위함입니다. 구체적으로 구현한 핵심 기능들은 다음과 같습니다.
상황에 맞는 동적 뷰(Dynamic View) 렌더링
종이라벨의 고질적인 '정보 경직성'을 서버 중심의 템플릿 렌더링 기술로 해결했습니다. 전자라벨은 이제 단순한 가격표가 아니라, 서버에서 전송한 데이터를 실시간으로 시각화하는 단말기 역할을 수행합니다. 프로모션 성격에 맞춰 레이아웃을 동적으로 변경하는 로직을 통해, 한정된 디스플레이 공간 안에서 정보의 우선순위를 자유롭게 조정하며 공간 효율과 전달력을 극대화했습니다.
이벤트 기반의 준실시간 품절 반영
가장 큰 페인 포인트는 고객이 보는 정보와 실제 재고의 불일치였습니다. 과거에는 상품이 품절되어도 그 정보가 고객에게 도달하기까지 직원의 물리적 확인과 개입이 반드시 선행되어야 했습니다. 이것이 앞서 언급한 물리적 지연의 실체입니다. 이제는 시스템이 재고 변동 이벤트(Stock Event)를 실시간으로 감지합니다. 그리고 특정 상품이 품절되는 즉시 관련 데이터가 메시지 파이프라인을 타고 전국의 전자라벨 단말에 도달하며, 화면은 즉시 상태를 갱신합니다. 사람이 개입하지 않아도 시스템이 스스로 온-오프라인의 데이터 정합성을 맞추는 자동 동기화(Auto-Sync) 환경을 구현한 것입니다.
프로모션 자동화와 배치 처리
수작업에 의존하던 대규모 가격 변경 업무를 예약 기반의 배치(Batch) 시스템으로 전환했습니다. 행사 시점에 맞춰 대량의 데이터를 안정적으로 분산 처리하여, 전국 1,300여 개 매장의 가격 정보를 오차 없이 업데이트합니다. 수동 교체 시 발생하던 오기입이나 누락 등의 휴먼 에러를 구조적으로 차단하여 운영 안정성을 비약적으로 높였습니다.
Outcome: 기술이 선물한 '90만+ 시간'의 가치
실제 운영 데이터를 분석한 결과, 다음과 같은 유의미한 성과를 얻을 수 있었습니다.
📈 전자라벨 구축에 따른 주요 성과
- 도입 규모: 전국 1,300여 개 매장
- 업무 효율화: 매장당 평균 일 2시간 절감 (라벨 관리 및 재고 응대 리소스 절감)
- 고객 경험 향상: 상품 큐레이션과 매장 컨디션 관리 등 더 본질적이고 가치있는 고객 경험 개선 업무에 집중
- 데이터 무결성: 가격 오기입으로 인한 결제 클레임 제로화
- 대규모 대응력: 올영세일 등 피크 타임 시 수만 건의 가격 변경을 수 분 내 자동 완료
결국 전자라벨 구축은 단순히 종이를 디지털로 바꾼 것이 아니라, 기술을 통해 구성원의 업무 몰입도를 높이고 고객 경험의 질을 한 단계 끌어올린 디지털 트랜스포메이션의 결실이었습니다.
마치며: 디지털로 연결된 매장
올리브영은 계속해서 데이터와 기술로 온라인과 오프라인을 연결하고 있습니다. 그 중에서도 전자라벨 구축은 올리브영의 오프라인 매장이 더 이상 정적인 공간이 아니라, 데이터와 소프트웨어로 제어 가능한 영역으로 확장되었음을 의미합니다. 하지만 이러한 시스템 구축은 거대한 여정의 시작일 뿐이었습니다.
시스템 구축 이후 올영세일 기간마다 갱신되는 트래픽 폭풍 속에서 어떻게 전국 매장을 동기화했는지 궁금하지 않나요? 이렇게 더 깊이 있는 전자라벨 구축기가 궁금한 분들을 위해 준비한 두 번째 이야기, "오프라인 매장에 코드를 배포하다 Part 2: 올리브영 전자라벨(ESL) 최적화 여정" 은 아키텍처 이면에 숨겨진 치열한 성능 개선기와 실전 운영 노하우를 본격적으로 다루고 있습니다. 가장 아날로그적인 공간을 가장 디지털적인 방법으로 혁신해 나가는 올리브영의 DX 과정이 궁금한 분들께는 분명 흥미롭게 읽힐 내용이니 계속해서 많은 관심 부탁드립니다. 감사합니다.
