Backend Wiki - 100-hours-a-week/9-team-Devths-WIKI GitHub Wiki

Devths Backend Wiki

Backend Repository


λͺ©μ°¨


개발 일정

κΈ°κ°„ μ£Όμš” μž‘μ—…
25/12/22 ~ 26/1/4 μ„œλΉ„μŠ€ 기획, 기술 κ²€ν† 
26/1/5 ~ 1/18 섀계 (ERD, API, ν…Œν¬μŠ€νŽ™)
1/19 ~ 2/1 MVP 개발
2/2 ~ 2/8 1μ°¨ 배포 및 μΆœμ‹œ

μ»¨λ²€μ…˜ λ£°

1. μ½”λ“œ μŠ€νƒ€μΌ κ°€μ΄λ“œ

μ˜ˆμ‹œ

  1. EditorConfig μ„€μ •
μ„€μ • ν•­λͺ© κ°’ μ„€λͺ…
charset utf-8 인코딩 톡일
end_of_line lf Mac/Windows μ€„λ°”κΏˆ 차이 ν•΄κ²°
indent_style space νƒ­ λŒ€μ‹  슀페이슀 μ‚¬μš©
insert_final_newline true 파일 끝에 κ°œν–‰ μΆ”κ°€
trim_trailing_whitespace true ν›„ν–‰ 곡백 제거
max_line_length 120 가독성을 μœ„ν•œ 라인 길이 μ œν•œ

2. CheckStyle μ„€μ •

μ˜ˆμ‹œ

ν•­λͺ© κ·œμΉ™
클래슀λͺ… PascalCase
λ³€μˆ˜λͺ… 및 λ©”μ„œλ“œλͺ… camelCase
μƒμˆ˜λͺ… UPPER_SNAKE_CASE
νŒ¨ν‚€μ§€λͺ… lowercase (com.devths.domain)
νƒ­ μ‚¬μš© μ‚¬μš© μ•ˆν•¨ (Space 4)
쀄 λ°”κΏˆ LF
μ΅œλŒ€ 라인 길이 120
μ œμ–΄λ¬Έ 블둝 {} K&R Style (같은 쀄에 μ‹œμž‘)
μ—°μ‚°μž 배치 μ€„λ°”κΏˆ μ‹œ μ—°μ‚°μžλ‘œ μ‹œμž‘
import μˆœμ„œ java -> javax -> org -> com
주석 μŠ€νƒ€μΌ Javadoc ν˜•μ‹ μ€€μˆ˜

3. 컀밋 λ©”μ‹œμ§€ μ»¨λ²€μ…˜

μ˜ˆμ‹œ 


** 컀밋 λ©”μ‹œμ§€λŠ” type: message ν˜•μ‹μ„ λ”°λ₯΄λ©°, μ•„λž˜μ˜ κ·œμΉ™μ„ λ”°λ¦…λ‹ˆλ‹€. **  

제λͺ© κ·œμΉ™

  • 제λͺ©μ€ λ‹€μŒ λŒ€μ†Œλ¬Έμž μŠ€νƒ€μΌ 쀑 ν•˜λ‚˜λ₯Ό 따라야 ν•©λ‹ˆλ‹€:     - sentence-case     - start-case     - pascal-case     - upper-case     - lower-case
  • 제λͺ© 끝에 λ§ˆμΉ¨ν‘œ(.)λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 제λͺ©μ€ μ΅œμ†Œ 5자 이상이어야 ν•©λ‹ˆλ‹€.
  • 전체 ν—€λ”λŠ” 72자λ₯Ό μ΄ˆκ³Όν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.
νƒ€μž… μ„€λͺ…
build λΉŒλ“œ μ‹œμŠ€ν…œ λ˜λŠ” μ™ΈλΆ€ μ˜μ‘΄μ„± λ³€κ²½
chore νŒ¨ν‚€μ§€ λ§€λ‹ˆμ € μ„€μ • λ“± μ†ŒμŠ€ μ½”λ“œ 외적인 λ³€κ²½
content μ½˜ν…μΈ  λ³€κ²½
docs λ¬Έμ„œ μˆ˜μ • (README, Wiki λ“±)
feat μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€
fix 버그 μˆ˜μ •
refactor μ½”λ“œ λ¦¬νŒ©ν† λ§ (κΈ°λŠ₯ λ³€κ²½ μ—†μŒ)
style μ½”λ“œ ν¬λ§·νŒ…, μ„Έλ―Έμ½œλ‘  λˆ„λ½ λ“± (둜직 λ³€κ²½ μ—†μŒ)
test ν…ŒμŠ€νŠΈ μ½”λ“œ μΆ”κ°€/μˆ˜μ •
deploy 배포 κ΄€λ ¨ λ³€κ²½

컀밋 λ©”μ‹œμ§€ ν˜•μ‹

type: 제λͺ© (#이슈번호)

λ³Έλ¬Έ (선택 사항)

μ˜ˆμ‹œ

feat: νšŒμ›κ°€μž… κΈ°λŠ₯ κ΅¬ν˜„ (#12)

- Spring Security μ„€μ • μΆ”κ°€
- User μ—”ν‹°ν‹° 생성 및 Repository κ΅¬ν˜„

4. μΆ”κ°€ κ·œμΉ™

μ˜ˆμ‹œ

  • PR 제λͺ©μ€ 컀밋 λ©”μ‹œμ§€μ™€ λ™μΌν•œ ν˜•μ‹μ„ μœ μ§€ν•©λ‹ˆλ‹€.
  • ν•œ 번의 PR은 ν•˜λ‚˜μ˜ λͺ©μ μ„ κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.
  • μ½”λ“œ 리뷰λ₯Ό 거친 ν›„ 병합을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

이 μ»¨λ²€μ…˜μ„ μ€€μˆ˜ν•˜μ—¬ νŒ€μ˜ μ½”λ“œ ν’ˆμ§ˆμ„ μœ μ§€ν•˜κ³  μ›ν™œν•œ ν˜‘μ—…μ„ μ§„ν–‰ν•©μ‹œλ‹€!


μ‹œμŠ€ν…œ 섀계 (System Design)

각 섀계 λ‹¨κ³„μ˜ 상세 λ‚΄μš©μ€ 링크된 μ„œλΈŒ νŽ˜μ΄μ§€μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

1단계: ERD 섀계

Why: 데이터 무결성을 보μž₯ν•˜κ³ , ν–₯ν›„ λΉ„μ¦ˆλ‹ˆμŠ€ ν™•μž₯에 μœ μ—°ν•˜κ²Œ λŒ€μ‘ν•˜κΈ° μœ„ν•œ 데이터 λͺ¨λΈλ§μž…λ‹ˆλ‹€.

  • ERD λ‹€μ΄μ–΄κ·Έλž¨: πŸ‘‰ ERDCloud 링크
  • 핡심 μ „λž΅: μ •κ·œν™”/λ°˜μ •κ·œν™” νŠΈλ ˆμ΄λ“œμ˜€ν”„ κ³ λ €, 인덱슀 μ΅œμ ν™”

2단계: API 섀계

Why: ν΄λΌμ΄μ–ΈνŠΈμ™€μ˜ λͺ…ν™•ν•œ μΈν„°νŽ˜μ΄μŠ€ 약속이며, λ¦¬μ†ŒμŠ€ μ€‘μ‹¬μ˜ 섀계λ₯Ό 톡해 직관적인 μ‚¬μš©μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

  • URI κ·œμΉ™: RESTful 원칙 μ€€μˆ˜ (μžμ›=λͺ…사, ν–‰μœ„=λ©”μ„œλ“œ)
  • μ£Όμš” λ‚΄μš©: 인증 μ‹œν€€μŠ€, 곡톡 응닡 규격(JSON), μ—λŸ¬ μ½”λ“œ

3단계: 기술 κ²€ν†  및 μ„ μ •

Why: "남듀이 μ¨μ„œ"κ°€ μ•„λ‹Œ, **"우리 μ„œλΉ„μŠ€μ˜ 규λͺ¨μ™€ νŠΉμ„±μ— μ ν•©ν•œ 기술"**을 비ꡐ λΆ„μ„ν•˜μ—¬ μ„ μ •ν•©λ‹ˆλ‹€.

4단계: 도메인 ν…Œν¬μŠ€νŽ™

Why: λ³΅μž‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ½”λ“œλ‘œ 짜기 전에 μ‹œκ°ν™”ν•˜μ—¬ 논리적 였λ₯˜λ₯Ό 사전에 λ°©μ§€ν•©λ‹ˆλ‹€.

5단계: 인증/인가 섀계


배포 ν™˜κ²½ 및 CI/CD νŒŒμ΄ν”„λΌμΈ

Why: 반볡적인 μˆ˜λ™ 배포둜 μΈν•œ 휴먼 μ—λŸ¬λ₯Ό μ œκ±°ν•˜κ³ , μ½”λ“œ λ³€κ²½ 사항을 μ¦‰μ‹œ 운영 ν™˜κ²½μ— λ°˜μ˜ν•©λ‹ˆλ‹€.

[Image of CI CD pipeline diagram]

1. 인프라 μ•„ν‚€ν…μ²˜

  • Cloud: AWS (EC2, RDS, S3)
  • Network: VPC (Public/Private Subnet 뢄리)

2. νŒŒμ΄ν”„λΌμΈ ꡬ성

  • CI: Github Actions (Build -> Unit Test -> Lint Check)
  • CD: Docker Hub Image Push -> EC2 Pull & Run (Blue/Green Deployment)

νŠΈλŸ¬λΈ” μŠˆνŒ…


μ½”λ“œ ν’ˆμ§ˆ 관리 도ꡬ

지속 κ°€λŠ₯ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μœ„ν•΄ 뢀채λ₯Ό κ΄€λ¦¬ν•˜κ³  μ½”λ“œμ˜ 신뒰성을 μ •λŸ‰μ μœΌλ‘œ μΈ‘μ •ν•©λ‹ˆλ‹€.

도ꡬ μ—­ν•  λͺ©μ 
.editorconfig μ½”λ“œ 포맷 톡일 IDE κ°„ μ„€μ • 차이둜 μΈν•œ λΆˆν•„μš”ν•œ μ½”λ“œ λ³€κ²½ λ°©μ§€
Checkstyle μ½”λ”© μ»¨λ²€μ…˜ 검사 μ½”λ“œ μŠ€νƒ€μΌ 일관성 μœ μ§€ 및 가독성 ν–₯상
JaCoCo ν…ŒμŠ€νŠΈ 컀버리지 μΈ‘μ • ν…ŒμŠ€νŠΈλ˜μ§€ μ•Šμ€ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 식별 (λͺ©ν‘œ: 70%)
Java Test Fixtures ν…ŒμŠ€νŠΈ 데이터 관리 ν…ŒμŠ€νŠΈ μ½”λ“œ 쀑볡 제거 및 μœ μ§€λ³΄μˆ˜ μš©μ΄μ„± 확보
SonarQube 정적 μ½”λ“œ 뢄석 μ½”λ“œ 슀멜, λ³΄μ•ˆ 취약점, 버그 사전 탐지
⚠️ **GitHub.com Fallback** ⚠️