Skip to content

Repository files navigation

🎡 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

About

UMC MuseReview Backend

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages