[개발] CI/CD란?

박현민·2025년 6월 12일

게임서버

목록 보기
8/8

CI/CD란?

CI/CDContinuous Integration(지속적 통합)Continuous Delivery/Deployment(지속적 전달/배포)의 약자이다.

이는 개발 → 빌드 → 테스트 → 배포까지의 과정을 자동화하여 소프트웨어를 더 빠르고 안정적으로 출시할 수 있도록 돕는 개발 방식이다.


CI (지속적 통합, Continuous Integration)

코드 변경 사항을 자주 병합하고, 이 과정을 자동으로 테스트하여 코드 품질을 유지하는 개발 전략

CI는 개발자들이 작성한 코드를 작은 단위로 자주 메인 저장소(main branch)에 통합하는 것을 뜻한다.

각 코드 변경 시마다 자동으로 빌드와 테스트가 실행되어, 문제를 조기에 발견하고 빠르게 수정할 수 있도록 돕는다.


CI의 주요 특징

  • 자주 통합: 개발자들이 하루에도 여러 번 코드를 병합하여 충돌 가능성을 줄임

  • 자동 빌드 및 테스트: 코드 변경 시 자동으로 프로젝트를 빌드하고 테스트를 실행

  • 빠른 피드백: 오류가 발견되면 즉시 알림을 받아 빠르게 문제 해결

  • 코드 품질 유지: 지속적인 검증으로 안정적이고 신뢰성 높은 코드 유지


CI의 장점

  1. 빠른 문제 발견 및 해결

    • 코드 변경 즉시 자동 빌드와 테스트가 실행되어 오류를 조기에 발견할 수 있다.
    • 문제 발생 시 빠른 피드백으로 신속하게 수정 가능하다.
  2. 통합 충돌 최소화

    • 개발자들이 자주 코드를 병합하여 큰 충돌이 발생하기 전에 해결할 수 있다.
    • 팀 협업이 원활해지고 생산성이 높아진다.
  3. 개발 속도 증가

    • 빌드와 테스트 과정을 자동화해 반복 작업에 드는 시간을 줄인다.
    • 개발자는 실제 기능 구현과 문제 해결에 더 집중할 수 있다.
  4. 지속적 개선 및 유지보수 용이

    • 작은 단위로 자주 통합함으로써 코드가 항상 최신 상태를 유지한다.
    • 장기적으로 유지보수가 쉽다.
  5. 배포 준비 상태 유지

    • 항상 빌드가 가능한 상태를 유지해 배포 시점에 별도의 준비 작업이 필요 없다.

    • CD과 연결해 빠른 배포가 가능하다.


CD (지속적 전달/배포, Continuous Delivery/Deployment) 란?

CD는 CI 이후의 단계를 자동화하여, 코드를 사용자에게 전달하거나(Delivery), 실제 운영 환경에 배포(Deployment)하는 과정을 자동화하는 개발 전략

CI를 통해 안정적으로 통합된 코드를, CD를 통해 테스트 서버, 스테이징 서버, 운영 서버에 이르기까지 자동으로 배포할 수 있다.

여기서 "CD"는 상황에 따라 두 가지로 나뉜다

Continuous Delivery (지속적 전달)

  • 자동으로 테스트 및 빌드된 코드를 운영 직전 단계까지 배포하고, 운영 배포는 수동으로 선택하여 진행한다.

Continuous Deployment (지속적 배포)

  • 코드가 통합되고 테스트를 통과하면, 자동으로 운영 환경까지 배포한다. (사람의 개입 없이 전 과정 자동화)

CD의 주요 특징

  • 배포 자동화: 테스트 → 빌드 → 배포 전 과정을 자동화해 반복 작업 최소화

  • 고빈도 배포: 기능이 완성되는 대로 빠르게 사용자에게 전달 가능

  • 버그 대응 신속: 변경 사항을 빠르게 반영하여 문제 수정 속도 향상

  • 운영 환경과 유사한 스테이징 환경 활용: 실제 운영 환경과 유사한 조건에서 테스트 가능


CD의 장점

  1. 배포 속도 향상

    • 릴리즈 주기를 단축하고, 사용자에게 빠르게 가치를 전달할 수 있음
  2. 배포 안정성 증가

    • 자동화된 테스트와 배포를 통해 배포 시 오류를 줄이고, 품질을 안정적으로 유지함
  3. 작은 단위의 변경 적용

    • 큰 규모의 업데이트 대신, 자주 작고 안전한 변경을 적용하여 문제 발생 가능성 최소화
  4. 빠른 피드백 루프

    • 실제 사용자 환경에서 빠르게 피드백을 수집하고, 이를 통해 서비스 개선이 가능함
  5. 팀 간 협업 강화

    • 개발, QA, 운영 팀 간의 협업이 원활해지고, 배포 관련 의사소통 비용이 줄어듦

profile
자라고 있는 게임개발자

0개의 댓글