Dev-ops

πŸš€ ν”„λ‘ νŠΈμ—”λ“œ 개발자λ₯Ό μœ„ν•œ CI/CD μ™„λ²½ κ°€μ΄λ“œ!

xeunnie 2025. 3. 14. 01:00
728x90
λ°˜μ‘ν˜•

πŸš€ ν”„λ‘ νŠΈμ—”λ“œ 개발자λ₯Ό μœ„ν•œ CI/CD μ™„λ²½ κ°€μ΄λ“œ!

 

CI/CD(Continuous Integration & Continuous Deployment)λŠ” μ†Œν”„νŠΈμ›¨μ–΄ 개발의 ν•„μˆ˜ μš”μ†Œκ°€ λ˜μ—ˆμ–΄μš”.

πŸ‘‰ μ½”λ“œ λ³€κ²½ 사항이 μžλ™ν™”λœ λ°©μ‹μœΌλ‘œ ν…ŒμŠ€νŠΈ 및 λ°°ν¬λ˜μ–΄ 개발 속도λ₯Ό 높이고, μ•ˆμ •μ„±μ„ 보μž₯ν•˜λŠ” 핡심 ν”„λ‘œμ„ΈμŠ€μ£ .

특히 ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμ—μ„œλ„ CI/CDλ₯Ό μ μš©ν•˜λ©΄ 배포가 ν•œκ²° μ‰¬μ›Œμ§€κ³ , νŒ€μ›Œν¬κ°€ λ”μš± μ›ν™œν•΄μ Έμš”!

 

μ˜€λŠ˜μ€ ν”„λ‘ νŠΈμ—”λ“œ κ΄€μ μ—μ„œ CI/CDλž€ 무엇인지, μ™œ μ€‘μš”ν•œμ§€, 그리고 μ–΄λ–€ 도ꡬ듀을 ν™œμš©ν•˜λ©΄ 쒋은지 μƒμ„Έν•˜κ²Œ μ•Œμ•„λ³Όκ²Œμš”! πŸ› οΈ

πŸ”Ή CI/CDλž€ 무엇인가?

 

1️⃣ CI(Continuous Integration, 지속적 톡합)λž€?

 

CIλŠ” μ½”λ“œλ₯Ό 자주, μ§€μ†μ μœΌλ‘œ ν†΅ν•©ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•΄μš”.

즉, κ°œλ°œμžλ“€μ΄ 각자의 λ‘œμ»¬μ—μ„œ μž‘μ—…ν•œ μ½”λ“œλ₯Ό GitHub 같은 μ €μž₯μ†Œμ— ν‘Έμ‹œν•  λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ λΉŒλ“œ, ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜λŠ” 방식이죠.

 

βœ”οΈ CI의 핡심 λͺ©ν‘œ:

βœ… μ½”λ“œ λ³€κ²½ 사항을 λΉ λ₯΄κ²Œ κ°μ§€ν•˜μ—¬ 버그λ₯Ό 쑰기에 발견

βœ… μžλ™ν™”λœ ν…ŒμŠ€νŠΈλ₯Ό 톡해 μ½”λ“œ ν’ˆμ§ˆμ„ μœ μ§€

βœ… 개발 ν”„λ‘œμ„ΈμŠ€λ₯Ό ν‘œμ€€ν™”ν•˜μ—¬ ν˜‘μ—…μ„ μ›ν™œν•˜κ²Œ λ§Œλ“€κΈ°

 

πŸ’‘ CIκ°€ μ—†λ˜ μ‹œμ ˆμ—λŠ”?

μ—¬λŸ¬ κ°œλ°œμžκ°€ 각자 λ‘œμ»¬μ—μ„œ μ½”λ“œλ₯Ό μž‘μ—…ν•˜λ‹€κ°€, ν•œ λ²ˆμ— 병합(Merge)ν•˜λ©΄ 좩돌이 μž¦μ•˜μ–΄μš”.

ν…ŒμŠ€νŠΈλ₯Ό κ°œλ°œμžκ°€ μˆ˜λ™μœΌλ‘œ λŒλ €μ•Ό ν•˜λ‹€ λ³΄λ‹ˆ, μ’…μ’… 였λ₯˜κ°€ λ°œκ²¬λ˜μ§€ μ•Šμ€ 채 λ°°ν¬λ˜κΈ°λ„ ν–ˆμ£ .

 

🎯 CIκ°€ 적용되면 이런 μž₯점이 μžˆμ–΄μš”!

πŸ”Ή μ½”λ“œκ°€ μ €μž₯μ†Œμ— ν‘Έμ‹œλ  λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ λΉŒλ“œμ™€ ν…ŒμŠ€νŠΈ μ‹€ν–‰!

πŸ”Ή 버그λ₯Ό 빨리 λ°œκ²¬ν•˜κ³ , κΈ°λŠ₯ 좔가도 μ•ˆμ „ν•˜κ²Œ μ§„ν–‰ κ°€λŠ₯!

πŸ”Ή ν˜‘μ—…μ΄ λ”μš± μ‰¬μ›Œμ§!

2️⃣ CD(Continuous Delivery & Continuous Deployment, 지속적 배포 & 지속적 배포)λž€?

 

CIκ°€ μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ ν…ŒμŠ€νŠΈν•˜κ³  λ³‘ν•©ν•˜λŠ” 것이라면,

CDλŠ” ν…ŒμŠ€νŠΈκ°€ μ™„λ£Œλœ μ½”λ“œλ₯Ό ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— μžλ™μœΌλ‘œ λ°°ν¬ν•˜λŠ” 과정을 μ˜λ―Έν•΄μš”.

 

βœ… Continuous Delivery(지속적 제곡):

μ½”λ“œλ₯Ό μžλ™μœΌλ‘œ λΉŒλ“œν•˜κ³  ν…ŒμŠ€νŠΈκΉŒμ§€ μ§„ν–‰ν•œ ν›„, λ°°ν¬λŠ” μˆ˜λ™μœΌλ‘œ μ§„ν–‰ν•˜λŠ” λ°©μ‹μ΄μ—μš”.

(즉, git push만으둜 배포가 μžλ™ν™”λ˜μ§„ μ•Šμ•„μš”!)

 

βœ… Continuous Deployment(지속적 배포):

CI/CD ν”„λ‘œμ„ΈμŠ€λ₯Ό μ™„μ „νžˆ μžλ™ν™”ν•˜μ—¬, μ½”λ“œ λ³€κ²½ 사항이 μžλ™μœΌλ‘œ λ°°ν¬κΉŒμ§€ μ™„λ£Œλ˜λŠ” λ°©μ‹μ΄μ—μš”.

πŸ‘‰ git pushν•˜λŠ” μˆœκ°„! ν…ŒμŠ€νŠΈ → λΉŒλ“œ → λ°°ν¬κΉŒμ§€ μžλ™μœΌλ‘œ 진행됨! πŸš€

 

🎯 CD의 μž₯점:

πŸ“Œ λΉ λ₯΄κ³  μ•ˆμ •μ μΈ 배포 κ°€λŠ₯

πŸ“Œ μˆ˜λ™ λ°°ν¬μ—μ„œ λ°œμƒν•˜λŠ” μ‹€μˆ˜ λ°©μ§€

πŸ“Œ 고객 ν”Όλ“œλ°±μ„ μ‹ μ†ν•˜κ²Œ 반영

 

πŸ’‘ CD 없이 λ°°ν¬ν•˜λ˜ μ‹œμ ˆμ—λŠ”?

κ°œλ°œμžκ°€ 직접 npm buildλ₯Ό μ‹€ν–‰ν•˜κ³ , 배포 μ„œλ²„μ— μ—…λ‘œλ“œν•΄μ•Ό ν–ˆμ–΄μš”.

ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ μ˜ˆμƒμΉ˜ λͺ»ν•œ 였λ₯˜κ°€ λ°œμƒν•˜λ©΄, κΈ΄κΈ‰ν•˜κ²Œ λ‘€λ°±ν•˜λŠ” 과정도 λ²ˆκ±°λ‘œμ› μ–΄μš”.

 

🎯 CDκ°€ 적용되면 이런 μž₯점이 μžˆμ–΄μš”!

πŸ”Ή ν•œ μ€„μ˜ μ½”λ“œλΌλ„ μ•ˆμ „ν•˜κ²Œ 배포 κ°€λŠ₯

πŸ”Ή μ‹€μˆ˜λ₯Ό 쀄이고 배포 속도λ₯Ό λ†’μž„!

πŸ”Ή μ„œλΉ„μŠ€μ˜ 신뒰성을 크게 ν–₯상

πŸ”Ή CI/CD λ„μž… μ „ 개발 방식 (전톡적 방식) vs. CI/CD 적용 ν›„

전톡적 개발 방식CI/CD 적용 ν›„

μ½”λ“œ 병합 κ°œλ°œμžλ“€μ΄ κ°œλ³„μ μœΌλ‘œ μž‘μ—… ν›„, ν•œ λ²ˆμ— 병합 (좩돌 μœ„ν—˜ 🚨) μž‘μ€ λ‹¨μœ„λ‘œ 자주 λ³‘ν•©ν•˜μ—¬ 좩돌 μ΅œμ†Œν™” βœ…
ν…ŒμŠ€νŠΈ μˆ˜λ™μœΌλ‘œ QA νŒ€μ΄ ν…ŒμŠ€νŠΈ μ§„ν–‰ μžλ™ν™”λœ ν…ŒμŠ€νŠΈ μ‹€ν–‰ (λΉŒλ“œ ν›„ μžλ™ ν…ŒμŠ€νŠΈ πŸ—οΈ)
배포 κ°œλ°œμžκ°€ 직접 μ„œλ²„μ— μ˜¬λ €μ•Ό 함 CI/CD νŒŒμ΄ν”„λΌμΈμ„ 톡해 μžλ™ 배포 πŸš€
버그 μˆ˜μ • ν”„λ‘œλ•μ…˜μ—μ„œ 발견된 버그λ₯Ό κΈ΄κΈ‰ λ‘€λ°± μžλ™ν™”λœ ν…ŒμŠ€νŠΈλ‘œ 배포 전에 버그 발견 κ°€λŠ₯ βœ…

πŸ” CI/CD 없이 κ°œλ°œν•˜λ©΄ 배포가 κ³ ν†΅μŠ€λŸ½κ³ ,

πŸ” CI/CDλ₯Ό λ„μž…ν•˜λ©΄ 배포가 μ•ˆμ •μ μ΄κ³  μ›ν™œν•˜κ²Œ 진행됨!

πŸ”Ή CI/CDλ₯Ό μœ„ν•œ 도ꡬ듀 비ꡐ πŸ› οΈ

 

ν”„λ‘ νŠΈμ—”λ“œμ—μ„œ 자주 μ“°μ΄λŠ” 도ꡬ듀

CI/CD λ„κ΅¬νŠΉμ§•ν”„λ‘ νŠΈμ—”λ“œ μΉœν™”μ ?

GitHub Actions GitHub μ €μž₯μ†Œμ™€ μ™„λ²½ 연동, YML 파일둜 μ„€μ • κ°€λŠ₯ βœ… κ°•λ ₯ν•œ GitHub 연동
Vercel Next.js와 같은 Jamstack 배포에 μ΅œμ ν™” βœ… 배포 속도 빠름
Netlify 정적 μ‚¬μ΄νŠΈ 배포 μ΅œμ ν™”, CDN 제곡 βœ… κ°„νŽΈν•œ 정적 배포
Travis CI GitHub와 연동 κ°€λŠ₯, μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈμ— 무료 제곡 βœ… GitHub 연동
CircleCI λΉ λ₯Έ 속도, 직관적인 μ„€μ • βœ… λ‹€μ–‘ν•œ ν™˜κ²½ 지원
Jenkins κ°•λ ₯ν•œ μ»€μŠ€ν„°λ§ˆμ΄μ§•, λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ— 적합 ❌ 섀정이 어렀움
GitLab CI/CD GitLabκ³Ό ν†΅ν•©λœ CI/CD μ„œλΉ„μŠ€ βœ… GitLab μ‚¬μš©μžμ—κ²Œ κ°•μΆ”!

πŸ“Œ CI/CD 도ꡬ 선택 κΈ°μ€€

 

1️⃣ ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈμ— λ§žλŠ” 도ꡬ μ„ νƒν•˜κΈ°

Next.js/Vercel, Gatsby/Netlify, Vue/Nuxt처럼 ν”„λ ˆμž„μ›Œν¬λ³„λ‘œ μ΅œμ ν™”λœ 도ꡬ가 μžˆμ–΄μš”.

Reactλ‚˜ Vue 같은 μ‹±κΈ€ νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(SPA)은 Vercel, Netlify와 ꢁ합이 μ’‹μ•„μš”.

 

2️⃣ μžλ™ 배포가 μ–Όλ§ˆλ‚˜ μ‰¬μš΄κ°€?

CI/CDλŠ” 배포 μžλ™ν™”λ₯Ό λͺ©ν‘œλ‘œ ν•˜λ―€λ‘œ, 섀정이 κ°„λ‹¨ν•˜κ³  κ΄€λ¦¬ν•˜κΈ° μ‰¬μš΄ 도ꡬλ₯Ό 선택해야 ν•΄μš”.

GitHub Actions, Vercel, NetlifyλŠ” 섀정이 μ‰¬μ›Œμ„œ ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžκ°€ μ„ ν˜Έν•˜λŠ” λ„κ΅¬μ˜ˆμš”.

 

3️⃣ λΉŒλ“œ 속도와 λΉ„μš© κ³ λ €ν•˜κΈ°

CI/CD λ„κ΅¬λ§ˆλ‹€ λΉŒλ“œ μ‹œκ°„κ³Ό λΉ„μš©μ΄ λ‹¬λΌμš”.

Vercelκ³Ό NetlifyλŠ” 무료 ν”Œλžœμ΄ μžˆμ§€λ§Œ, νŠΈλž˜ν”½μ΄ λ§Žμ•„μ§€λ©΄ μΆ”κ°€ λΉ„μš© λ°œμƒν•  수 μžˆμ–΄μš”.

Jenkins, CircleCI 같은 자체 ν˜ΈμŠ€νŒ… μ†”λ£¨μ…˜μ€ 섀정이 λ²ˆκ±°λ‘­μ§€λ§Œ, λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ— μ ν•©ν•΄μš”.

πŸ”Ή CI/CD μ‹€μ „ 적용 예제 (GitHub Actions + Vercel)

 

πŸ“Œ GitHub Actions을 ν™œμš©ν•˜μ—¬ μžλ™ λΉŒλ“œ & 배포 νŒŒμ΄ν”„λΌμΈ λ§Œλ“€κΈ°

name: Deploy Frontend

on:
  push:
    branches:
      - main  # main λΈŒλžœμΉ˜μ— ν‘Έμ‹œλ  λ•Œ μ‹€ν–‰

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - name: μ½”λ“œ 체크아웃
        uses: actions/checkout@v3

      - name: Node.js μ„€μ •
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: νŒ¨ν‚€μ§€ μ„€μΉ˜ & λΉŒλ“œ
        run: |
          npm install
          npm run build

      - name: Vercel 배포
        run: npx vercel --prod --token ${{ secrets.VERCEL_TOKEN }}

βœ… push: branches: main → main λΈŒλžœμΉ˜μ— λ³€κ²½ 사항이 생기면 μ‹€ν–‰

βœ… npm run build → ν”„λ‘œμ νŠΈ λΉŒλ“œ

βœ… npx vercel --prod → Vercel둜 배포

πŸ”Ή κ²°λ‘ : CI/CDλŠ” 개발자의 ν•„μˆ˜ 무기!

 

CI/CDλŠ” 더 이상 선택이 μ•„λ‹ˆλΌ ν•„μˆ˜μž…λ‹ˆλ‹€.

βœ… CI둜 μžλ™ ν…ŒμŠ€νŠΈλ₯Ό λŒλ €μ„œ μ½”λ“œ ν’ˆμ§ˆμ„ 보μž₯ν•˜κ³ 

βœ… CD둜 μ•ˆμ „ν•˜κ²Œ λ°°ν¬κΉŒμ§€ μžλ™ν™”ν•˜λ©΄

βœ… 개발 속도 UP! μ‹€μˆ˜ DOWN! πŸš€

 

πŸ’‘ ν”„λ‘ νŠΈμ—”λ“œ 개발자라면 GitHub Actions, Vercel, Netlify 같은 도ꡬλ₯Ό μ΅ν˜€λ³΄μ„Έμš”!

 

🌷 μ „μ„€μ˜ κ°œλ°œμžκ°€ λ˜μ–΄λ΄…μ‹œλ‹Ή! 🌷 πŸš€

728x90
λ°˜μ‘ν˜•