Skip to content

Latest commit

Β 

History

History
97 lines (74 loc) Β· 4.02 KB

File metadata and controls

97 lines (74 loc) Β· 4.02 KB

Checkmate Backend

μŠ€ν„°λ”” λͺ¨μ§‘λΆ€ν„° μ°Έμ—¬, 인증, 기둝 κ΄€λ¦¬κΉŒμ§€ ν•œ λ²ˆμ— λ‹€λ£° 수 μžˆλ„λ‘ λ§Œλ“  λͺ¨λ°”일 μŠ€ν„°λ”” 관리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ MSA 기반 λ°±μ—”λ“œ μ„œλ²„

Image Image Image Image

🚨 Problem

  • κΈ°μ‘΄ 인증 μŠ€ν„°λ””λŠ” μΉ΄μΉ΄μ˜€ν†‘ μ˜€ν”ˆμ±„νŒ…, λ””μŠ€μ½”λ“œ, 수기 μŠ€ν”„λ ˆλ“œμ‹œνŠΈ λ“± μ—¬λŸ¬ 도ꡬλ₯Ό ν•¨κ»˜ 써야 ν•΄μ„œ 운영 흐름이 λΆ„μ‚°.
  • 인증 확인, 미인증 집계, νŒ¨λ„ν‹° 반영, 곡지 전달 같은 μž‘μ—…μ΄ μžλ™ν™”λ˜μ§€ μ•Šμ•„ 운영자 뢀담이 큼.
  • GitHub 컀밋 인증, 체크리슀트 인증, 사진 인증처럼 μŠ€ν„°λ””λ³„ μš”κ΅¬μ‚¬ν•­μ΄ 달라도 이λ₯Ό μΌκ΄€λ˜κ²Œ μ²˜λ¦¬ν•  μ„œλ²„ ꡬ쑰가 ν•„μš”.

🎯 Goal

  • μŠ€ν„°λ”” 생성, μ°Έμ—¬, 인증, 기둝, 포인트, 문의 κΈ°λŠ₯을 MSA ꡬ쑰둜 뢄리해 μ•ˆμ •μ μœΌλ‘œ μš΄μ˜ν•  수 μžˆλŠ” λ°±μ—”λ“œλ₯Ό κ΅¬μΆ•ν•˜λŠ” 것이 λͺ©ν‘œ.
  • λ‹€μ–‘ν•œ 인증 방식을 ν•˜λ‚˜μ˜ 도메인 λͺ¨λΈ μ•ˆμ—μ„œ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ λ©€ν‹° 인증 μŠ€ν„°λ”” μ„œλ²„λ₯Ό κ΅¬ν˜„ν•˜κ³ μž 함.
  • μ‚¬μš©μž 인증, API λΌμš°νŒ…, μ„œλΉ„μŠ€ κ°„ 곡톡 응닡 ν˜•μ‹κΉŒμ§€ 톡합해 ν”„λ‘ νŠΈμ—”λ“œμ™€ 운영 κΈ°λŠ₯이 μΌκ΄€λ˜κ²Œ λ™μž‘ν•˜λŠ” ꡬ쑰λ₯Ό μ§€ν–₯함.

πŸ›  κΈ°λŠ₯ μ„€λͺ…

μ„œλΉ„μŠ€ μ—­ν• 
gateway-service JWT 인증 ν•„ν„° 적용 및 μ™ΈλΆ€ μš”μ²­ λΌμš°νŒ…
eureka-service μ„œλΉ„μŠ€ 등둝 및 λ””μŠ€μ»€λ²„λ¦¬ 관리
user-service νšŒμ›κ°€μž…, 둜그인, OAuth2, JWT, μ‚¬μš©μž 정보, λ°°μ§€
study-service μŠ€ν„°λ”” 생성/μ°Έμ—¬/검색, κ²Œμ‹œνŒ, 인증 기둝, GitHub/TODO/사진/μœ„μΉ˜ 인증
store-service 포인트, μƒν’ˆ, ꡬ맀, μ‚¬μš©μž μ•„μ΄ν…œ, μ•Œλ¦Ό
community-service 곡지사항, 문의, 문의 λŒ“κΈ€
common-service 곡톡 DTO, μ˜ˆμ™Έ, 곡톡 μ—”ν‹°ν‹°, λ³΄μ•ˆ μœ ν‹Έ

πŸ’» Tech Stack

  • Spring Boot 3
  • Spring Cloud Gateway
  • Netflix Eureka
  • Spring Security
  • OAuth2 Client
  • QueryDSL
  • PostgreSQL
  • Redis
  • RabbitMQ

🧩 Architecture

  • MSA 기반으둜 도메인별 μ„œλΉ„μŠ€λ₯Ό λΆ„λ¦¬ν•œ ꡬ쑰.
  • gateway-serviceκ°€ μ§„μž…μ μ΄ 되고, eureka-serviceκ°€ μ„œλΉ„μŠ€ λ””μŠ€μ»€λ²„λ¦¬λ₯Ό λ‹΄λ‹Ή.
  • 각 μ„œλΉ„μŠ€λŠ” common-serviceλ₯Ό κ³΅μœ ν•˜λ©° λ…λ¦½μ μœΌλ‘œ ν™•μž₯ κ°€λŠ₯ν•˜λ„λ‘ ꡬ성.
Client
  |
  v
gateway-service
  |
  +-- user-service
  +-- study-service
  +-- store-service
  +-- community-service
  |
  +-- common-service

eureka-service
  |
  +-- service discovery

Backend Structure

  • gateway-serviceλ₯Ό κΈ°μ€€μœΌλ‘œ μ™ΈλΆ€ μš”μ²­μ„ λ°›μ•„ 인증 ν•„ν„° 적용 ν›„ 각 도메인 μ„œλΉ„μŠ€λ‘œ λΌμš°νŒ…ν•œλ‹€.
  • eureka-serviceλ₯Ό κΈ°μ€€μœΌλ‘œ 각 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ˜ 등둝 및 λ””μŠ€μ»€λ²„λ¦¬λ₯Ό κ΄€λ¦¬ν•œλ‹€.
  • 도메인별 κΈ°λŠ₯은 user-service, study-service, store-service, community-service둜 λ‚˜λˆ„μ–΄ κ΄€λ¦¬ν•œλ‹€.
  • 곡톡 응닡 ν˜•μ‹, μ˜ˆμ™Έ, λ³΄μ•ˆ κ΄€λ ¨ 곡톡 μ½”λ“œλŠ” common-service에 λͺ¨μ•„ μž¬μ‚¬μš©ν•œλ‹€.
checkmate_backend
β”œβ”€β”€ common-service/           # 곡톡 DTO, μ˜ˆμ™Έ, 곡톡 μ—”ν‹°ν‹°, λ³΄μ•ˆ μœ ν‹Έ
β”œβ”€β”€ community-service/        # 곡지사항, 문의, 문의 λŒ“κΈ€
β”œβ”€β”€ eureka-service/           
β”œβ”€β”€ gateway-service/          # API κ²Œμ΄νŠΈμ›¨μ΄, JWT 인증 ν•„ν„°, λΌμš°νŒ…
β”œβ”€β”€ study-service/            # μŠ€ν„°λ”” 생성/μ°Έμ—¬/인증/κ²Œμ‹œνŒ/기둝
β”œβ”€β”€ store-service/            # 포인트, μƒν’ˆ, ꡬ맀, μ•Œλ¦Ό
β”œβ”€β”€ user-service/             # νšŒμ›, OAuth2 둜그인, JWT, λ°°μ§€
β”œβ”€β”€ build.gradle              
β”œβ”€β”€ settings.gradle           # λ©€ν‹°λͺ¨λ“ˆ ꡬ성
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ Jenkinsfile
└── gradlew