Skip to content

Latest commit

 

History

History
314 lines (216 loc) · 8.82 KB

File metadata and controls

314 lines (216 loc) · 8.82 KB

🎵 MuseReview Backend

연주 데이터를 분석하고 맞춤형 피드백을 제공하는 MuseReview의 Backend Server입니다.



🛠 Tech Stack

Backend


Database & Cache


Infra



🏗 Architecture

MuseReview Backend Architecture


MuseReview는 안정적인 서비스 운영과 각 구성요소의 역할 분리를 고려하여 위와 같이 Production 환경의 인프라를 구성했습니다.

저장소에서 관리하는 구성

  • docker-compose.yml에서 Backend, Redis, Analysis 서비스를 각각 독립된 컨테이너로 정의하고, 하나의 AWS EC2 인스턴스에서 함께 운영합니다.
  • .github/workflows/cd.yml에서 GitHub Actions로 이미지를 빌드해 Docker Hub에 푸시한 뒤, EC2에서 Docker Compose로 배포하는 과정을 자동화했습니다.
  • application-prod.yml에서 외부 PostgreSQL, AWS S3, OAuth Redirect URI 등 운영 환경 연동 설정을 관리합니다.

저장소 외부에서 관리하는 인프라

  • Nginx: EC2에 직접 설치되어 Reverse Proxy 역할을 담당합니다. (설정 파일은 본 저장소에 포함되지 않습니다.)
  • AWS RDS(PostgreSQL) · AWS S3: 영구 데이터와 파일 데이터를 분리해 저장하며, AWS 콘솔에서 프로비저닝합니다. 접속 정보는 환경 변수로 주입합니다.
  • OAuth 소셜 로그인 · Gemini API: 외부 서비스로 연동하여 운영 편의성, 데이터 안정성, 서비스 간 역할 분리 및 확장성을 확보했습니다.


👥 Backend Team

강동균 고원정 김예원 박수연 이은우
강동균 고원정 김예원 박수연 이은우
학습 · 백킹트랙
알림
연주
운영 · 인프라
인증 사용자 · 학습 분석 · AI 멘토 · 통계
홈 · 히스토리


📚 Convention

🌿 1. Branch Strategy

안정적인 배포와 독립적인 기능 개발을 위해 Git Flow 기반 브랜치 전략을 사용합니다.

Branch Description
🔵 main 항상 배포 가능한 상태를 유지하는 운영 브랜치입니다. 직접 작업하지 않고 PR을 통해서만 머지합니다.
🟢 develop 다음 배포를 준비하는 통합 개발 브랜치입니다.
🟡 Feature Branch 기능 및 이슈 단위로 develop에서 분기하여 작업합니다.

Branch Naming Convention

Prefix/#이슈번호-작업내용

Kebab Case를 사용합니다.

Example

feat/#10-login-api
chore/#1-setting-base
Prefix Description Example
feat 새로운 기능 추가 feat/#10-login-api
fix 버그 수정 fix/#23-header-layout
docs README 등 문서 수정 docs/#5-update-readme
style 코드 포맷팅 등 로직에 영향을 주지 않는 변경 style/#12-format-code
refactor 코드 리팩토링 refactor/#30-user-service
chore 설정 파일, 빌드 환경 등의 변경 chore/#1-setting-base


📝 2. Commit Convention

커밋 메시지는 다음 형식으로 작성합니다.

타입: 작업 내용 (#이슈번호)

Example

feat: 카카오 소셜 로그인 API 추가 (#10)

🔓 Pull Request & Code Review

PR은 활발한 코드 리뷰와 안정적인 병합을 위해 최소 2명 이상의 Approve를 받은 이후 머지합니다.



🛠️ 3. Development Convention

💻 Environment

Category Version / Technology
Language Java 17
Framework Spring Boot 3.2.2
ORM JPA
Database PostgreSQL 18

🎨 Code Style

프로젝트는 Spring JavaFormat을 사용하여 공통 코드 스타일을 유지합니다.

빌드 시 포맷이 맞지 않을 경우 검증에 실패할 수 있으므로 작업 전 코드 스타일을 확인합니다.

Target Convention Example
Class PascalCase AuthController
Variable / Method camelCase accessToken
Constant UPPER_SNAKE_CASE MAX_LIMIT

⚠️ 일반 변수 및 메서드명에는 언더바(_)를 사용하지 않습니다.




🔒 4. Local Environment

DB Password, JWT Secret, OAuth Key 등의 민감 정보는 저장소에 직접 커밋하지 않고 MR_config를 통해 관리합니다.

  1. 로컬 PostgreSQL에 mr_db 데이터베이스를 생성합니다.
  2. 프로젝트 루트에 MR_config/local/ 디렉터리를 생성합니다.
  3. 공유된 application.example.yml을 해당 디렉터리에 복사합니다.
  4. 파일명을 application.yml로 변경합니다.
  5. 로컬 DB 비밀번호와 필요한 API Key를 입력합니다.
  6. 아래 실행 명령으로 애플리케이션을 구동합니다.

▶️ Run

Spring Boot Gradle Plugin이 제공하는 bootRun 태스크로 애플리케이션을 실행합니다.

Windows PowerShell

./gradlew.bat bootRun

Git Bash / macOS

./gradlew bootRun

🚀 Build

기본 빌드는 컴파일과 테스트를 모두 수행합니다.

# Windows PowerShell
./gradlew.bat build

# Git Bash / macOS
./gradlew build

테스트를 건너뛰고 빠르게 패키징만 확인하고 싶을 때는 -x test로 test 태스크를 제외합니다. 단, PR 전에는 반드시 테스트를 포함한 기본 빌드로 검증합니다.

# Windows PowerShell
./gradlew.bat build -x test

# Git Bash / macOS
./gradlew build -x test

📖 Swagger

http://localhost:8080/swagger-ui/index.html