Skip to content

๐Ÿ‘ฉโ€๐Ÿ’ป ํŒ€ ์ปจ๋ฒค์…˜

yewon edited this page Aug 2, 2025 · 3 revisions

Git ์ปจ๋ฒค์…˜

๋ธŒ๋žœ์น˜ ์ „๋žต

  • Github Flow
    • ๋‹ค๋ฅธ ํŒ€์›์˜ ์ž‘์—… ์ง„ํ–‰ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•˜๊ธฐ ์šฉ์ดํ•˜๋ฉฐ, ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๋ฅผ ๊ณ ๋ คํ–ˆ์„ ๋•Œ ์ง€์†์ ์ธ ๋ฐฐํฌ๊ฐ€ ํŽธ๋ฆฌํ•˜๋‹ค ํŒ๋‹จํ•˜์—ฌ ์„ ํƒ
  • rebase ์•„๋‹Œ ์ผ๋ฐ˜ merge ์‚ฌ์šฉ, ๋จธ์ง€ ์™„๋ฃŒํ•œ ๋ธŒ๋žœ์น˜๋Š” ์ดํ›„ ์‚ญ์ œ

PR ์ปจ๋ฒค์…˜

  • API ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœ ํ›„ ์ปค๋ฐ‹
  • PR ๋จธ์ง€ ์ „ ๋ฐ˜๋“œ์‹œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ ํ†ต๊ณผ๋ฅผ ํ™•์ธ ํ›„ ๋จธ์ง€ํ•จ
  • ํŒ€์› 5๋ช…์ค‘ 3๋ช… ์ด์ƒ approve์‹œ ๋จธ์ง€ ๊ฐ€๋Šฅ
    • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํŒ€์›์ด ์ฝ”๋“œ๋ฆฌ๋ทฐ ํ•˜์˜€์œผ๋ฉฐ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „์› ํ™•์ธ ์ฒดํฌ ํ›„ ๋จธ์ง€ํ•˜์˜€์Œ
  • ์ด์Šˆ ์ƒ์„ฑ ํ›„ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ด ์ž‘์—…์„ ์‹œ์ž‘ํ•จ
  • ๋ณต์žกํ•œ ๋‚ด์šฉ์˜ PR content์—๋Š” ํŒ€์›์˜ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ์„ค๋ช… ์ž‘์„ฑ
  • P0-P6 ์ฝ”๋“œ ๋ฆฌ๋ทฐ ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ
  • ๋‹ค๋ฅธ ํŒ€์›์˜ PR์— ๋‹จ ์ฝ”๋ฉ˜ํŠธ๋Š” ์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ž‘์„ฑํ•œ ๋ณธ์ธ์ด ์ง์ ‘ ๋ฐ˜์˜ ํ™•์ธ ํ›„ resolve

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

  • ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ปค๋ฐ‹ ์œ ํ˜• ๋’ค ๊ฐ„๋‹จํ•œ ๋ช…์‚ฌํ˜• ์„ค๋ช…
    • ex: Feat: DocService ๊ตฌํ˜„
  • PR๊ณผ ์ด์Šˆ ์ œ๋ชฉ ์ผ์น˜
  • ์ œ๋ชฉ์€ ํ•œ๊ธ€ ๊ธฐ์ค€ 20์ž ์ด๋‚ด๋กœ
์ปค๋ฐ‹ ์œ ํ˜• ์˜๋ฏธ
Feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
Fix ๋ฒ„๊ทธ ์ˆ˜์ •
Docs ๋ฌธ์„œ ์ˆ˜์ •
Style ์ฝ”๋“œ formatting, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ์ž์ฒด์˜ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
Refactor ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
Test ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
Chore ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •, ๊ทธ ์™ธ ๊ธฐํƒ€ ์ˆ˜์ • ex) .gitignore
Design CSS ๋“ฑ ์‚ฌ์šฉ์ž UI ๋””์ž์ธ ๋ณ€๊ฒฝ
Comment ํ•„์š”ํ•œ ์ฃผ์„ ์ถ”๊ฐ€ ๋ฐ ๋ณ€๊ฒฝ
Rename ํŒŒ์ผ ๋˜๋Š” ํด๋” ๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…๋งŒ์ธ ๊ฒฝ์šฐ
Remove ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ
!BREAKING CHANGE ์ปค๋‹ค๋ž€ API ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ
!HOTFIX ๊ธ‰ํ•˜๊ฒŒ ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์ณ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

Code ์ปจ๋ฒค์…˜

  • Google Java Style Guide ์ ์šฉ
  • ๋ชจ๋“  Dto๋Š” record๋กœ ์‚ฌ์šฉ
    • ์ƒ์„ฑ์ž๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ๋ผ๋ฉด from ์„ ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ ์ด์ƒ์ด๋ฉด of๋ฅผ ์‚ฌ์šฉ
  • ๋ชจ๋“  dto-entity ๋ณ€ํ™˜์€ Mapper ํด๋ž˜์Šค ์‚ฌ์šฉ
    • ์ด๋ฆ„์€ (๋„๋ฉ”์ธ์ด๋ฆ„)Mapper
    • ๋„๋ฉ”์ธ๋ณ„ util ํŒจํ‚ค์ง€ ํ•˜์œ„์— ์œ„์น˜
    • ๋ฉ”์„œ๋“œ๋ช…์€ toEntity(), toGraphCreateResponse()
  • ๋ชจ๋“  ๊ณณ์— Setter ์‚ฌ์šฉ ์ง€์–‘, ๋ฉ”์„œ๋“œ๋กœ ๋Œ€์ฒด
  • entity์—์„œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜์— ์ƒ๊ด€ ์—†์ด ์ผ๊ด€์„ฑ ์žˆ๋Š” Builder ์‚ฌ์šฉ

ํŒจํ‚ค์ง€ ๊ตฌ์กฐ

  • ๋„๋ฉ”์ธํ˜• ์„ค๊ณ„ ์ ์šฉ
  • ๊ตฌ์กฐ์  ์žฅ์ :
    • ๋ชจ๋“ˆ ํ™•์žฅ ์šฉ์ด์„ฑ: ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ๋ฌถ์—ฌ ์žˆ์–ด ์ƒˆ๋กœ์šด ๋„๋ฉ”์ธ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ๋„๋ฉ”์ธ๋งŒ ๋ถ„๋ฆฌํ•ด ๋ชจ๋“ˆํ™”(MSA ๋“ฑ)ํ•˜๊ธฐ ์‰ฌ์›€
    • ์ฝ”๋“œ ์‘์ง‘๋„ ์ฆ๊ฐ€: ๋™์ผ ๋„๋ฉ”์ธ ๋‚ด์˜ ๋ชจ๋“  ๊ณ„์ธต์ด ํ•œ ๊ณณ์— ์œ„์น˜ํ•˜์—ฌ ๊ด€๋ฆฌ๊ฐ€ ํŽธ๋ฆฌํ•จ
    • MSA ์ „ํ™˜ ๊ธฐ๋ฐ˜ ํ™•๋ณด: ๋„๋ฉ”์ธ ๋‹จ์œ„ ์„œ๋น„์Šค ๋ถ„๋ฆฌ ์‹œ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ณ„์Šน ๊ฐ€๋Šฅ
  • ๊ตฌ์กฐ์  ํ•œ๊ณ„:
    • ํ˜„์žฌ ๋ชจ๋“ˆ๊ฐ„ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์ง€ ์•Š์œผ๋ฉฐ ์ผ๋ถ€ ๋„๋ฉ”์ธ ๊ฐ„ ์ง์ ‘ ์ฐธ์กฐ๊ฐ€ ์กด์žฌํ•จ
    • ์žฅ๊ธฐ์ ์œผ๋กœ MSA ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค๋ฉด ์„œ๋น„์Šค ๊ฒฝ๊ณ„๋ฅผ ๋” ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์œผ๋กœ ๋ณด์ž„
    • ์ถ”ํ›„ ์˜์กด์„ฑ ๋ถ„๋ฆฌ, ๊ณตํ†ต ๋ชจ๋“ˆํ™”, ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์ •ํ•ฉ์„ฑ ์„ค๊ณ„๋“ฑ์˜ ๊ฐœ์„  ์ž‘์—… ํ•„์š”
com.ejangs.docsa
โ”œโ”€โ”€ DocsaApplication.java
โ”œโ”€โ”€ domain
โ”‚   โ”œโ”€โ”€ auth
โ”‚   โ”‚   โ”œโ”€โ”€ api         # ์ธ์ฆ ๊ด€๋ จ ์ปจํŠธ๋กค๋Ÿฌ
โ”‚   โ”‚   โ”œโ”€โ”€ app         # ์ธ์ฆ ๋กœ์ง, ๋ฉ”์ผ ์ „์†ก
โ”‚   โ”‚   โ”œโ”€โ”€ dto         # ์ธ์ฆ ์š”์ฒญ/์‘๋‹ต DTO
โ”‚   โ”‚   โ”œโ”€โ”€ model       # ์ธ์ฆ ๊ด€๋ จ ๋ชจ๋ธ(enum ๋“ฑ)
โ”‚   โ”‚   โ”œโ”€โ”€ swagger     # Swagger ๋ฌธ์„œ
โ”‚   โ”‚   โ””โ”€โ”€ util        # ์ธ์ฆ ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ ๋“ฑ ์œ ํ‹ธ
โ”‚   โ”œโ”€โ”€ commit
โ”‚   โ”‚   โ”œโ”€โ”€ api, app, dao.mongodb/mysql
โ”‚   โ”‚   โ”œโ”€โ”€ document    # MongoDocument
โ”‚   โ”‚   โ”œโ”€โ”€ dto, entity, swagger, util
โ”‚   โ”œโ”€โ”€ doc
โ”‚   โ”‚   โ”œโ”€โ”€ api, app, dao, dto (๊ทธ๋ž˜ํ”„/์š”์•ฝ ์‘๋‹ต ํฌํ•จ)
โ”‚   โ”‚   โ”œโ”€โ”€ entity, model, swagger, util
โ”‚   โ”œโ”€โ”€ save
โ”‚   โ”‚   โ”œโ”€โ”€ api, app, dao.mongodb/mysql
โ”‚   โ”‚   โ”œโ”€โ”€ document, dto, entity, swagger, util
โ”‚   โ””โ”€โ”€ user
โ”‚       โ”œโ”€โ”€ api, app, dao, dto, entity
โ”‚       โ”œโ”€โ”€ security   # Spring Security ์„ค์ •
โ”‚       โ”œโ”€โ”€ swagger, util
โ”œโ”€โ”€ global
โ”‚   โ”œโ”€โ”€ common         # ๊ณตํ†ต ์—”ํ‹ฐํ‹ฐ (e.g., BaseEntity)
โ”‚   โ”œโ”€โ”€ config         # ์„ค์ • ํด๋ž˜์Šค๋“ค (Security, JPA, Mail ๋“ฑ)
โ”‚   โ”œโ”€โ”€ exception
โ”‚   โ”‚   โ”œโ”€โ”€ handler, ErrorResponse
โ”‚   โ”‚   โ””โ”€โ”€ errorcode  # ๊ธฐ๋Šฅ๋ณ„ ์—๋Ÿฌ ์ฝ”๋“œ ์ •์˜
โ”‚   โ”œโ”€โ”€ init           # ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์„ค์ •
โ”‚   โ”œโ”€โ”€ mongo.deletion # Mongo DB ์‚ญ์ œ ์‹คํŒจ ์ฒ˜๋ฆฌ ๋กœ์ง
โ”‚   โ””โ”€โ”€ util           # ๊ณตํ†ต ์œ ํ‹ธ

๋„ค์ด๋ฐ ์ „๋žต

  • ๋ฉ”์„œ๋“œ ๋ช…์€
  • DTO ๋ช…์€ (๋„๋ฉ”์ธ์ด๋ฆ„)(๋ชฉ์ )Request/Response, ๊ตฌ๋ถ„์ด ์• ๋งคํ•œ ๊ฒƒ์€ Dto๋กœ
    • ex: GraphCreateRequest, GraphCreateDto
  • ๋ณ€์ˆ˜๋ช…
    • ๋ณ€์ˆ˜๋ช…์€ ์นด๋ฉœ ์ผ€์ด์Šค(userName, totalNumber)
๊ทœ์น™ ์˜ˆ์‹œ
๋‹จ์ผ ๊ฐ์ฒด๋Š” ๋‹จ์ˆ˜ํ˜• ์‚ฌ์šฉ coffee, order
์ปฌ๋ ‰์…˜์€ ๋ณต์ˆ˜ํ˜• ์‚ฌ์šฉ coffees, orders
๋ณ€์ˆ˜๋ช…์— ํƒ€์ž…์€ ํฌํ•จํ•˜์ง€ ์•Š์Œ โœ… createdOrder, โŒ orderListArray
์˜๋ฏธ๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๋Š” ์˜๋„ ๊ธฐ๋ฐ˜ ๋„ค์ด๋ฐ createdOrder, updatedCoffee
Boolean์€ ์ ‘๋‘์‚ฌ has ์‚ฌ์šฉ updated, hasCredential
Optional์€ optional ์ ‘๋‘์‚ฌ ์‚ฌ์šฉ optionalUser