๐ŸŒ… ๋ฐ๋ชจ_3์ฃผ์ฐจ - boostcampwm-2022/web33-Mildo GitHub Wiki

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

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

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

  1. ๊ธฐ์ˆ  ์Šคํƒ ํšŒ์˜
  2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…
  3. ์‹ค์‹œ๊ฐ„ ๋„์‹œ ๋ฐ์ดํ„ฐ API ์—ฐ๊ฒฐ
  4. ๋„ค์ด๋ฒ„ ์ง€๋„ API ์—ฐ๊ฒฐ
  5. ๋ฐฐํฌ
  6. CI/CD ๊ตฌํ˜„ 1์ฐจ ์‹œ๋„

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

  • ์‚ฌ์šฉ์ž ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ง€๋„ UI ๋ณด์—ฌ์ฃผ๊ธฐ
  • ๋ชจ๋‹ฌ UI ๊ตฌํ˜„
    • 1๋‹จ๊ณ„ : ์œ„์น˜, ๋ฐ€์ง‘๋„, ๋ถ๋งˆํฌ, ๋ฐ€์ง‘์ธ๊ตฌ, ๋‚ด์ผ ๊ฐˆ๊บผ์•ผ ๋ฒ„ํŠผ
    • 2๋‹จ๊ณ„ : ์ตœ๊ทผ 24์‹œ๊ฐ„ ์ธ๊ตฌ ๋™ํ–ฅ, ๋‚ด์ผ ๊ฐˆ๊บผ์•ผ ์ˆœ์œ„
  • ํ•€ UI ๊ตฌํ˜„
    • ์ธ๊ตฌ ๋ฐ€๋„์— ๋”ฐ๋ผ ์ƒ‰์ด ๋‹ค๋ฅธ ํ•€ ๋ณด์—ฌ์ฃผ๊ธฐ
  • CI/CD ๊ตฌํ˜„ ์™„๋ฃŒ
  • Docker ํ•™์Šต

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

4.1. ํŽ˜์–ด ๊ฐœ๋ฐœ (์›”~์ˆ˜)

์ง€๋„ UI

image

  • ๋„ค์ด๋ฒ„ ์ง€๋„ API๋ฅผ ์ด์šฉํ•ด ๋ฉ”์ธ ํŽ˜์ด์ง€์— ์„œ์šธ ์ง€๋„ ์ถœ๋ ฅ

  • ์‚ฌ์šฉ์ž์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์„œ์šธ์‹œ์ผ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์˜ ์ง€๋„ ์ค‘์•™์— ์œ„์น˜

    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ API์ธ Geolocation์„ ์ด์šฉํ•˜๋Š” ๋ฆฌ์•กํŠธ Hooks์ธ useGeolocation๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ์œ„๋„/๊ฒฝ๋„ ์ •๋ณด ๊ฐ€์ ธ์˜ด

    • ๋„ค์ด๋ฒ„ ์ง€๋„ API์ธ Reverse Geocoding์„ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž์˜ ์œ„๋„/๊ฒฝ๋„๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ๊ฑฐ์ฃผ ์ง€์—ญ๋ช…์„ ํ™•์ธํ•˜์—ฌ ์„œ์šธ์‹œ์ธ์ง€ ํ™•์ธ

    • ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์„œ์šธ์‹œ๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ ์‹œ์ฒญ์—ญ์„ ์ง€๋„ ์ค‘์•™์— ์œ„์น˜

  • ๋กœ์ปฌ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ถˆ๊ฐ€, HTTPS๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ธก

๋กœ๋”ฉ ํ™”๋ฉด

image

  • ์ฒ˜์Œ ์•ฑ์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ํ˜„์žฌ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ดˆ๊ธฐ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ณผ์ •์ด ๋ฐœ์ƒํ•œ๋‹ค.

  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—(ํŠนํžˆ ๋А๋ฆฐ 3G์˜ ๊ฒฝ์šฐ์—๋Š” ๋”๋”์šฑ) ๋กœ๋”ฉ ํ™”๋ฉด์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ์„ ๋†’์ž„

์ƒ์„ธ ๋ชจ๋‹ฌ 1๋‹จ๊ณ„ & 2๋‹จ๊ณ„ UI

203495997-a893b68b-5af5-4dab-b285-5b2cf9bbf4ba

์ธ๊ตฌ ๋ฐ€๋„์— ๋”ฐ๋ฅธ ํ•€ ๊ธฐ๋Šฅ

  • ์ธ๊ตฌ์˜ ๋ฐ€์ง‘๋„์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ƒ‰๊น”์˜ ํ•€์„ ๋ณด์—ฌ์ฃผ๊ธฐ

    • ์—ฌ์œ (์ดˆ๋ก) / ๋ณดํ†ต(๋…ธ๋ž‘) / ๋ถ๋น”(์ฃผํ™ฉ) / ๋งค์šฐ ๋ถ๋น”(๋นจ๊ฐ•)

image image

  • ํ•€๋ผ๋ฆฌ ๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์„ ์ง€์—ญ์˜ ์œ„๋„์ˆœ์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ํ•€๋“ค์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฒน์น˜๋„๋ก ํ•จ

4.2. Git ์ž‘์—… (๊ธฐ์ˆ  ๊ณต์œ )

  • feature ๋ธŒ๋žœ์น˜๋ผ๋ฆฌ ์„œ๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด

    • Task๋ฅผ ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐ๋ถ„ํ•ด์„œ ์ž‘์—…ํ–ˆ๋˜ ์ƒํ™ฉ์ด์–ด์„œ ์ถฉ๋Œ์ด ์ ์—ˆ๋‹ค.

    • ๊ฒฐ๊ณผ : env ํŒŒ์ผ์ด github ์ €์žฅ์†Œ์— ์˜ฌ๋ผ๊ฐ€๋Š” ์‚ฌํƒœ๊ฐ€ ๋ฐœ์ƒ

    • ํ•ด๊ฒฐ : env ๋‚ด๋ถ€์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋ชจ๋‘ ์ˆ˜์ •, ๊ฐฑ์‹ 

    • ๊ด€๋ จ ์ง€์‹ ๋งํฌ

4.3. ๋ฐฐํฌ (๋ชฉ)

CI/CD 2์ฐจ ์‹œ๋„

์•„์ง ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ

  1. ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ nvm ๋ช…๋ น์–ด๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ

    • ์‹ค์ œ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์— ์ ‘์†ํ–ˆ์„ ๋•Œ๋Š” nvm ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, github Actions๋ฅผ ์ด์šฉํ•˜์—ฌ nvm ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ ์šฉํ–ˆ์„ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
    • err: bash: nvm: command not found
  2. MongoDB ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ ์šฉ

    image

    • runner ํ™˜๊ฒฝ์—์„œ๋Š” MONGODB_CONNECT_URI ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ž˜ ์ ์šฉ๋˜์—ˆ์ง€๋งŒ, ๋ฐฐํฌ ํ™˜๊ฒฝ์— MONGODB_CONNECT_URI ๋งŒ ๋ณต์‚ฌ๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ ๋ฐœ์ƒ

    • connect ์ฃผ์†Œ๋ฅผ ํ†ต์งธ๋กœ ๋ณต์‚ฌํ•ด์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋กœ ์ถ”์ธก

      mongodb+srv://{username}:{password}@{host}/{collectionName}?retryWrites=true&w=majority

    • username, password, host, collectionName์„ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ ์šฉํ•ด๋ณผ ์˜ˆ์ •

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

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

  • ์„œ์šธ์‹œ ์ธ๊ตฌ ๋ฐ€๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์„œ๋ฒ„ ๊ตฌ์ถ•
    • node-cron vs
  • ์ตœ๊ทผ 24์‹œ๊ฐ„ ์ธ๊ตฌ ๋ฐ€๋„ ๋ฐ์ดํ„ฐ ์บ์‹ฑ
    • Redis
  • ์ธ๊ตฌ ๋ฐ€๋„๋ณ„ ์ง€๋„ ํ•€์„ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ธฐ๋Šฅ

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

  • https ์ ์šฉํ•˜๊ธฐ