포트폴리오 목록
2021.06생활·레저신규 구축

스크린골프 프랜차이즈 통합 관제

전국 가맹점의 기기 상태와 매출을 본사 한 화면에서 보도록 묶었습니다.

웹서버·인프라데스크톱·기기
스크린골프 프랜차이즈 통합 관제
실제 납품물을 바탕으로 재구성한 화면입니다. 고객사 데이터는 포함하지 않습니다.
개발 기간
약 6개월
투입 인원
4명
지원 플랫폼
웹 · 서버 · 매장 기기
관리 대상
전국 가맹 매장

배경

전국 곳곳의 스크린골프 매장을 프랜차이즈로 운영하는 본사였지만, 매장 기기 상태와 매출은 각 지점 PC에만 남아 있었다. 특정 매장의 기기가 멈춰도 본사는 고객 항의 전화가 오기 전까지 알 방법이 없었다.

구현 범위

  • 매장 기기 상태 실시간 수집 및 본사 대시보드 표시
  • 매장별 매출 집계 및 일 마감 리포트
  • 기기 이상 발생 시 본사 알림
  • 가맹점 등록·해지 관리
  • 매장 기기 원격 재시작 기능
  • 본사 관리자 권한별 화면 분리

기술 선택

그 상황에서 무엇을 왜 골랐는지

매장 PC에 상주 에이전트를 두고 PostgreSQL 중앙 서버로 상태를 밀어올리는 구조

매장 인터넷 회선이 지역마다 품질이 달라 중앙에서 매장으로 매번 상태를 물어보는 방식은 응답이 느리거나 아예 끊기는 매장이 있었다. 매장 쪽에서 먼저 보내는 구조로 바꾸니 회선이 불안정한 매장도 최소한의 주기로는 상태가 들어왔다.

React 기반 대시보드에서 매장을 지도가 아닌 표 형태로 우선 노출

본사 담당자가 실제로 확인하는 방식은 "오늘 문제 있는 매장이 어디인가"였다. 지도는 보기에는 좋지만 매장 수가 늘어날수록 한눈에 훑기 어려워, 이상 상태 매장이 위로 정렬되는 표를 기본 화면으로 잡았다.

기술 과제

문제

매장 기기가 자체적으로 재부팅되거나 네트워크가 끊기는 일이 잦아, 정상 종료와 장애를 구분하기 어려웠다.

접근

기기가 정상 종료 신호를 보내지 못하고 사라진 경우와, 주기적 상태 보고가 끊긴 경우를 별도 상태값으로 나누고 재연결 시 마지막 정상 시점을 함께 기록하도록 했다.

결과

본사 화면에서 지금 장애인 매장과 잠깐 끊겼다 돌아온 매장이 구분되어, 담당자가 매번 전화로 확인하지 않아도 우선순위를 정할 수 있게 됐다.

문제

가맹점마다 기기 구성이 조금씩 달라 하나의 에이전트 버전으로는 상태 수집 항목이 맞지 않았다.

접근

에이전트에 기기 구성 프로필을 두고, 매장 등록 시 구성을 선택하면 그에 맞는 수집 항목만 활성화되도록 만들었다.

결과

신규 가맹점 추가 시 코드 수정 없이 구성 프로필만 지정하면 바로 연동되는 구조가 됐다.

이관과 운영

본사 운영팀에 매장 등록·기기 프로필 관리 화면을 별도로 제공해 개발팀 개입 없이 신규 가맹점을 추가할 수 있게 했다. 소스코드와 배포 스크립트, 매장 에이전트 설치 매뉴얼을 함께 인계했고, 이후 신규 매장 유형 대응은 별도 유지보수 계약으로 이어졌다.

기술 스택

PythonReactPostgreSQL