[DevCamp] ๐Ÿš€ ๋ฐฐํฌ ํ™˜๊ฒฝ๊ณผ ๋ฐฐํฌ ๋„๊ตฌ ์™„์ „ ์ •๋ณต

๋™๊ฑดยท2025๋…„ 6์›” 4์ผ

DevCamp

๋ชฉ๋ก ๋ณด๊ธฐ
79/85

๐Ÿš€ ๋ฐฐํฌ ํ™˜๊ฒฝ๊ณผ ๋ฐฐํฌ ๋„๊ตฌ ์™„์ „ ์ •๋ณต

์„œ๋น„์Šค ๊ฐœ๋ฐœ์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” ๋ฐฐํฌ(Deployment)์ด๋‹ค.
์•„๋ฌด๋ฆฌ ์ž˜ ๋งŒ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋„ ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋ฌด์šฉ์ง€๋ฌผ์ด๋‹ค.

์˜ค๋Š˜์€ ๋ฐฐํฌ ํ™˜๊ฒฝ์˜ ๊ฐœ๋…๊ณผ, ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฐํฌ ๋„๊ตฌ๋“ค์„ ์ •๋ฆฌํ•œ๋‹ค.


๐ŸŒ ๋ฐฐํฌ ํ™˜๊ฒฝ์ด๋ž€?

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋  ์‹ค์ œ ์„œ๋ฒ„ ํ˜น์€ ์„œ๋น„์Šค ํ™˜๊ฒฝ

1. ์ข…๋ฅ˜

  • ๊ฐœ๋ฐœ(Dev): ๊ฐœ๋ฐœ์ž ํ…Œ์ŠคํŠธ์šฉ, ๋น ๋ฅธ ๋ฐ˜์˜์ด ์ค‘์š”
  • ์Šคํ…Œ์ด์ง•(Staging): ์‹ค์ œ ์„œ๋น„์Šค์™€ ์œ ์‚ฌํ•œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ
  • ํ”„๋กœ๋•์…˜(Production): ์‹ค์ œ ์„œ๋น„์Šค๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ์šด์˜ ํ™˜๊ฒฝ

โš™๏ธ ๋ฐฐํฌ ์ „๋žต

์ „๋žต์„ค๋ช…
์ˆ˜๋™ ๋ฐฐํฌ๋ช…๋ น์–ด ํ˜น์€ Git ํ‘ธ์‹œ ํ›„ ์ง์ ‘ ๋ฐฐํฌ
CI/CD ์ž๋™ ๋ฐฐํฌ์ปค๋ฐ‹/PR ๋ฐœ์ƒ ์‹œ ์ž๋™ ๋ฐฐํฌ๋˜๋„๋ก ์„ค์ •
๋ธ”๋ฃจ-๊ทธ๋ฆฐ๋‘ ๊ฐœ์˜ ํ™˜๊ฒฝ์„ ๋ฒˆ๊ฐˆ์•„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ
์นด๋‚˜๋ฆฌ์ผ๋ถ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋จผ์ € ๋ฐฐํฌํ•˜๊ณ  ์ ์ง„์  ํ™•๋Œ€

๐Ÿ› ๏ธ ๋Œ€ํ‘œ์ ์ธ ๋ฐฐํฌ ๋„๊ตฌ๋“ค

1. Vercel / Netlify

  • ์ •์  ์‚ฌ์ดํŠธ ๋˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๋ฐฐํฌ์— ํŠนํ™”
  • GitHub์™€ ์—ฐ๋™๋˜์–ด ์ž๋™ ๋ฐฐํฌ ๊ฐ€๋Šฅ

2. GitHub Actions

  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์ž‘์„ฑ ๊ฐ€๋Šฅ (๋นŒ๋“œ/ํ…Œ์ŠคํŠธ/๋ฐฐํฌ)
  • ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฐ ์‹œํฌ๋ฆฟ ์„ค์ •์œผ๋กœ ์œ ์—ฐํ•จ

3. Docker + AWS / GCP

  • ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ๋กœ ์–ด๋””์„œ๋“  ๋™์ผํ•œ ํ™˜๊ฒฝ ์œ ์ง€ ๊ฐ€๋Šฅ
  • ECS, EKS, GKE ๋“ฑ ํด๋ผ์šฐ๋“œ ๋งค๋‹ˆ์ง€๋“œ ์„œ๋น„์Šค ํ™œ์šฉ ๊ฐ€๋Šฅ

๐Ÿ”„ GitHub Actions๋กœ ๋ฐฐํฌํ•˜๊ธฐ (์˜ˆ์‹œ)

name: Deploy to Vercel

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install dependencies
        run: npm install
      - name: Deploy to Vercel
        run: npx vercel --prod --token=${{ secrets.VERCEL_TOKEN }}

โœ… ๋ฐฐํฌ ์‹œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” .env ๋Œ€์‹  ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ฃผ์ž…๋˜๋„๋ก ๊ตฌ์„ฑ
  • ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ๋œ ์ปค๋ฐ‹๋งŒ ๋ฐฐํฌ๋˜๋„๋ก ์„ค์ •
  • ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ(Grafana, Sentry ๋“ฑ) ์—ฐ๋™ ๊ณ ๋ ค
  • ์žฅ์•  ๋Œ€์‘์„ ์œ„ํ•œ ๋กค๋ฐฑ ์ „๋žต ๋งˆ๋ จ

๐Ÿง  TIL

  • ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๋Š” ๋ณ„๊ฐœ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋ฐฐํฌ๋ฅผ ๊ณ ๋ คํ•œ ๊ฐœ๋ฐœ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ์˜ ๋ฐฐํฌ๋Š” ๋‹จ์ˆœ ํŒŒ์ผ ์—…๋กœ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ, ์ธํ”„๋ผ์™€ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์ˆ˜๋ฐ˜๋œ๋‹ค.
  • ์ž๋™ํ™”๋œ ๋ฐฐํฌ๋Š” ๋ฐ˜๋ณต ์ž‘์—…์„ ์ค„์ด๊ณ  ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ์ตœ๊ณ ์˜ ๋ฐฉ๋ฒ•์ด๋‹ค.
profile
๋ฐฐ๊ณ ํ”ˆ ๊ฐœ๋ฐœ์ž

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