#Backend

오프라인 매장에 코드를 배포하다 Part 1: 종이 없는 매장을 만드는 데이터 파이프라인 구축

오프라인 매장에 코드를 배포하다 Part 1: 종이 없는 매장을 만드는 데이터 파이프라인 구축
01

Summary

올리브영 매장 직원의 90만 시간을 되찾아준 '디지털 배포'의 비밀

종이라벨을 넘어 실시간 IoT 데이터 파이프라인으로 구현한 오프라인 DX 여정

전국 1,300개 매장의 수백만 개 가격표를 실시간으로 제어하는 거대한 IoT 생태계 구축기를 다룹니다. 수동 업무로 인한 물리적 부채를 코드로 해결하고, 이벤트 기반 아키텍처를 통해 데이터가 스스로 자신을 증명하는 자동 동기화 환경을 구현한 기술적 도전과 성과를 담고 있습니다.

  • 01'물리적 지연(Physical Latency)' 개념 정의를 통한 오프라인 운영 병목 해소
  • 02MSK와 SQS를 활용한 대규모 메시지 파이프라인 설계로 시스템 가용성 극대화
  • 03Kotlin + Spring Boot 3.x 기반의 클라우드 단일 진실 공급원(SSOT) 확보
  • 04서버 중심 템플릿 렌더링을 통한 ESL 단말기의 동적 UI 다형성 구현
  • 05제주도 매장까지 서울 본사에서 관리하는 원격 관제 및 자동 재시도 시스템

RECOMMENDATION

오프라인 비즈니스의 디지털 전환(DX)을 고민하는 엔지니어나 대규모 IoT 기기를 안정적으로 관리하려는 백엔드 개발자에게 강력히 추천합니다. 레거시 시스템의 부하를 줄이면서 데이터 정합성을 확보하는 실전적인 이벤트 기반 아키텍처 패턴을 학습할 수 있습니다.

The Problem

전국 1,300여 개 올리브영 매장의 수백만 개 가격표를 수동으로 교체하면서 막대한 물리적 리소스가 소모되었으며, 재고와 가격 데이터의 실시간 동기화가 불가능했습니다. 특히 데이터 변경이 현장에 도달하기까지 직원의 물리적 개입이 필수적인 '물리적 지연(Physical Latency)'이 발생하여 매장 운영의 병목 현상을 초래했습니다.

The Solution

Kotlin과 Spring Boot 3.x를 기반으로 한 클라우드 중앙화 아키텍처를 구축하고, MSK(Kafka)와 SQS를 활용한 이벤트 기반 메시지 파이프라인을 도입했습니다. 이를 통해 전국의 ESL 단말기에 데이터를 비동기로 전달하며, 서버 중심의 템플릿 렌더링 기술과 중앙 관제 시스템을 통해 데이터 일관성을 확보하고 원격 제어가 가능하도록 설계했습니다.

The Result

매장당 일 평균 약 2시간의 업무 시간을 절감하여 전사적으로 약 90만 시간의 가치를 창출했으며, 온-오프라인 데이터 정합성을 실시간으로 확보했습니다. 또한 동적 뷰 렌더링을 통해 프로모션별 UI 다형성을 구현함으로써 오프라인 매장의 마케팅 유연성을 비약적으로 높였습니다.

Trade-off

본문에 구체적인 한계점은 명시되지 않았으나, 일반적으로 대규모 IoT 기기를 실시간 제어하기 위한 메시지 큐와 클라우드 인프라 운용에 따른 유지보수 비용 및 네트워크 장애에 대한 의존도가 높아지는 트레이드오프가 예상됩니다.

03

Key Concepts

Concept · 01

Physical Latency

데이터가 시스템상에서 변경되었으나 직원의 물리적 확인과 개입이 없어 실제 현장에 반영되지 못하고 지체되는 시간입니다.

  • 매장 운영이라는 메인 루프를 멈추게 하는 I/O Blocking 상황으로 정의
  • ESL 도입을 통해 시스템이 스스로 데이터를 갱신하여 지연 시간을 0으로 수렴
Concept · 02

Event-driven Message Pipeline

이벤트 발생 시 메시지 큐를 통해 데이터를 비동기적으로 전달하여 시스템 간 결합도를 낮추고 대규모 트래픽을 완충하는 구조입니다.

  • MSK와 SQS를 도입하여 전국 1,300개 매장에 대한 데이터 전송 버퍼 역할 수행
  • 네트워크 불안정성에도 데이터 전달의 신뢰성을 보장하는 비동기 파이프라인 구축
Concept · 03

Dynamic View Rendering

고정된 레이아웃 대신 서버에서 전송한 데이터를 기반으로 런타임에 UI를 동적으로 시각화하는 기술입니다.

  • 종이라벨의 정적인 출력 한계를 극복하고 프로모션별 정보 우선순위 조정 가능
  • 코드 수준의 UI 하드코딩을 탈피하여 UI 다형성(Polymorphism) 구현