라멘 맛집을 찾고, 기록하고, 공유하는 커뮤니티 플랫폼 라오타의 백엔드 서버입니다.
Raota Server는 라멘 매장 정보, 방문 인증샷, 메뉴 투표, 북마크, 커뮤니티, 회원 활동, AI 추천 기능을 제공하는 Spring Boot 기반 REST API 서버입니다.
주요 기능은 다음과 같습니다.
- 라멘 매장 목록/상세 조회, 북마크, 정보 오류 제보
- 라멘 매장별 메뉴 투표와 투표 현황 조회
- 방문 인증샷 등록/조회/삭제 및 업로드 티켓 발급
- 커뮤니티 게시글, 좋아요, 스레드 댓글
- OAuth2 기반 소셜 로그인과 JWT Access/Refresh Token 인증
- 공개 API만 명시적으로 허용하고 나머지를 인증하는 fail-closed 접근 정책
- 마이페이지 활동 내역 조회
- AI 기반 취향 추천, 매장 비교, 리뷰 요약, 후속 채팅
ADMIN권한으로 보호되는 라멘 매장 CRUD, 회원/제보 조회 및 검색/RAG 인덱싱 API
src/main/java/com/raota
├── presentation # REST API, Admin Controller, 공통 응답/예외 처리
├── application # 유스케이스 서비스와 트랜잭션 경계
├── domain # 도메인 모델, 정책, 저장소 인터페이스
└── infrastructure# 인증, Redis, 파일 업로드, 캐시, 벡터 검색, 외부 연동
main 브랜치에 push되면 GitHub Actions가 다음 순서로 운영 배포를 진행합니다.
- JDK 25 환경에서
./gradlew clean bootJar -x test실행 - Docker 이미지 빌드
- OCIR(Oracle Cloud Infrastructure Registry)에 이미지 push
raota-team/raota-infra저장소의 배포 워크플로 dispatch- canary 또는 full 배포 진행 상태 확인
- Refresh Token 저장소를 JPA/Redis 구현으로 분리해 테스트와 운영 환경의 선택지를 확보
- Redis 기반 캐시 무효화 pub/sub으로 라멘 매장 상세/목록 캐시 정합성 관리
- Flyway 마이그레이션과
ddl-auto=validate조합으로 운영 DB 스키마 변경 안정성 확보 - 파일 용도별 업로드 라우팅으로 프로필, 배경, 매장, 커뮤니티, 인증샷 이미지 경로 분리
- Oracle Vector Store와 Spring AI를 활용한 매장 검색/RAG 인덱싱 기반 마련
| Backend |
|---|
| 박희태 |
![]() |
