[TIL] 2025-02-06(๐Ÿšง์ˆ˜์ •)

Yuriยท2025๋…„ 2์›” 6์ผ

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
43/59
post-thumbnail

๐Ÿ“• Today I Learned - ์˜ค๋Š˜ ๋‚ด๊ฐ€ ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“† ์˜ค๋Š˜์˜ ๋ชฉํ‘œ

โœ๏ธ ๊ณผ์ œ

  • Lv0 API ๋ช…์„ธ ๋ฐ ERD ์ž‘์„ฑ
    • API ๋ช…์„ธ์„œ ์ž‘์„ฑ ( Notion, PostMan )
    • ERD ์ž‘์„ฑ ( ERDCloud )
  • Lv1 ์ผ์ • CRUD
    • ์ผ์ •์„ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ซ ๊ฐœ์ธ๋ชฉํ‘œ

  • ์„ธ์…˜ ๋ฆฌ๋งˆ์ธ๋“œ
    • git rebase ์ „๋žต ์‚ฌ์šฉํ•˜๊ธฐ
  • ์Šคํ”„๋ง ์ž…๋ฌธ ์„น์…˜3
  • 1์ผ 1 ์•Œ๊ณ ๋ฆฌ์ฆ˜

Spring JPA ํ”„๋กœ์ ํŠธ

[Spring] JPA Entity


git๊ป ๊ฐœ๋ฐœํ–ˆ์œผ๋‹ˆ, git๊น”๋‚˜๊ฒŒ git์“ฐ๊ธฐ

ํ˜‘์—… ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ํ•„์ˆ˜ ๊ด€๋ฌธ(์ด์ง€๋งŒ ์ž˜ ์“ฐ๊ธฐ ์–ด๋ ต๋‹ค๐Ÿคฆ)

๐Ÿ’ฅย ์ฝ”๋“œ ์ถฉ๋Œ(conflit): ์•ˆ ๋‚  ์ˆ˜๋Š” ์—†์œผ๋‹ˆ ๊ทน๋ณตํ•˜์ž

  • ๊ฐ™์€ ๊ณณ์— ๊ฐ์ž ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•œ ํ›„ merge ํ•œ ์ƒํ™ฉ
    • HEAD : ๋‚ด ์ฝ”๋“œ
  • ์ถฉ๋Œ์„ ํ•ด๊ฒฐํ•˜๊ณ  "merge commit"์„ ํ•˜๋ฉด ๊ทธ๋ž˜ํ”„๊ฐ€ ์ปค์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค == ์‚ฐ๋ฐฉ์‚ฐ
  • rebase ๋ฐฉ์‹์ด ํ‘œ์ค€์ด ๋˜์ง€ ๋ชปํ•œ ์ด์œ  โ†’ ๐Ÿค• ์œ„ํ—˜์„ฑ์ด ์žˆ๋‹ค
    • base(dev) ์—์„œ ๋ช…๋ น์–ด
      • git merge "์ž‘์—… ๋ธŒ๋žœ์น˜1"
    • ์ž‘์—… ๋ธŒ๋žœ์น˜2 ์—์„œ git rebase dev ํ–ˆ๋”๋‹ˆ rebase ์ถฉ๋Œ ๋ฐœ์ƒ
      • confilt์„ ํ•ด๊ฒฐํ•˜๊ณ  git rebase โ€”confinue
    • base(dev) ์—์„œ ๋‹ค์‹œ git merge "์ž‘์—… ๋ธŒ๋žœ์น˜2"
    • ์ž‘์—… ๋ธŒ๋žœ์น˜2๋Š” remote์— ์ด๋ฏธ ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” commit์„ ๊ฐ•์ œ๋กœ ๋ฎ์–ด์“ฐ๋ฉด์„œ git push โ€”force
  • ์ž‘์—… ๋ธŒ๋žœ์น˜1์€ ๋‹ค์‹œ base(dev) ๊ธฐ์ค€์œผ๋กœ rebase ํ•ด์•ผ ํ•œ๋‹ค

โ‡’ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ํ•œ๋ฒˆ pull ๋ฐ›๊ณ  rebase ํ•˜๋Š” ์ž‘์—…์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค

๐Ÿ’ย ์„ ํƒ์  ๋ฐ˜์˜(cherry-pick): "๋ฐฐํฌ" ๋˜๋Š” "์˜›๋‚  ์ปค๋ฐ‹ ๋˜์‚ด๋ฆฌ๊ธฐ"

  • ๋ฐ˜์˜๋  ํ•„์š”๊ฐ€ ์—†๋Š” ์ปค๋ฐ‹์„ ๋‹ค๋ฅธ ์ปค๋ฐ‹์œผ๋กœ pull ๋ฐ›์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋งŒ๋“ ๋‹ค.
    • ์‹ค์ œ ์ปค๋ฐ‹๋œ ํ•ด์‹œ์ฝ”๋“œ์™€ cherry-pick ํ•œ ํ•ด์‹œ์ฝ”๋“œ๋Š” ๋‹ค๋ฅด๋‹ค.
    • base์™€ ์ž‘์—… ๋ธŒ๋žœ์น˜์˜ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•ด๋ณด๋ฉด์„œ ํ˜„์žฌ ์ƒํƒœ๊ฐ€ ๋ชจ๋‘ pull ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ
  • ๋ฐฐํฌ ์‹œ์ (dev ๐Ÿ‘‰ main) ์— ์ผ๋ถ€ ์ปค๋ฐ‹์ด ์˜ค๋Š˜ ๋ฐฐํฌ๋˜๋ฉด ์•ˆ๋˜๋Š” ์ƒํ™ฉ
    • git merge dev โ€”no-ff -m โ€œrelease/##โ€
      • ๋ฐฐํฌ๋˜์–ด์„œ๋Š” ์•ˆ๋˜๋Š” ์ปค๋ฐ‹๊นŒ์ง€ ๋ฐฐํฌ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค.
  • ์ƒˆ๋กœ์šด ๋ฐฐํฌ์šฉ ๋ธŒ๋žœ์น˜๋ฅผ ํ•˜๋‚˜ ๋”ฐ์„œ dev์—์„œ cherry-pickํ•œ ์ปค๋ฐ‹๋งŒ ๋ฐฐํฌํ•œ๋‹ค.
    • ๊ทธ ๋‹ค์Œ dev ๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š์€ ์ปค๋ฐ‹ ์™ธ ๋ฐฐํฌ ์™„๋ฃŒ๋œ ์ƒํƒœ๋ฅผ ๋งž์ถฐ์•ผํ•œ๋‹ค.
    • ๋ฐฐํฌ ํ›„์—๋Š” dev์—์„œ main ๊ธฐ์ค€์œผ๋กœ rebase๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ์—ฐ๊ด€์ด ๋˜์–ด์žˆ๋Š”๋ฐ ์ผ๋ถ€๋งŒ cherry-pick ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ณ„๋กœ ์—†๋‹ค
    • ์—ฐ๊ด€์ด ์žˆ์œผ๋ฉด ๊ทธ์ „์— squash ํ•ด์„œ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ฃผ์„ธ์š”!

๐Ÿ”™ ์ฝ”๋“œ ๋˜๋Œ๋ฆฌ๊ธฐ(Rollback): ์žฅ์•  ๋ฐœ์ƒ ์ด์ „์œผ๋กœ ๊ฐ€๊ธฐ

  • reset(Hard) : ์žฅ์•  ๋ƒˆ๋˜ ์ด์œ ๋ฅผ ์—†์• ๋ฒ„๋ฆผ == ์‚ฌ๊ณ ์น˜๊ณ  ๋ฎ์–ด๋ฒ„๋ฆฌ๊ธฐ
    • ์žฅ์•  ๊ด€๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  reset ํ•ด๋ฒ„๋ฆฌ๋ฉด ์žฅ์• ๊ฐ€ ๋‚ฌ๋˜ ์›์ธ์„ ๋ถ„์„ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๊ณ  ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•  ํ™•๋ฅ ์ด ๋” ๋†’๋‹ค
  • revert: ์žฅ์• ๊ฐ€ ๋‚˜๊ธฐ ์ „์œผ๋กœ ๋‹ค์‹œ ์ƒˆ ์ปค๋ฐ‹์„ ๋งŒ๋“œ๋Š” ์ž‘์—…

๐Ÿ’พ ์ž‘์—… ์ž„์‹œ์ €์žฅ(stach): ๋œ ๋๋‚œ ์ž‘์—… commit ํ•˜๊ธฐ ์• ๋งคํ•  ๋•Œ

  • stach: ์ž‘์—… ๋‚ด์šฉ์„ ์ปค๋ฐ‹์„ ํ•˜๊ธฐ ์• ๋งคํ•œ ์ƒํ™ฉ์ธ๋ฐ pull์„ ๋ฐ›์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด
    • working directory ๋ผ๋Š” ๊ณต๊ฐ„์— ์ž„์‹œ๋กœ ์ €์žฅํ•ด๋‘”๋‹ค.
    • pull์„ ๋ฐ›์•„ ์ƒํƒœ๋ฅผ ๋งž์ถฐ์ฃผ๊ณ  ๋‹ค์‹œ ๋‚ด ์ž‘์—…์„ ์ด์–ด์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค.

โณ git flow : ์ด๊ฒŒ ๋ฐ”๋กœ git์˜ ์ •์„

  • main
  • hotfixes
  • release_branches
  • develop
  • feature_branches

์‚ฌ์šฉ ํ™˜๊ฒฝ๊นŒ์ง€ ๊ณ ๋ คํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. (์‹ค๋ฌด์—์„œ๋„ ํšŒ์‚ฌ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค.)

๐Ÿงย git์€ โ€œํ•ด์‹œ์ฝ”๋“œโ€๋ฅผ ์œ ์˜๊นŠ๊ฒŒ ๋ด์•ผํ•œ๋‹ค.


๊ณผ์ œ+โบ

API ๋ช…์„ธ์„œ ์ž‘์„ฑ๊ณผ ERD ์ž‘์„ฑ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐํšํ•˜๋ฉฐ ๋– ์˜ค๋ฅธ ์•„์ด๋””์–ด๋ฅผ ์ •๋ฆฌ
๐Ÿ‘‰ ๊ณผ์ œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์ถ”๊ฐ€๋กœ ์ ์šฉํ•ด๋ณด๊ธฐ

  • ๋กœ๊ทธ์ธ JWT
  • ๊ณ„์ธตํ˜• ๋Œ“๊ธ€ ๊ตฌํ˜„

๐Ÿšฉ ๋‚ด์ผ ํ•  ์ผ

โœ๏ธ ๊ณผ์ œ

  • Lv2 ์œ ์ € CRUD
    • ์œ ์ €๋ฅผ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Lv3 ํšŒ์›๊ฐ€์ž…
    • ์œ ์ €์— ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ญ ์ผ๊ธฐ

๐Ÿ†• ํšจ์œจ์ ์ธ ํ•™์Šต๊ณผ ๊ธฐ๋ก์„ ์œ„ํ•ด TIL ์–‘์‹์„ ๋ฐ”๊ฟ”๋ณด์•˜๋‹ค!
( ์–‘์งˆ์˜ ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•˜์‹œ๋Š” ๊ฐœ๋ฐœ์ž๋ถ„๋“ค์„ ๋”ฐ๋ผ๊ฐ€๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์ €๊ฒƒ ์‹œ๋„ ์ค‘์ด๋‹ค. )

๊ธฐ์กด์— ๊ฐ•์˜๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ์“ฐ๊ฑฐ๋‚˜ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…, ๋ฆฌํŒฉํ† ๋ง ๋‚ด์šฉ์„ TIL์— ์ ์œผ๋‹ˆ ๋‹ค์‹œ ์ฐพ์•„ ์ฝ๊ธฐ ์–ด๋ ค์›Œ ํ•™์Šต๋‚ด์šฉ์ด๋‚˜ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์€ ๋”ฐ๋กœ ํฌ์ŠคํŒ…ํ•˜์—ฌ ๋งํฌํ•˜๊ณ  TIL์—๋Š” ๊ทธ ํฌ์ŠคํŒ… ๋‚ด์šฉ์„ ์š”์•ฝํ•˜์—ฌ ์ •๋ฆฌ ํ•  ์˜ˆ์ •์ด๋‹ค.

์ด ์–‘์‹๋„ ๋น„ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐ์ด ๋“ค๋ฉด ๋‹ค์‹œ ๋ฐ”๋€” ์ˆ˜ ์žˆ์ง€๋งŒ ์ ์ง„์ ์œผ๋กœ ๋ฐœ์ „ํ•ด๊ฐ€๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ž.

profile
์•ˆ๋…•ํ•˜์„ธ์š” :)

0๊ฐœ์˜ ๋Œ“๊ธ€