second - HJ-Rich/2022-MyRSS GitHub Wiki


โœ… 2์ฐจ ๋ฐ๋ชจ ์š”๊ตฌ์‚ฌํ•ญ

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

release ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ๋žตํ•œ Git Flow๋ฅผ ์„ ํƒ

  • Git Flow, Github Flow ๋“ฑ์˜ ์„ ํƒ์ง€ ์ค‘์— Git Flow๋ฅผ ์„ ํƒ
  • ๋‹ค๋งŒ release ๋ธŒ๋žœ์น˜์™€ ์ด๋ฅผ ์ด์šฉํ•œ QA ๊ณผ์ •์€ develop ๋ธŒ๋žœ์น˜์—์„œ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ์ƒ๋žต
    • Github Flow ๋“ฑ์˜ ๋‹จ์ผ ๋ธŒ๋žœ์น˜๋งŒ ์šด์˜ํ•˜๊ธฐ์—๋Š” ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ์ตœ๋Œ€ํ•œ ์œ ์‚ฌํ•œ ํ™˜๊ฒฝ์—์„œ์˜ ํ…Œ์ŠคํŠธ ๊ณผ์ •์„ ๋ˆ„๋ฝํ•˜๊ธฐ ์–ด๋ ต๋‹ค๊ณ  ํŒ๋‹จ.
    • ๋ณ„๋„์˜ QAํŒ€์ด ์กด์žฌํ•˜์ง€ ์•Š๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ด์ œ ๊ฐœ๋ฐœ ์‹œ์ž‘ ๋‹จ๊ณ„๋ผ๋ฉด, Develop ๋ธŒ๋žœ์น˜์—์„œ ํ…Œ์ŠคํŠธ ํ›„ ์šด์˜ ๋ฐฐํฌํ•ด๋„ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํŒ๋‹จ.
  • ์ด์Šˆ ์ƒ์„ฑ -> develop ๋ธŒ๋žœ์น˜์—์„œ feature/๊ฐœ๋ฐœ๋‚ด์šฉ ๋ธŒ๋žœ์น˜ ํŒŒ์ƒ -> develop์œผ๋กœ PR & ๋จธ์ง€ -> main์— develop PR & ๋จธ์ง€ ํ”„๋กœ์„ธ์Šค๋กœ ์ง„ํ–‰.
    • MVP 1์ฐจ ๋ฐฐํฌ ์ „๊นŒ์ง€๋Š” develop ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ์ž‘์—…
  • ๐Ÿฅ„ Git Flow ํ•œ ์Šคํ‘ผ
  • Git Flow ๊ฐ€ CI/CD ์™€ ์–ด์šธ๋ฆฌ์ง€ ์•Š๋Š” ์ด์œ  by David Farley

API ์„ค๊ณ„ ๊ณต์œ 

/api ๋ฅผ prefix๋กœ ๊ฐ–๋Š” Restful API ์„ค๊ณ„๋ฅผ ์ถ”๊ตฌ

  • ๋ชจ๋“  api๋Š” /api/** ํ˜•์‹์œผ๋กœ /api๋ฅผ prefix๋กœ ๊ฐ€์ง€๋„๋ก ์„ค๊ณ„
    • Web Server์—์„œ ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ๋ฅผ ๋ถ„๊ธฐํ•˜๋Š”๋ฐ location์ด /api ์ผ ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ๋กœ ๋ถ„๊ธฐํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
    • ํ”„๋ก ํŠธ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ Same-Origin์— ์กด์žฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฐ ํ•ต์‹ฌ์ ์ธ ์—ญํ• 
  • Restful API ๋ฅผ ๊ฐ€๊ธ‰์  ์ค€์ˆ˜ํ•˜์—ฌ ์ง๊ด€์ ์ด๋„๋ก ์„ค๊ณ„
    • ์กฐํšŒ GET, ์ƒ์„ฑ POST, ์ˆ˜์ • PATCH, ์‚ญ์ œ DELETE ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ
      • POST ๋Š” GET, PUT, DELETE ์— ํ™•์‹คํžˆ ์†ํ•˜์ง€ ์•Š๋Š” ์š”์ฒญ์—๋„ ์‚ฌ์šฉํ•จ
      • PUT ์€ ํ•ด๋‹น ์ž์›์ด ์—†์œผ๋ฉด ์ƒ์„ฑ ๋ฐ 201์‘๋‹ต, ์žˆ์œผ๋ฉด ๋Œ€์ฒด ๋ฐ 200์‘๋‹ตํ•˜๋Š” ๊ฒƒ์ด ๊ทœ์•ฝ. ๋”ฐ๋ผ์„œ ์ˆ˜์ •์€ PATCH ์„ ํƒ
  • ์˜ˆ์‹œ ์—”๋“œํฌ์ธํŠธ๋“ค
    • GET /api/feeds?page={page}&size={size} : ์ „์ฒด ํ”ผ๋“œ ์กฐํšŒ ๋ฐ ํŽ˜์ด์ง•
    • POST /api/rss : JSON ํ˜•ํƒœ์˜ body ๊ฐ’์„ ์ด์šฉํ•ด RSS ์ •๋ณด ๋“ฑ๋ก
    • DELETE /api/rss/{rssId} : PathVariable๋กœ ์ „๋‹ฌ๋œ RSS ์‹๋ณ„์ž๋ฅผ ํ†ตํ•ด RSS ์ •๋ณด ์‚ญ์ œ

๊ฐœ๋ฐœ ์„œ๋ฒ„์— ๋ฐฐํฌ ํ›„ ๋ฐ๋ชจ

๊ฐœ๋ฐœ ์„œ๋ฒ„์™€ ์šด์˜ ์„œ๋ฒ„์˜ ๋ถ„๋ฆฌ

  • ๊ฐœ๋ฐœ, ์šด์˜ ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•จ
  • ๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” develop ๋ธŒ๋žœ์น˜, ์šด์˜ ์„œ๋ฒ„๋Š” main ๋ธŒ๋žœ์น˜ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐํฌ๋จ
  • ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ ์„œ๋ฒ„์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์šด์˜ ํ™˜๊ฒฝ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ
  • ๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” ์ ๊ทน์ ์œผ๋กœ ๋ฐฐํฌ ๋ฐ ๋กค๋ฐฑ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ์— ๋ถ€๋‹ด์ด ์—†์–ด์„œ ์„  ์ ์šฉ ๋ฐ ํ…Œ์ŠคํŠธ ํ›„ ์ด์Šˆ๊ฐ€ ์—†๋‹ค๋ฉด main์œผ๋กœ ๋จธ์ง€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ

์‰˜ ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” CI ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•œ ๋ฐฐํฌ ์ž๋™ํ™”

Github Webhook -> Jenkins Multibranch-pipeline -> ์„œ๋ฒ„ ๋ฐฐํฌ

  • Github -> Jenkins -> ์„œ๋ฒ„ ๋กœ ์ž๋™ ๋ฐฐํฌ๋˜๋„๋ก ๊ตฌ์„ฑ
  • Github์—์„œ Jenkins๋กœ ์—ฐ๊ฒฐ์€ Github์˜ Webhook ๊ธฐ๋Šฅ์„ ์ด์šฉ
  • Jenkins์—์„œ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋‚ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•ด์„œ frontend/** backend/** ๊ฐ ๊ฒฝ๋กœ ์ดํ•˜ ๋ณ€๊ฒฝ์ด ์žˆ์„ ๊ฒฝ์šฐ์—๋งŒ ํ”„๋ก ํŠธ, ๋ฐฑ์—”๋“œ๋ฅผ ๊ฐ๊ฐ ์žฌ๋ฐฐํฌ
    • ๋˜ํ•œ Jenkins์—์„œ๋Š” develop, main ๋ธŒ๋žœ์น˜๋ฅผ ์‹๋ณ„ํ•˜์—ฌ develop์ผ ๊ฒฝ์šฐ ๊ฐœ๋ฐœํ™˜๊ฒฝ์œผ๋กœ, main์ผ ๊ฒฝ์šฐ ์šด์˜ํ™˜๊ฒฝ์œผ๋กœ ๋ฐฐํฌ
  • Jenkins๋Š” ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฅผ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•œ ๋’ค, ์„œ๋ฒ„์— ์žˆ๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Slack์œผ๋กœ ์•Œ๋ฆผ์„ ๋ณด๋ƒ„์œผ๋กœ์จ ๋ณธ์ธ์˜ Job์„ ์ข…๋ฃŒ
  • ์„œ๋ฒ„์˜ ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ์กด์— ๋ฐฐํฌ๋˜์–ด ์žˆ๋˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•œ ๋’ค, ์ƒˆ๋กœ์šด ๋นŒ๋“œ ํŒŒ์ผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ํ•จ์œผ๋กœ์จ ์ตœ์ข… ๋ฐฐํฌ ์ฒ˜๋ฆฌ
  • Jenkins, Multibranch-pipeline์„ ์ด์šฉํ•œ CD

ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ ์ „์ฒด ๋ณด๊ธฐ



โš ๏ธ **GitHub.com Fallback** โš ๏ธ