얼리테이블 : 실시간 음식점 웨이팅&예약 어플
"줄서기 스트레스는 그만! 효율적인 웨이팅의 시작"
외식을 자주 즐기는 요즘 인기 맛집에서 길게 줄 서는 시대는 끝! 얼리 테이블로 미리 예약하고, 웨이팅을 잡아 스마트하게 식사 준비하세요. 시간도 아끼고, 더 맛있게!!
❤️ 서비스/프로젝트 소개
서비스 개요
본 서비스는 음식점 예약 및 웨이팅 기능을 제공하여 사용자 경험을 개선한 프로젝트입니다. 기존 테이블링 앱의 낮은 사용성을 보완하고, 보다 편리한 예약 및 웨이팅 시스템을 제공합니다.
기획 배경
현재 많은 음식점이 테이블링 앱을 활용하고 있지만, 사용자들은 여러 문제점을 겪고 있습니다.
- 부정확한 대기 시간 예측: 기존 서비스에서는 대기 시간이 미제공 또는 부정확하게 제공되어 사용자 불편이 발생
- 개인화된 서비스 부족: 사용자의 식습관(예: 알러지 등)에 대한 필터링 기능이 미비
- 일행 관리 서비스 부족: 일행이 예약에 대한 정보를 알고싶을 때 예약자를 통해 확인하는 번거로움 발생
개선 사항
본 서비스는 기존의 문제를 해결하고, 보다 편리한 예약 및 웨이팅 환경을 제공하기 위해 다음과 같은 기능을 제공합니다.
- 실시간 예상 대기 시간 제공
- 정확한 대기 시간 정보 제공
- 실시간 대기열 업데이트로 사용자의 대기 불편 최소화
- 맞춤형 필터링 기능
- 알러지, 특정 식재료 제외 등 사용자의 조건을 고려한 음식점 필터링 제공
- 향상된 사용자 경험 제공
- 손쉬운 예약 및 웨이팅 기능 제공
- 알림 기능을 활용한 예약 및 웨이팅 상태 실시간 업데이트
- 일행을 초대하고 관리할 수 있는 서비스 제공
- 실시간 특정 가게 조회수 조회 기능 제공
📊 주요 기능
실시간 웨이팅
- 실시간 남은 웨이팅 순서 정보 + 실시간 예상 대기 시간 제공
실시간 예약 및 결제 API 연동
- 동시성 제어 - Redis 분산락 적용
- 카카오 페이의 API를 연동하여 결제 정보처리 및 결과 DB에 반영
실시간 가게 조회수
알림 서비스
- FCM과 SSE, Redis Pub/Sub 기능 이용
맞춤형 조건 검색
- 지역, 금액, 음식 카테고리, 알러지 및 검색어로 맞춤 검색 기능 제공
🛠️ 적용 기술
🛣️ 인프라 설계도
이 프로젝트는 AWS 인프라 클라우드 환경에서 구축했습니다.
사용자가 처음 접속하면 Route 53을 통해 연결된 도메인으로 접근하며, 정적 콘텐츠는 S3에서 제공됩니다. API 요청이 들어오면 ALB가 트래픽을 분산시키고, EC2 인스턴스에서 동작하는 Spring Boot 서버와 RDS(MySQL)가 연동하여 요청을 처리합니다. ALB를 통해 분산 서버에 대한 확장성을 고려할 수 있습니다.
성능 최적화를 위해 Redis의 캐싱과 분산락, Pub/Sub 기능을 사용합니다.
GitHub Actions + Docker를 이용한 CI/CD 파이프라인을 구축하여, 코드 변경 시 자동으로 빌드 및 배포가 이루어지도록 만들었습니다.
ERD
이 ERD는 식당 예약/웨이팅 시스템을 중심으로 설계되었습니다.
핵심 테이블인 가게를 중심으로 메뉴, 예약, 웨이팅 테이블을 구성하여 시스템의 주요 기능을 구현했습니다. 부가적으로 알러지, 가게 키워드, 리뷰, 이미지 파일 및 가게 설정 관련 테이블을 구성하여 다양한 기능을 지원할 수 있도록 구성했습니다.
정규화를 준수하여 데이터 중복을 최소화하고, 테이블 간의 관계 설정을 통해 데이터 일관성을 유지하도록 설계했습니다.
JPA를 활용하여 객체와 테이블 간의 연관관계를 매핑하고, QueryDSL을 사용하여 타입-세이프한 방식으로 동적 쿼리를 최적화하여 유지보수성과 성능을 향상시켰습니다.
업무 타임라인

- wbs
