드림코딩 - CI/CD 5분 개념 정리 (현업에서 쓰는 개발 프로세스)

Kkd·2024년 12월 16일

코딩 영상 후기

목록 보기
31/34

movie

CI/CD란?

  • CI/CD (Continuous Integration / Continuous Delivery or Deployment)는 소프트웨어 개발부터 배포까지의 모든 단계를 자동화하여 효율적이고 빠르게 사용자에게 빈번하게 배포할 수 있도록 돕는 프로세스입니다.
  • 목적: 개발 속도 향상, 코드 품질 유지, 안정적인 배포.

1. CI (지속적인 통합)

정의

  • 코드 변경사항(버그 수정, 신규 기능 등)을 main repository에 정기적으로 통합(build, test, merge)하는 것.
  • 익스트림 프로그래밍(Extreme Programming) 개발 방법론에서 유래.

핵심 포인트

  1. 코드 변경사항의 빈번한 통합
    • 충돌을 최소화하고 최신 상태의 코드를 유지하기 위해 자주 머지.
  2. 통합 과정 자동화
    • 빌드, 테스트, 머지 단계 자동화.

2. CD (지속적인 제공 또는 배포)

정의

  • CI 이후의 프로세스인 배포 단계까지 포함한 자동화 프로세스.

  • 두 가지 종류로 나뉩니다:

    1. Continuous Delivery (지속적인 제공)

      • 배포 전 단계까지 자동화.
      • 실제 배포는 수동으로 수행.
      • 장점: 인간의 최종 검증이 가능.
    2. Continuous Deployment (지속적인 배포)

      • 배포를 포함한 전체 과정을 완전 자동화.
      • 코드가 main branch에 병합되면 곧바로 배포.
      • 장점: 빠르고 지속적인 피드백 제공.

3. CI/CD 파이프라인

CI/CD 프로세스는 다음 단계들로 구성됩니다:

  1. Code

    • 개발자가 소스 코드를 작성하고 main branch에 푸시.
  2. Build

    • 코드를 실행 가능한 상태로 빌드.
    • 예: 컴파일, 패키징.
  3. Test

    • 작성된 코드가 제대로 작동하는지 검증.
    • 단위 테스트(Unit Test), 통합 테스트(Integration Test) 등을 포함.
  4. Release

    • 배포 준비 상태로 릴리즈.
    • 예: 버전 관리, 아티팩트 생성.
  5. Deploy

    • 릴리즈된 소프트웨어를 실제 사용자 환경에 배포.

4. CI/CD 도구

현업에서 자주 사용되는 주요 CI/CD 툴들:

  • Jenkins: 가장 널리 사용되는 오픈소스 CI/CD 툴.
  • Buildkite: 빠른 빌드 환경 제공.
  • GitHub Actions: GitHub와 통합된 CI/CD 솔루션.
  • GitLab CI/CD: GitLab의 내장형 CI/CD 도구.
  • Bitbucket Pipelines: Atlassian의 CI/CD 서비스.
  • CircleCI: 빠르고 강력한 CI/CD 플랫폼.

핵심 요약

  • CI: 코드 통합(빌드, 테스트, 머지) 단계의 자동화.
  • CD: CI 이후 배포 전(Continuous Delivery) 또는 배포까지(Continuous Deployment) 자동화.
  • 도입 장점: 개발 주기 단축, 빠른 피드백, 배포 신뢰도 향상.
profile
🌱

0개의 댓글