Skip to content

Latest commit

ย 

History

History
136 lines (100 loc) ยท 6.28 KB

tech.md

File metadata and controls

136 lines (100 loc) ยท 6.28 KB

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

์˜์กด์„ฑ ์ œํ•œ

  • api : ๋ชจ๋“  ๋ชจ๋“ˆ์„ ์˜์กด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ์šฐ๋ฐœ์ ์œผ๋กœ application์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ์ฝ”๋“œ๋ฅผ ์˜์กดํ•˜๋Š” ๊ฒƒ์€ ์ง€์–‘ํ•ฉ๋‹ˆ๋‹ค.
  • application : domain์—๊ฒŒ๋งŒ ์˜์กดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • domain : ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ์˜์กดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • infrastructure : application, domain์—๊ฒŒ๋งŒ ์˜์กดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ํ’ˆ์งˆ ์ œํ•œ

์ผ๊ด€์„ฑ ์žˆ๋Š” ์ฝ”๋“œ

  • ์ฝ”๋“œ ๋ฒ ์ด์Šค ๋ฐ˜์˜ ์ „์— import ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ๋ฒ ์ด์Šค ๋ฐ˜์˜ ์ „์— ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ, ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ์ ˆ๋Œ€ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ๋ผ์ธ ์ปค๋ฒ„๋ฆฌ์ง€ ์ œํ•œ์€ 70% ์ด์ง€๋งŒ, 90% ์ด์ƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ค‘์š”ํ•˜์ง€ ์•Š์€ hotfix๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์œ ํ˜•์˜ ์ฝ”๋“œ ๋ฐ˜์˜์€ PR์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  develop ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ๋˜๋Š” PR์€ ํ˜‘์—…์ž๊ฐ„์— ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ๋งŒ์•ฝ, ์‹œ๊ฐ„์ ์ธ ์ œ์•ฝ์œผ๋กœ ์ธํ•ด์„œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” PR์— run: gpt code review ๋ผ๋ฒจ์„ ๋ถ™์ด๊ณ  ChatGPT์—๊ฒŒ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๋ฆฐํŠธ ๋„๊ตฌ

  • ๋ฆฐํŠธ์™€ ์ธํ…”๋ฆฌ์ œ์ด ์ฝ”๋“œ ์ž๋™ ์ •๋ ฌ ์„ค์ •์„ ํ˜‘์—…์ž๊ฐ„์— ๋™์ผํ•˜๊ฒŒ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • git commit ์ด์ „์— ๋ฆฐํŠธ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • commit ์ด์ „์— ์ž๋™์œผ๋กœ ์Šคํƒ€์ผ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ Hook์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
    • ./gradlew addKtlintCheckGitPreCommitHook
  • ๋ฆฐํŠธ๋กœ ์ธํ•ด ๋นŒ๋“œ๊ฐ€ ์•ˆ๋  ๊ฒฝ์šฐ์— ๋นŒ๋“œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋“ค์–ด๊ฐ€ ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•œ ๋‹ค์Œ, ./gradlew ktlintCheck ๋ฅผ ์ˆ˜ํ–‰ํ•ด ๋ฆฐํŠธ ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ๋ฅผ ์ตœ์‹ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • ๋งŒ์•ฝ, ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด, ./gradlew ktlintFormat ์„ ์ˆ˜ํ–‰ํ•ด ์ฝ”๋“œ๋ฅผ ์ž๋™ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜‘์—… ๋ฐฉ๋ฒ•

์ด์Šˆ ๋“ฑ๋ก

์ƒˆ๋กœ์šด ์ž‘์—…์„ ํ•˜๊ธฐ ์ด์ „์— ๊นƒํ—™ ์ด์Šˆ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

์ด์Šˆ ๋ผ๋ฒจ

์ด์Šˆ์— ๋“ฑ๋ก ๊ฐ€๋Šฅํ•œ ๋ผ๋ฒจ์˜ ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. problem์€ problem ์ด์Šˆ ํ…œํ”Œ๋ฆฟ์„, ๋‚˜๋จธ์ง€๋Š” task ์ด์Šˆ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • new : ์‹ ๊ทœ ๊ฐœ๋ฐœ
  • enhancement : ๋ฆฌํŒฉํ„ฐ๋ง๊ณผ ์ตœ์ ํ™”๋ฅผ ๋น„๋กฏํ•œ ๊ฐœ์„  ์ž‘์—…
  • chore : ์„ค์ •์„ ๋น„๋กฏํ•œ ๋ถ€์ˆ˜์ ์ธ ์ž‘์—…
  • problem : ๋ฌธ์ œ ๋ฐœ์ƒ
  • documentation : ๋ฌธ์„œํ™”

์ด์Šˆ ๋„ค์ด๋ฐ

  • ์ด์Šˆ์˜ ์ด๋ฆ„ ํ˜•์‹์€ [type] title ์ž…๋‹ˆ๋‹ค.

  • ์ด์Šˆ์˜ ์ด๋ฆ„ ํ˜•์‹ ํƒ€์ž…์€ PR์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ œ๋ชฉ์˜ ํƒ€์ž…๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, PR ์ œ๋ชฉ ํƒ€์ž…์—๋Š” ๋ฐฐํฌ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

    • ๊ธฐ๋Šฅ ๊ตฌํ˜„ : new
    • ๊ฐœ์„  : enhancement
    • ์„ค์ • : chore
    • ๋ฌธ์„œ : documenation
    • ๋ฌธ์ œ : problem

์‹ ๊ทœ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ

ํ˜„์žฌ ๊ฐœ์ธ ํ™˜๊ฒฝ์— ์žˆ๋Š” ๋ธŒ๋žœ์น˜๊ฐ€ ์ €์žฅ์†Œ์— ์žˆ๋Š” ์ตœ์‹  ์ฝ”๋“œ์ธ์ง€ ํ™•์ธํ•˜๊ณ , develop ๋ธŒ๋žœ์น˜์—์„œ ์‹ ๊ทœ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ธŒ๋žœ์น˜ ๋„ค์ด๋ฐ

  • ๋ธŒ๋žœ์น˜์˜ ์ด๋ฆ„ ํ˜•์‹์€ type/์ด์Šˆ ๋ฒˆํ˜ธ ์ž…๋‹ˆ๋‹ค.

  • ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์˜ ํƒ€์ž…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. (์•ต๊ทค๋Ÿฌ JS ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜์˜ ํƒ€์ž…์„ ๋”ฐ๋ฆ„)

    • feat : new
    • refactor : enhancement
    • chore : chore
    • fix : problem
    • docs : documentation
    • ๊ธฐํƒ€ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

๊ฐœ๋ฐœ ์ค‘ ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

๊ฐœ๋ฐœ ์‹œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋Š” ์•ต๊ทค๋Ÿฌ JS ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ฅด๋˜, type + subject๊นŒ์ง€๋งŒ ์ž‘์„ฑํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋„ค์ด๋ฐ

  • ๊ฐœ๋ฐœ์ด ๋๋‚˜๋ฉด develop ๋ธŒ๋žœ์น˜๋กœ PR์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ์ด๋ฆ„ ํ˜•์‹์€ ์ด์Šˆ ํ˜•์‹๊ณผ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  • ์ฐจ์ด์ ์€ PR ๋’ค์— () ๋‚ด๋ถ€์— ์—ฐ๊ด€ ์ด์Šˆ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ : [๋ฌธ์„œ] ๊ฐ€์ด๋“œ ๋ฌธ์„œ ์ž‘์„ฑ(issue#58)
  • ๊ด€๋ จ ์ด์Šˆ๊ฐ€ ํ•œ ๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๊ตฌ๋ถ„์ž๋ฅผ ์ฝค๋งˆ(,)๋ฅผ ์ด์šฉํ•ด ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
  • (์ค‘์š”) main ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” [๋ฐฐํฌ]๋ฅผ ์ ‘๋‘์–ด๋กœ ์‚ฌ์šฉํ•˜๊ณ , deployment ํ˜น์€ no-deployment ๋ผ๋ฒจ์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
  • (์ค‘์š”) main ๋ธŒ๋žœ์น˜์— ๋ฐ˜์˜๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” () ๋‚ด๋ถ€์— ์—ฐ๊ด€ PR์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    • ์˜ˆ์‹œ :
      • [๋ฐฐํฌ] ๋ฉ”์ธ ๋ธŒ๋žœ์น˜ ๋ฐ˜์˜(PR#23,PR#28) : ๋ฒ„์ „์ด ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
      • [๋ฐฐํฌ] v0.0.1(PR#12,PR#98) : ๋ฒ„์ „์ด ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ๋ผ๋ฒจ๋ง

  • ํ˜„์žฌ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์˜ ๋ผ๋ฒจ์„ ์ด์šฉํ•ด์„œ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” github actions ์ž‘์—…์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
    • run: ci : ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ถ„์„, ๋ฆฐํŠธ, ์ •์  ์ฝ”๋“œ ๋ถ„์„ ์‹คํ–‰
    • run: gradle test : ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ถ„์„ ์‹คํ–‰
    • run: gpt code review : ChatGPT ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹คํ–‰
    • no-deployment : ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ(docker hub)์— ์‹ ๊ทœ ์ด๋ฏธ์ง€ ๋ฆด๋ฆฌ์ฆˆํ•˜์ง€ ์•Š์Œ

ํ…Œ์ŠคํŠธ ์ „์šฉ

  • [ํ…Œ์ŠคํŠธ] ์ ‘๋‘์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ignore ๋ผ๋ฒจ์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ „์šฉ PR์€ ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฉ”์ธ ๋ธŒ๋žœ์น˜ ๋ฐ˜์˜ ์ดํ›„

  • ๊ฐœ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋จธ์ง€ ์ปค๋ฐ‹์„ ํฌํ•จํ•œ ์ตœ์‹  main ๋ธŒ๋žœ์น˜์˜ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ ค๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค๊ณ , ํƒœ๊ทธ๋ฅผ ์ €์žฅ์†Œ์— push ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ํƒœ๊ทธ๋กœ ์ƒˆ๋กœ์šด ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

โฌ† ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๊ธฐ