CI/CD κ°œλ… μ΄ν•΄ν•˜κΈ°

2025. 4. 15. 11:02Β·βš™οΈ 기타 개발 자료

πŸš€ CI: Continuous Integration

κΉƒν—ˆλΈŒλ₯Ό λͺ°λžλ˜ μ‹œμ ˆ,
νŒ€ ν”„λ‘œμ νŠΈλ₯Ό ν•˜λ©΄ "λ‚΄κ°€ A 뢀뢄을 ν• κ²Œ, λ„€κ°€ B 뢀뢄을 ν•΄!" ν•˜λ©°
μ†ŒμŠ€μ½”λ“œ νŒŒμΌμ„ μ£Όκ³ λ°›μ•„ μ™„μ„±ν–ˆλ˜ 적이 μžˆλ‹€.

μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈλΌ μΆ©λŒλ„ 거의 μ—†μ—ˆκ³ , μžˆμ–΄λ„ 금방 κ³ μ³€μ§€λ§Œ
μ§€κΈˆμ²˜λŸΌ 규λͺ¨κ°€ 큰 ν”„λ‘œμ νŠΈμ—μ„œ κ·Έλ ‡κ²Œ ν•΄μ•Ό ν•œλ‹€λ©΄ λˆˆμ•žμ΄ μΊ„μΊ„ν•˜λ‹€.

  • 이 μ½”λ“œ λˆ„κ°€ μž‘μ„±ν–ˆλ‚˜μš”?
  • ν…ŒμŠ€νŠΈν–ˆλ‚˜μš”? 제 ν™˜κ²½μ—μ„œλŠ” μ•ˆ λ˜λŠ”λ°μš”?

체계적인 μ½”λ“œ ν†΅ν•©μ˜ ν•„μš”μ„±μ„ μ‹€κ°ν•˜κ²Œ λ˜λŠ” μˆœκ°„μ΄λ‹€.

CIλŠ” Continuous Integration, 즉 지속적인 ν†΅ν•©μ΄λΌλŠ” 의미둜
μƒˆλ‘œμš΄ μ½”λ“œ λ³€κ²½ 사항이 μžλ™μœΌλ‘œ λΉŒλ“œλ˜κ³ , ν…ŒμŠ€νŠΈλ˜μ–΄ λ³‘ν•©λ˜λŠ” 과정을 λ§ν•œλ‹€.

λŒ€ν‘œμ μΈ CI λ„κ΅¬λ‘œ Jenkins, GitHub Actions 등이 μžˆλ‹€.

μžλ™ν™”λœ λΉŒλ“œ 및 ν…ŒμŠ€νŠΈ

CI μ„œλ²„ ν˜Ήμ€ νŒŒμ΄ν”„λΌμΈμ€ Git μ €μž₯μ†Œμ— λ³€κ²½ 사항이 pushλ˜κ±°λ‚˜
PR이 올라올 λ•Œλ§ˆλ‹€ μžλ™μœΌλ‘œ λΉŒλ“œν•˜κ³  λ‹¨μœ„ ν…ŒμŠ€νŠΈμ™€ 톡합 ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•œλ‹€.

μ΄λ•Œ λΉŒλ“œμ™€ ν…ŒμŠ€νŠΈ κ³Όμ •μ—μ„œ 였λ₯˜κ°€ λ°œμƒν•˜λ©΄ 즉각 μ•Œλ¦Όμ„ 보내
κ°œλ°œμžκ°€ 문제λ₯Ό λΉ λ₯΄κ²Œ νŒŒμ•…ν•  수 μžˆλ‹€.

πŸš€ CD: Continuous Delivery/Deployment

CI와 ν•¨κ»˜ 같이 λ¬Άμ΄λŠ”
CDλŠ” Continuous Delivery/Deployment 두 κ°€μ§€ 의미λ₯Ό κ°€μ§„λ‹€.

πŸš€ Continuous Delivery

지속적 제곡이라고 ν•œλ‹€.

 

Continuous DeliveryλŠ” CI λ‹¨κ³„μ—μ„œ κ²€μ¦λ˜μ–΄ 배포가 μ€€λΉ„λœ μ½”λ“œλ₯Ό λ ˆν¬μ§€ν† λ¦¬λ‘œ κ°€μ Έμ˜€λŠ” 것(제곡, delivery)을 μžλ™ν™”ν•œλ‹€.
배포 κ°€λŠ₯ν•œ μƒνƒœμ΄μ§€λ§Œ, μ‹€μ œλ‘œ 배포λ₯Ό μ§„ν–‰ν• μ§€λŠ” λ‹΄λ‹Ήμžμ˜ μŠΉμΈμ„ κ±°μΉœλ‹€.

πŸš€ Continuous Deployment

지속적 배포라고 ν•œλ‹€.

 

Delivery와 달리

CI λ‹¨κ³„μ—μ„œ ν…ŒμŠ€νŠΈκ°€ λͺ¨λ‘ ν†΅κ³Όν•˜λ©΄ μžλ™μœΌλ‘œ ν”„λ‘œλ•μ…˜ ν™˜κ²½μœΌλ‘œ λ°°ν¬λ˜λŠ” 과정이 λͺ¨λ‘ μžλ™ν™”λ˜μ–΄ μžˆλ‹€.

 

즉, λ‹΄λ‹Ήμžμ˜ 승인 없이도 μ½”λ“œκ°€ μ»€λ°‹λ˜κ³  ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•˜λ©΄
μžλ™μœΌλ‘œ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ— λ°°ν¬λœλ‹€.

배포 νŒŒμ΄ν”„λΌμΈ μ˜ˆμ‹œ

μ „ν˜•μ μΈ CD νŒŒμ΄ν”„λΌμΈ 단계이닀.

 

 

 

1. Checkout: Git μ €μž₯μ†Œμ—μ„œ μ½”λ“œ κ°€μ Έμ˜€κΈ°

  • κ°œλ°œμžκ°€ κΉƒν—ˆλΈŒμ— pushν•œ μ΅œμ‹  μ½”λ“œλ₯Ό CI/CD μ„œλ²„κ°€ λ°›μ•„μ˜¨λ‹€.
  • μ˜ˆμ‹œλ‘œ GitHub Actionsμ—μ„œλŠ” actions/checkout@v3 같은 μ•‘μ…˜μ„ μ‚¬μš©ν•œλ‹€κ³  ν•œλ‹€.

2. Build & Test

  • Java의 jarκ³Ό 같이 μ‹€ν–‰ κ°€λŠ₯ν•œ ν˜•νƒœλ‘œ λΉŒλ“œν•œλ‹€.
  • λ‹¨μœ„ ν…ŒμŠ€νŠΈμ™€ 톡합 ν…ŒμŠ€νŠΈ 등을 κ±°μΉœλ‹€.

3. Docker Build & Push: Docker 이미지 생성 ν›„ ECR μ—…λ‘œλ“œ

  • Dockerfile을 μ΄μš©ν•΄ Docker 이미지λ₯Ό λ§Œλ“€κ³  ECR에 μ—…λ‘œλ“œν•œλ‹€.

4. Deploy: ECS μ„œλΉ„μŠ€ μ—…λ°μ΄νŠΈ

  • μ—…λ‘œλ“œ 된 Docker μ΄λ―Έμ§€λŠ” 이 이미지λ₯Ό μ‹€μ œλ‘œ μ‹€ν–‰ν•  ECS둜 μ „λ‹¬λœλ‹€.
  • 이 λ‹¨κ³„μ—μ„œ μƒˆ 이미지λ₯Ό 기반으둜 μ„œλΉ„μŠ€κ°€ μ—…λ°μ΄νŠΈλœλ‹€.
    • 둀링 방식: κΈ°μ‘΄ μΈμŠ€ν„΄μŠ€μ—μ„œ μ‘°κΈˆμ”© κ΅μ²΄ν•΄λ‚˜κ°€λŠ” 방식
    • Blue/Green 방식: κΈ°μ‘΄ 버전(Blue)κ³Ό μƒˆ 버전(Green)을 λ™μ‹œμ— λ„μš°κ³ , νŠΈλž˜ν”½μ„ μ „ν™˜ν•˜λŠ” 방식

6. Post-deploy checks: 배포 ν›„ 검증 단계

  • 배포 ν›„ μ‹€μ œ μ„œλΉ„μŠ€κ°€ 정상 λ™μž‘ν•˜λŠ”μ§€ ν™•μΈν•œλ‹€.
    • ν—¬μŠ€ 체크, λͺ¨λ‹ˆν„°λ§, μ•Œλ¦Ό, 둜그 확인 λ“±

μ΄λ ‡κ²Œ λͺ¨λ“  과정이 μžλ™ν™”λ˜μ–΄ 있으면
κ°œλ°œμžλŠ” 였직 μ½”λ“œλ₯Ό 깃에 pushν•˜κΈ°λ§Œ ν•˜λ©΄ λœλ‹€!

 

μ‚¬λžŒμ΄ ꡳ이 μž‘μ—…ν•  ν•„μš” 없이 μ•ˆμ •μ μœΌλ‘œ λ°°ν¬λ˜λŠ” 것이 CD의 λͺ©μ μ΄λ‹€.

참고자료

  • JSCODE λ°•μž¬μ„±λ‹˜ CI/CD μž…λ¬Έ μ‹€μ „ κ°•μ˜
  • μ½”λ“œμž‡ μŠ€ν”„λ¦°νŠΈ κ°•μ˜
  • CI/CDλž€ 무엇인가 (Feat. DevOps μ—”μ§€λ‹ˆμ–΄)
  • CI/CD(지속적 톡합/지속적 배포)λž€?
λ°˜μ‘ν˜•

'βš™οΈ 기타 개발 자료' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

λ””λ²„κΉ…μ˜ μ€‘μš”μ„±  (0) 2025.05.14
[κΉƒν—ˆλΈŒ] Codecov μ μš©ν•˜μ—¬ PR에 ν…ŒμŠ€νŠΈ 컀버리 뱃지 달기  (1) 2025.04.25
μ›Ή API: SOAP API, SOAPκ³Ό REST의 차이  (1) 2025.03.03
μ›Ή μ„œλ²„(Web Server) vs WAS(Web Application Server) κ°œλ… 이해와 차이 비ꡐ feat. Tomcat  (0) 2025.02.17
ν”„λ ˆμž„μ›Œν¬ vs 라이브러리 κ°œλ…  (0) 2025.02.16
'βš™οΈ 기타 개발 자료' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • λ””λ²„κΉ…μ˜ μ€‘μš”μ„±
  • [κΉƒν—ˆλΈŒ] Codecov μ μš©ν•˜μ—¬ PR에 ν…ŒμŠ€νŠΈ 컀버리 뱃지 달기
  • μ›Ή API: SOAP API, SOAPκ³Ό REST의 차이
  • μ›Ή μ„œλ²„(Web Server) vs WAS(Web Application Server) κ°œλ… 이해와 차이 비ꡐ feat. Tomcat
μ†Œμ˜ πŸ€
μ†Œμ˜ πŸ€
Hello World ✨
  • μ†Œμ˜ πŸ€
    Soyoung's Dev Lab
    μ†Œμ˜ πŸ€
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기 (36) N
      • πŸ“’ κ²Œμ‹œνŒ (0)
      • πŸ“š 자료ꡬ쑰 & μ•Œκ³ λ¦¬μ¦˜ (1)
      • 🌿Spring (10) N
      • 😺 μ–Έμ–΄ (6) N
        • β˜•Java (6) N
      • πŸ“Š λ°μ΄ν„°λ² μ΄μŠ€ (3)
      • πŸ“€ 배포 (4)
      • πŸ”Ž 객체지ν–₯ν”„λ‘œκ·Έλž˜λ° (1)
      • βš™οΈ 기타 개발 자료 (9)
      • πŸ–₯️ ν”„λ‘œμ νŠΈ (0)
      • πŸ‘©‍πŸ’» ν™œλ™ & ν›„κΈ° (0)
      • 🍡 이야기 (2)
  • λΈ”λ‘œκ·Έ 메뉴

    • νƒœκ·Έ
  • 링크

    • github
    • velog
  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    자료ꡬ쑰
    Java
    μ½”λ”©ν…ŒμŠ€νŠΈ
    λ°μ΄ν„°λ² μ΄μŠ€
    μ•Œκ³ λ¦¬μ¦˜
    배포
    Spring Security
    μ„œλ²„
    GIT
    Spring
    개발
    μ½”λ“œμž‡ μŠ€ν”„λ¦°νŠΈ
    객체지ν–₯ν”„λ‘œκ·Έλž˜λ°
    μœ„ν΄λ¦¬ 페이퍼
    docker
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
μ†Œμ˜ πŸ€
CI/CD κ°œλ… μ΄ν•΄ν•˜κΈ°
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”