사용자들이 식당을 검색하고 예약할 수 있으며, 맛집 탐험 파티를 통해 새로운 사람들과 만나 함께 식사할 수 있는 소셜 다이닝 플랫폼의 안정적이고 확장 가능한 백엔드 시스템 개발 2025.06.30 ~ 2025.07.31 (5주)
|
|
-
🔍 식당 검색 & 필터링
- 지역별, 음식 종류별 검색
- 가격대, 평점, 거리 기반 필터링
- 실시간 검색 결과 업데이트
-
📅 예약 시스템
- 실시간 예약 가능 시간 확인
- 예약 승인/거절 프로세스
- 예약 변경 및 취소 기능
-
⚡ 맛집 탐험 파티 시스템
- 파티 생성 및 참여
- 자동 예약 연동 기능
-
💬 실시간 채팅
- 파티별 전용 채팅방
- WebSocket 기반 실시간 메시징
- 채팅 히스토리 관리
|
|
⚡ 동시 예약 처리 문제 해결
// 낙관적 락을 활용한 동시성 제어
@Version
private int version;
@Retryable(
retryFor = DataAccessException.class,
maxAttemptsExpression = MAX_ATTEMPTS,
backoff = @Backoff(
delayExpression = MAX_DELAY, multiplierExpression = MULTIPLIER, random = true
)
)
@Transactional
public void joinParty(Long partyId, long userId) {
// 파티 참가 로직
}
💬 확장 가능한 채팅 시스템
// WebSocket 기반 실시간 채팅
@MessageMapping("/chat.send")
public void sendMessage(@Payload ChatMessageRequest message,
StompPrincipal user) {
// 채팅 관련 로직
}
📁 디렉토리 구조 펼치기/접기
📦 matjalalzz/
├── 🌐 src/main/java/shop/matjalalzz/
│ ├── 🔧 global/ # 공통 설정 및 유틸리티
│ │ ├── config/ # Spring 설정 클래스
│ │ ├── exception/ # 전역 예외 처리
│ │ ├── security/ # 보안 설정
│ │ └── utils/ # 유틸리티 클래스
│ ├── 👤 user/ # 사용자 관리 모듈
│ │ ├── api/ # REST 컨트롤러
│ │ ├── app/ # 비즈니스 로직
│ │ ├── dao/ # 데이터 접근 계층
│ │ └── domain/ # 엔티티 및 DTO
│ ├── 🏪 shop/ # 식당 관리
│ │ ├── api/ # 식당 검색, 조회 API
│ │ ├── app/ # 식당 서비스 로직
│ │ ├── dao/ # 식당 데이터 접근
│ │ └── domain/ # 식당 엔티티
│ ├── 📅 reservation/ # 예약 시스템
│ │ ├── api/ # 예약 생성, 관리 API
│ │ ├── app/ # 예약 비즈니스 로직
│ │ ├── dao/ # 예약 데이터 접근
│ │ └── domain/ # 예약 엔티티
│ ├── ⚡ party/ # 맛집 파티 모임 시스템
│ │ ├── api/ # 파티 생성, 참여 API
│ │ ├── app/ # 파티 매칭 로직
│ │ ├── dao/ # 파티 데이터 접근
│ │ └── domain/ # 파티 엔티티
│ ├── 💬 chat/ # 채팅 시스템
│ │ ├── api/ # 채팅 API
│ │ ├── app/ # 채팅 서비스 로직
│ │ ├── dao/ # 채팅 데이터 접근
│ │ └── domain/ # 채팅 메시지 엔티티
│ ├── 💬 comment/ # 댓글 관리 (리뷰 댓글)
│ ├── 🎆 image/ # 이미지 관리
│ ├── 📝 inquiry/ # 문의 관리
│ ├── 💸 tosspay/ # 결제 관리
│ └── ⭐ review/ # 리뷰 시스템
├── 📋 src/main/resources/
│ ├── application.yml # 환경 설정
│ └── logback.xml # 로깅 설정
└── 📂 src/test/ # 테스트 코드
분야 | 기술 | 버전 | 선택 이유 |
---|---|---|---|
Language | Java | 21 | 최신 LTS 버전, 향상된 성능 |
Framework | Spring Boot | 3.3.1 | 빠른 개발, 자동 설정 |
Database | MySQL, MariaDB | 8.0, 12.x.x | 안정적인 관계형 데이터베이스 |
Security | Spring Security | 6.x | 강력한 보안 프레임워크 |
Real-time | WebSocket | - | 실시간 양방향 통신 |
GET /shops
- 식당 검색 및 목록 조회GET /shops/{shopId}
- 식당 상세 정보 조회GET /shops/search
- 조건별 식당 검색
POST /reservations
- 예약 생성GET /reservations
- 예약 목록 조회PUT /reservations/{reservationId}/status
- 예약 상태 변경
POST /parties
- 파티 생성POST /parties/{partyId}/join
- 파티 참여GET /parties
- 파티 목록 조회
WebSocket /chat.send/
- 파티별 실시간 채팅GET /parties/{partyId}/chat/restore
- 채팅 히스토리 조회