1. Backend Wiki - 100-hours-a-week/7-team-ddb-wiki GitHub Wiki

Dolpin Backend Wiki

Backend Repository


๋ชฉ์ฐจ


๊ฐœ๋ฐœ ์ผ์ •

์ฐธ๊ณ : roadmap.md ์ฐธ์กฐ

๊ธฐ๊ฐ„ ์ฃผ์š” ์ž‘์—… (Backend ๊ด€๋ จ)
~ 2025.05.12 - ์‚ฌ์šฉ์ž ์ธ์ฆ/์ธ๊ฐ€ API ๊ฐœ๋ฐœ
- ์ดˆ๊ธฐ ์‚ฌ์šฉ์ž ์ •๋ณด ์ฒ˜๋ฆฌ API ๊ฐœ๋ฐœ
- AI ์ถ”์ฒœ ๊ฒฐ๊ณผ ์ œ๊ณต API ๊ฐœ๋ฐœ
- ์žฅ์†Œ ์ •๋ณด ์กฐํšŒ API ๊ฐœ๋ฐœ
- DB ๋ชจ๋ธ๋ง (์‚ฌ์šฉ์ž, ์žฅ์†Œ, ์ดˆ๊ธฐ ์ถ”์ฒœ ๋ฐ์ดํ„ฐ)
- ๊ธฐ๋ก CRUD API ๊ฐœ๋ฐœ
~ 2025.06.20 - ์‚ฌ์ง„ ์—…๋กœ๋“œ ์ฒ˜๋ฆฌ (S3 ์—ฐ๋™)
- ๊ฐœ์ธํ™” ์ถ”์ฒœ ๋กœ์ง ์—ฐ๋™ API ์ˆ˜์ •
- DB ๋ชจ๋ธ๋ง (๋ฆฌ๋ทฐ, ์ข‹์•„์š” ๋“ฑ)
~ 2025.07.18 - ์ง€์—ญ๋ณ„ ์ธ๊ธฐ ๊ฒŒ์‹œ๊ธ€ ์ง‘๊ณ„ ๋กœ์ง ๊ฐœ๋ฐœ
- Geofencing ์—ฐ๋™ API ๊ฐœ๋ฐœ
- ๊ธฐ๋ก ํ‚ค์›Œ๋“œ ๋ถ„์„ ๋ฐ ์ถ”์ฒœ ๋ฐ˜์˜ ๋กœ์ง ๊ฐœ๋ฐœ
- '๋ฐœ๊ฒฌํ•œ ์žฅ์†Œ ๋ฆฌ์ŠคํŠธ' API ๊ฐœ๋ฐœ
~ 2025.08.01 - ์ „์ฒด ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ๋ฐ ์„ฑ๋Šฅ ๊ฐœ์„ 
- API ์‘๋‹ต ๊ตฌ์กฐ ๋ฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ํ‘œ์ค€ํ™”
- DB ์ฟผ๋ฆฌ ์ตœ์ ํ™”

ERD


API

  • API ๋ช…์„ธ์„œ: https://www.notion.so/Dolpin-API-1dce68db3e1580c98317ca7fd9a91b9d
  • ์‘๋‹ต ๊ทœ๊ฒฉ: ํ‘œ์ค€ RESTful API ์‘๋‹ต ํ˜•์‹ ์ค€์ˆ˜ (์„ฑ๊ณต/์‹คํŒจ ์ƒํƒœ ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ๋ฉ”์‹œ์ง€ ๋“ฑ ํฌํ•จ)

๋ฐฐํฌ ํ™˜๊ฒฝ ๋ฐ CI/CD ํŒŒ์ดํ”„๋ผ์ธ

์ฐธ๊ณ : README.md ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์กฐ ์ฐธ์กฐ

  • ๋ฐฐํฌ ํ™˜๊ฒฝ: AWS (EC2, RDS ๋“ฑ ํ™œ์šฉ ์˜ˆ์ƒ)
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: MySQL (AWS RDS ํ™œ์šฉ ์˜ˆ์ƒ)
  • ์›น ์„œ๋ฒ„: Nginx (๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ)
  • CI/CD ๋„๊ตฌ: GitHub Actions
  • ๋นŒ๋“œ ๋„๊ตฌ: Gradle
  • ์ปจํ…Œ์ด๋„ˆํ™”: Docker
  • ํŒŒ์ดํ”„๋ผ์ธ ์š”์•ฝ:
    1. dev ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ/๋ณ‘ํ•ฉ ์‹œ ์ž๋™ ๋นŒ๋“œ (Gradle) ๋ฐ ํ…Œ์ŠคํŠธ ์‹คํ–‰
    2. ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ์‹œ Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ AWS ํ™˜๊ฒฝ์— ๋ฐฐํฌ (๊ฐœ๋ฐœ ์„œ๋ฒ„)
    3. main ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ ์‹œ ์ž๋™ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ ๋ฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ๋ฐฐํฌ

์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๋„๊ตฌ

๋„๊ตฌ ์—ญํ•  ๋ชฉ์ 
.editorconfig ์ฝ”๋“œ ์Šคํƒ€์ผ ํ†ต์ผ IDE ๊ฐ„์˜ ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ ์Šคํƒ€์ผ ์ผ๊ด€์„ฑ ์œ ์ง€
Checkstyle ์ •์  ์ฝ”๋“œ ๋ถ„์„ ์ •์˜๋œ ์ฝ”๋”ฉ ๊ทœ์น™ ์ค€์ˆ˜ ์—ฌ๋ถ€ ๊ฒ€์‚ฌ
JaCoCo ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ์ธก์ • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ถ„์„
(์„ ํƒ) Java Test Fixtures ํ…Œ์ŠคํŠธ ํ”ฝ์Šค์ฒ˜ ๊ด€๋ฆฌ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋ฐ ์„ค์ •์˜ ์žฌ์‚ฌ์šฉ์„ฑ ๋ฐ ๊ด€๋ฆฌ ์šฉ์ด์„ฑ ์ฆ๋Œ€
(์„ ํƒ) SonarQube ์ฝ”๋“œ ํ’ˆ์งˆ ํ”Œ๋žซํผ ์ •์  ๋ถ„์„, ๋ฒ„๊ทธ, ๋ณด์•ˆ ์ทจ์•ฝ์  ๋“ฑ ์ข…ํ•ฉ์ ์ธ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…


์ปจ๋ฒค์…˜ ๋ฃฐ

1. ์ฝ”๋“œ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ (EditorConfig & CheckStyle)

EditorConfig (.editorconfig ํŒŒ์ผ)

์„ค์ • ํ•ญ๋ชฉ ๊ฐ’ ์„ค๋ช…
charset utf-8 ๋ฌธ์ž ์ธ์ฝ”๋”ฉ UTF-8
end_of_line lf ์ค„ ๋ ๋ฌธ์ž๋Š” LF
indent_style space ๋“ค์—ฌ์“ฐ๊ธฐ ์Šคํƒ€์ผ์€ ๊ณต๋ฐฑ
indent_size 4 ๋“ค์—ฌ์“ฐ๊ธฐ ํฌ๊ธฐ๋Š” 4์นธ
insert_final_newline true ํŒŒ์ผ ๋์— ๋นˆ ์ค„ ์ถ”๊ฐ€
trim_trailing_whitespace true ์ค„ ๋์˜ ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ ์ œ๊ฑฐ
max_line_length 120 ํ•œ ์ค„์˜ ์ตœ๋Œ€ ๊ธธ์ด 120์ž

CheckStyle (ํ”„๋กœ์ ํŠธ ๋‚ด checkstyle.xml ์„ค์ • ํŒŒ์ผ ์ฐธ์กฐ) Google Java Style Guide ๊ธฐ๋ฐ˜ ์„ค์ • ์‚ฌ์šฉ ๊ถŒ์žฅ

ํ•ญ๋ชฉ ๊ทœ์น™ (์š”์•ฝ)
ํด๋ž˜์Šค๋ช… PascalCase
๋ณ€์ˆ˜๋ช… ๋ฐ ๋ฉ”์„œ๋“œ๋ช… camelCase
์ƒ์ˆ˜๋ช… UPPER_SNAKE_CASE
ํŒจํ‚ค์ง€๋ช… ์†Œ๋ฌธ์ž, . ๊ตฌ๋ถ„
ํƒญ ์‚ฌ์šฉ ์‚ฌ์šฉ ๊ธˆ์ง€ (๊ณต๋ฐฑ ์‚ฌ์šฉ)
์ค„ ๋ฐ”๊ฟˆ ์ผ๊ด€๋œ ๊ทœ์น™ ์ ์šฉ (์—ฐ์‚ฐ์ž ์ด์ „/์ดํ›„ ๋“ฑ)
์ตœ๋Œ€ ๋ผ์ธ ๊ธธ์ด 120์ž (EditorConfig์™€ ๋™์ผ)
์ œ์–ด๋ฌธ ๋ธ”๋ก {} ํ•ญ์ƒ ์‚ฌ์šฉ (if, for, while ๋“ฑ)
์—ฐ์‚ฐ์ž ๋ฐฐ์น˜ ์ผ๊ด€๋œ ๊ทœ์น™ ์ ์šฉ
import ์ˆœ์„œ ํ‘œ์ค€ ์ˆœ์„œ ์ ์šฉ (java, javax, org, com...)
์ฃผ์„ ์Šคํƒ€์ผ Javadoc, // ๋“ฑ ๋ช…ํ™•ํ•œ ์Šคํƒ€์ผ ์‚ฌ์šฉ

2. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜

(Angular Commit Convention ๊ธฐ๋ฐ˜)

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํ˜•์‹:

<type>: <subject> (#์ด์Šˆ๋ฒˆํ˜ธ)

<body>

<footer>

์ œ๋ชฉ ๊ทœ์น™:

  • type: ๋‹ค์Œ ํ•œ ์นธ ๊ณต๋ฐฑ ํ•„์ˆ˜
  • ์ œ๋ชฉ ๋์— ๋งˆ์นจํ‘œ(.) ์‚ฌ์šฉ ๊ธˆ์ง€
  • ์ œ๋ชฉ์€ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•ต์‹ฌ ๋‚ด์šฉ ์š”์•ฝ
  • ์ด์Šˆ ๋ฒˆํ˜ธ๋Š” ์ œ๋ชฉ ๋ #์ด์Šˆ๋ฒˆํ˜ธ ํ˜•์‹์œผ๋กœ ์ถ”๊ฐ€
ํƒ€์ž… ์„ค๋ช…
build ๋นŒ๋“œ ์‹œ์Šคํ…œ ๋˜๋Š” ์™ธ๋ถ€ ์˜์กด์„ฑ ๋ณ€๊ฒฝ (gradle, npm ๋“ฑ)
chore ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ์„ค์ • ๋ณ€๊ฒฝ, ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๋“ฑ ๊ธฐํƒ€ ์žก๋ฌด
content (๋ณ„๋„ ์ •์˜ ํ•„์š” ์‹œ)
docs ๋ฌธ์„œ ์ˆ˜์ • (README, Wiki ๋“ฑ)
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix ๋ฒ„๊ทธ ์ˆ˜์ •
refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง (๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์—†์ด ์ฝ”๋“œ ๊ตฌ์กฐ ๊ฐœ์„ )
style ์ฝ”๋“œ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ (ํฌ๋งทํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋“ฑ; ๋กœ์ง ๋ณ€๊ฒฝ ์—†์Œ)
test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€/์ˆ˜์ •
deploy ๋ฐฐํฌ ๊ด€๋ จ ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์„ค์ • ๋ณ€๊ฒฝ

์˜ˆ์‹œ:

feat: ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ API ๊ตฌํ˜„ (#42)

์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•œ ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
JWT ํ† ํฐ ๋ฐœ๊ธ‰ ๋กœ์ง ํฌํ•จ.

3. ์ถ”๊ฐ€ ๊ทœ์น™ (PR, ๋ธŒ๋žœ์น˜ ๋“ฑ)

  • ๋ธŒ๋žœ์น˜ ์ „๋žต: frontend-wiki.md์˜ Git ๋ธŒ๋žœ์น˜ ์ „๋žต๊ณผ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ (main, dev, feature/#, bug/#, refactor/#)
  • PR ์ œ๋ชฉ: ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ œ๋ชฉ ํ˜•์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘์„ฑ (์˜ˆ: Feat: ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ API ๊ตฌํ˜„ (#42))
  • PR ๋‚ด์šฉ: ๋ณ€๊ฒฝ ๋ชฉ์ , ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ, ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•, ๊ด€๋ จ ์ด์Šˆ ๋ฒˆํ˜ธ ๋ช…์‹œ
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ: ์ตœ์†Œ 1๋ช… ์ด์ƒ์˜ ๋ฆฌ๋ทฐ์–ด ์Šน์ธ ํ›„ ๋ณ‘ํ•ฉ ์›์น™
  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ: ์ฃผ์š” ๋กœ์ง์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ๊ถŒ์žฅ (JUnit, Mockito ๋“ฑ ์‚ฌ์šฉ)
โš ๏ธ **GitHub.com Fallback** โš ๏ธ