๐Ÿ’ด ๋ฐ๋ชจ_2์ฃผ์ฐจ - boostcampwm-2022/web33-Mildo GitHub Wiki

1. ํ”„๋กœ์ ํŠธ ๋ช… : Mildo(๋ฐ€๋„)

  • ๋ชจ๋ฐ”์ผ ์›น ํ™˜๊ฒฝ์—์„œ ์„œ์šธ์‹œ ์‹ค์‹œ๊ฐ„ ์ธ๊ตฌ ๋ฐ€๋„ ์ •๋ณด๋ฅผ ์ œ๊ณต

2. ์ง€๋‚œ ์ฃผ ์ง„ํ–‰ ๋‚ด์šฉ

  • ์•„์ด๋””์–ด ์„ ์ • ๋ฐ ๊ตฌ์ฒดํ™”
    • ํŒ€์› ๋ชจ๋‘๊ฐ€ ์• ์ •์„ ๊ฐ€์ง€๊ณ  ์ง€์†์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์‹ถ์€ ์•„์ด๋””์–ด๋Š”?
    • ๋ถ€์ŠคํŠธ์บ ํ”„์—์„œ ๋ฐฐ์šด ๊ธฐ์ˆ ์„ ๋ณต์Šตํ•˜๊ณ  ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์•„์ด๋””์–ด๋Š”?
    • ์—ฌ๋Ÿฌ ํ›„๋ณด ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ์šฐ๋ฆฌ ํŒ€์›๋“ค์—๊ฒŒ ๋„์›€์ด ๋ ์ง€ ์˜๋…ผํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ์‹œ๊ฐ„ ํˆฌ์ž
  • ํ”„๋กœ์ ํŠธ UI ๊ตฌ์„ฑ
    • figma๋กœ ํ”„๋กœ์ ํŠธ UI๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ์‹ค์ œ ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ์ง€ ๊ณ ๋ฏผ
    • ๊ตฌํ˜„ ๋‹จ๊ณ„์—์„œ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด UI ์ž‘์„ฑ ์‹œ ์Šคํƒ€์ผ์„ ์ตœ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์œผ๋กœ ๊ฒฐ์ •
  • ๊ทธ๋ž˜์„œ ์•„์‰ฝ๊ฒŒ๋„ ๊ธฐ์ˆ  ์Šคํƒ ๊ฒฐ์ • ๋ฐ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋“ฑ์€ 2์ฃผ์ฐจ์— ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •!

3. ์ด๋ฒˆ ์ฃผ ๋ชฉํ‘œ

  • ๊ธฐ์ˆ  ์Šคํƒ ๊ฒฐ์ •
  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •
  • ์ด์Šˆ ์ž‘์„ฑ ๋ฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์‹œ์ž‘
  • ๋ฐฐํฌ ๋ฐ CI/CD ๊ตฌํ˜„

3. ์ด๋ฒˆ ์ฃผ ์ง„ํ–‰ ๋‚ด์šฉ

3.1. ๊ธฐ์ˆ  ์Šคํƒ

image

  • ๊ธฐ์ˆ  ์Šคํƒ ํšŒ์˜๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„์— ํ•„์š”ํ•œ ๊ธฐ์ˆ  ์„ ํƒ
    • React, jotai, styled-component, mongoDB, express ๋“ฑ
  • ํ•ด๋‹น ๊ธฐ์ˆ ์„ โ€˜์™œโ€™ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋งŽ์€ ๊ณ ๋ฏผ๊ณผ ํ† ๋ก ์„ ํ†ตํ•ด ๊ฒฐ์ •
    • ex) koa โ†’ express
      • ์ดˆ๊ธฐ ์›นํ”„๋ ˆ์ž„์›Œํฌ : koa
      • koa๋ฅผ ์„ ํƒํ•œ ์ด์œ 
        1. express์™€ ๋น„์Šทํ•œ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ๋‚ฎ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ
        2. express๋ณด๋‹ค ๊ฐ€๋ฒผ์›€
      • koa์˜ ์‹ค์ฒด
        1. ๊ฐ€๋ณ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ๋” ๋งŽ์ด ์„ค์น˜ํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผ ํ•จ โ†’ ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•ด์•ผ ํ–ˆ์Œ
        2. koa์˜ ๋ณด์ผ๋Ÿฌ ํ”Œ๋ ˆ์ดํŠธ๋“ค์ด ์Šคํ”„๋ง ๋˜๋Š” nestjs์™€ ๋น„์Šทํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ƒ๊ฐ๋ณด๋‹ค ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ๋†’์•„๋ณด์˜€์Œ
    • ์ตœ์ข… ๊ฒฐ์ • : express
      • ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•์„ ๋ฐฐ์šฐ๊ธฐ๋ณด๋‹ค๋Š” ๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ express๋ฅผ ๋” ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์„ ์„ ํƒ

3.2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…

  • ํŒ€์› ์ „์› ๊ฐ™์ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  1. ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๊ฒฐ์ •
  2. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(๋ชจ๋“ˆ) ์„ค์น˜
    • ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ yarn ์„ ํƒ
    • VS code Live Share๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•จ๊ป˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ์ง„ํ–‰
  3. eslint, prettier, tsconfig ์„ค์ •
    • eslint-config-naver ์‚ฌ์šฉ

3.3. ํŽ˜์–ด ๊ฒฐ์ • & ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ์กฐ๋ฅผ 2๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง„ํ–‰
  • ๊ฐ ํŽ˜์–ด๋งˆ๋‹ค ๊ธฐ๋Šฅ์„ ๋ถ„๋ฅ˜ํ•˜๊ณ , ํ•ด๋‹นํ•˜๋Š” ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐœ๋ฐœ ์‹œ์ž‘
    • ํ•œ๋นˆ/์ƒ์ค€ โ†’ ๋„ค์ด๋ฒ„ ์ง€๋„ API๋ฅผ ํ™œ์šฉํ•œ ์ง€๋„ ์ปดํฌ๋„ŒํŠธ ์ƒ์„ฑ
    • ํ˜„์ •/์œค์šฐ โ†’ ์„œ์šธ์‹œ ์‹ค์‹œ๊ฐ„ ๋„์‹œ ๋ฐ์ดํ„ฐ API ํ™œ์šฉ์„ ์œ„ํ•œ ๋ฐฑ์—”๋“œ ์ž‘์—…
  • ์ด๋ฒˆ ์ฃผ์—๋Š” ์‹œ๊ฐ„ ๋ฌธ์ œ๋กœ ๊ธฐ๋Šฅ ๊ตฌํ˜„์€ Day8 ์˜คํ›„์—๋งŒ ์ง„ํ–‰

3.4. ๋ฐฐํฌ

  • ๋ฐฐํฌ ๋ชฉํ‘œ
    • ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด 6์ฃผ๋กœ ์งง์•„ ๊ณ„ํšํ•œ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์™„์„ฑํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Œ
    • ์™„์„ฑ๋„ ์žˆ๋Š” ์„œ๋น„์Šค ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ํ•„์ˆ˜์ ์ธ ๊ธฐ๋Šฅ์„ ์šฐ์„  ๊ตฌํ˜„ํ•˜๊ณ  ๋งค์ฃผ ๋ฐฐํฌ
      • ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์ค‘์ด๋”๋ผ๋„ ์ค‘๋‹จํ•˜๊ณ  ๋ฐฐํฌ๋ฅผ ์šฐ์„ ์œผ๋กœ ์ˆ˜ํ–‰
  • ์ด๋ฒˆ ์ฃผ ๋ฐฐํฌ ๋‚ด์šฉ
    • nCloud ์ธ์Šคํ„ด์Šค ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•˜๊ณ  client์™€ server ๋ฐฐํฌ
    • client๋Š” nginx๋กœ ๋ฐฐํฌ, server๋Š” pm2๋กœ ๋ฐฐํฌ
  • CD/CD ๊ตฌํ˜„
    • ํŒ€์› ๋ชจ๋‘ CD/CD์™€ ๋ฐฐํฌ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์•„ github action, nginx ๋“ฑ ํ•™์Šต
    • ์ด๋ฒˆ ์ฃผ CD/CD๋ฅผ ์œ„ํ•œ ํ•™์Šต๊ณผ ํ‹€ ์žก๊ธฐ๋ฅผ ์™„๋ฃŒํ–ˆ๊ณ , ๋‹ค์Œ ์ฃผ ์™„์„ฑ ์˜ˆ์ •
  • ๊ตฌํ˜„ ๊ฒฐ๊ณผ๋ฌผ ์‚ฌ์ง„
    • build๋œ client ํŒŒ์ผ์„ 80๋ฒˆ ํฌํŠธ์—์„œ ๊ตฌ๋™ ์ค‘์ธ ๋ชจ์Šต

      ์บก์ฒ˜2 PNG

    • ์„œ์šธ์‹œ ์‹ค์‹œ๊ฐ„ ๋„์‹œ ๋ฐ์ดํ„ฐ api๋ฅผ ๊ฐ€์ ธ์˜จ ๋ชจ์Šต

      ์บก์ฒ˜ PNG

4. ์•ž์œผ๋กœ ํ•  ์ผ

4.1. ๊ฐœ๋ฐœ ์ผ์ •(์›”~์ˆ˜)

image

  • ์ง€๋„ API ๋…ธ์ถœ
  • ์„œ์šธ ์‹ค์‹œ๊ฐ„ ๋„์‹œ ๋ฐ์ดํ„ฐ API์—์„œ ๊ฐ€์ ธ์˜จ ์ธ๊ตฌ ๋ฐ€๋„ ์ •๋ณด๋ฅผ ์ง€๋„์— ํ•€์œผ๋กœ ํ‘œ์‹œ
  • ํ•€์„ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธ ๋ชจ๋‹ฌ์ฐฝ ๋…ธ์ถœ
  • ๊ฒ€์ƒ‰, ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ, ํ•„ํ„ฐ๋ง UI ์ถœ๋ ฅ ํ›„ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์˜ˆ์ •

4.2. ๊ฐœ๋ฐœ ์ผ์ •(๋ชฉ)

  • CI/CD ํ•™์Šต ๋ฐ ๊ตฌํ˜„
  • Docker ํ•™์Šต ๋ฐ ๊ตฌํ˜„