목록 보기
예약 시스템 개편기: 우리는 왜 '예약 레고'를 만들었나
백엔드

예약 시스템 개편기: 우리는 왜 '예약 레고'를 만들었나

비브로스
비브로스
2026년 3월 24일

두줄요약

병원 예약 시스템을 가변 슬롯과 개별 레코드 기반으로 전면 개편한 사례를 다루었습니다. 동시성 제어와 추적성을 강화해 다양한 진료 시간을 유연하게 처리했습니다.

문제 상황

  • 진료 항목마다 소요 시간이 달라 하나의 고정 시간 간격으로는 예약을 유연하게 배치하기 어려운 구조
  • 최종 카운트만 저장하는 기존 방식에서 동시성 충돌과 원인 추적 어려움 발생

원인 분석

  • 10분, 5분, 50분처럼 서로 다른 진료 시간을 동일 슬롯 규칙으로 묶은 설계 제약
  • count 값만 저장해 예약 단위의 이력과 변경 근거를 남기지 못하는 카운팅 구조

해결 방법

  • 진료 항목별 timeUnit을 두고 시간대에 여러 항목을 배치하는 가변 슬롯 시스템 도입
  • 템플릿 스케줄과 커스텀 스케줄 분리, 조회 시점 슬롯 계산과 시간 겹침 판정 적용
  • 5분 단위 Redis 분산 락과 개별 레코드 기반 카운팅으로 정합성 및 추적성 강화

성능/운영 포인트

  • 슬롯 겹침 탐색은 현재 선형 탐색으로 처리하고, 데이터 증가 시 Interval Tree나 Sweep Line 검토
  • 예약 단위를 레코드로 남겨 온라인·오프라인 예약과 취소 이력을 명확히 관리
  • 락 TTL을 분리해 불필요한 대기를 줄이고 충돌 범위를 세밀하게 제어

다음 읽기

#Redis 주제를 이어서 읽기

예약 시스템 개편기: 우리는 왜 '예약 레고'를 만들었나

병원 예약을 진료 항목별 가변 슬롯 구조로 전면 개편한 사례를 다루었습니다. 동시성 제어와 추적 가능성을 위해 분산 락과 개별 레코드 기반 카운팅도 도입했습니다.

비브로스
비브로스
아키텍처

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...