LX Z:IN 창호 공간 렌더링 1
창호 공간 렌더링 · 1
LX Z:IN 창호 공간 렌더링 2
창호 공간 렌더링 · 2

키오스크의 메인 화면은 매장 정보, 카탈로그와 이벤트 콘텐츠로 들어가는 허브였습니다. 외부에서 제공받은 3D 매장 둘러보기 Viewer를 키오스크 UI에 넣고, 외부 링크 중에서도 하단 Navigation을 계속 유지해야 하는 콘텐츠는 iframe으로 연결했습니다.

강남점 전주점 창원점 가운데 VR 전시장을 선택하는 LX Z:IN 키오스크 화면
지점별 360° 전시장으로 진입하는 실제 키오스크 선택 화면

제품 자체는 하나였지만 매장마다 보여줘야 하는 정보와 데이터가 달랐습니다. 제공받은 매장 정보와 카탈로그를 Python으로 전처리·정렬하고, 매장별 설정값을 기준으로 공통 코드가 다른 데이터와 동작을 사용하게 구성했습니다.

01 · HUB

매장 콘텐츠 진입점

매장 소개, 카탈로그, 이벤트와 3D Viewer를 한 키오스크 경험 안에서 연결했습니다.

02 · CONFIG

매장별 설정

공통 애플리케이션이 매장별 PHP 설정값에 따라 데이터와 동작을 달리하도록 구성했습니다.

03 · DATA

배포 전 데이터 가공

매장별 원본 데이터를 Python으로 정리해 키오스크가 바로 소비할 수 있는 배포 형태로 만들었습니다.

04 · EMBED

기존 콘텐츠 재사용

새로 만들 필요가 없는 외부 Viewer와 콘텐츠는 iframe 등으로 통합해 구현 범위를 조절했습니다.

매장별 subdomain에 대응하는 별도 폴더를 만들고 공통 코드를 복제했습니다. 매장마다 설정 파일을 두어 필요한 데이터와 동작을 구분했습니다.

동일한 코드가 여러 폴더에 존재해 한 매장에 적용한 공통 패치를 다른 매장 폴더에 반영하지 않는 일이 발생했습니다. 그 결과 매장마다 서로 다른 버전이 배포되는 문제가 생겼습니다.

Failure mode

공통 패치를 모든 매장 폴더에 빠짐없이 반영할 수 있는 배포 절차가 필요했습니다.

매장 폴더를 하나의 코드베이스로 통합하면 중복을 없앨 수 있었지만, 이미 여러 매장이 운영 중이어서 전체 구조를 바꾸는 비용과 리스크가 컸습니다.

대신 공통 파일을 기준 폴더에서 각 매장 폴더로 복사하는 synchronization script를 만들었습니다. 이후 공통 패치 누락은 거의 사라졌고, 당장의 운영 리스크가 크게 줄었습니다.

SCSS compile 과정도 script로 단순화해 필요한 output이 없으면 생성되도록 처리했습니다. 배포 파일 복사와 CSS 생성에서 반복되던 수작업을 자동화했습니다.

Problem매장별 복제 폴더 때문에 공통 패치 반영이 누락될 수 있음
Constraint운영 중인 구조 전체를 갈아엎는 비용이 문제 규모보다 큼
Control공통 파일 동기화 script로 모든 매장 폴더에 같은 변경을 전파
Decision운영 문제가 닫힌 뒤에는 구조적 완벽함을 위해 추가 리팩터링하지 않음
Tradeoff

공통 파일 동기화로 패치 누락을 해결한 뒤에는 추가 재설계의 비용 대비 효과가 작다고 판단해 기존 구조를 유지했습니다.

PHPjQuerySCSSPythonKioskiframeAutomationMulti-store
What this project shows

공통 패치를 여러 매장에 일관되게 배포

매장별 복제 폴더에서 발생한 패치 누락을 공통 파일 동기화로 해결했습니다. 운영 중인 매장 구조를 유지하면서도 누락이 거의 사라졌고, SCSS 생성 과정도 자동화했습니다.