1. 배포가 두렵고 번거롭다면 CI/CD가 답이다
새 기능을 배포할 때마다 아래 과정을 반복합니다. 코드를 서버에 복사하고, 패키지를 설치하고, 서버를 재시작하고, 정상 동작하는지 확인합니다. 매번 같은 과정을 반복하고, 한 단계라도 빠뜨리면 서비스에 문제가 생깁니다.
이 반복적인 과정을 자동화하는 것이 CI/CD입니다. 코드를 push하면 테스트부터 배포까지 자동으로 처리됩니다.
2. CI – 지속적 통합이란 무엇인가?
**CI(Continuous Integration, 지속적 통합)**는 개발자들이 코드를 자주 공유 저장소에 통합하고, 통합할 때마다 자동으로 빌드와 테스트를 실행하는 방식입니다.
CI가 없으면 팀원들이 각자 오랫동안 개발하다가 마지막에 코드를 합칠 때 충돌이 폭발합니다. 문제를 발견하는 시점이 늦어질수록 수정하기 어렵습니다.
CI를 사용하면 코드를 합칠 때마다 자동으로 테스트가 실행됩니다. 문제가 생기면 즉시 알림을 받아 빠르게 수정할 수 있습니다. 코드를 자주 작게 통합하기 때문에 충돌 자체가 줄어듭니다.
3. CD – 지속적 전달과 지속적 배포의 차이
CD는 두 가지 의미로 사용됩니다.
Continuous Delivery(지속적 전달): CI를 통과한 코드를 운영 환경에 배포할 수 있는 상태로 자동 준비합니다. 최종 배포는 사람이 버튼을 눌러 실행합니다. 배포 전 사람의 검토가 필요한 경우에 적합합니다.
Continuous Deployment(지속적 배포): CI를 통과하면 사람의 개입 없이 자동으로 운영 서버에 배포됩니다. 완전 자동화 방식으로 빠른 반복 배포가 가능합니다.
어떤 방식이 적합한지는 서비스의 특성에 따라 다릅니다. 금융·의료처럼 신중함이 필요한 서비스는 Continuous Delivery를, 빠른 기능 출시가 중요한 서비스는 Continuous Deployment를 선택합니다.
4. CI/CD 파이프라인의 전체 흐름
일반적인 CI/CD 파이프라인은 아래 단계로 구성됩니다.
1단계 – 코드 push: 개발자가 GitHub에 코드를 push합니다.
2단계 – 트리거: CI/CD 도구가 push 이벤트를 감지하고 파이프라인을 시작합니다.
3단계 – 빌드: 코드를 컴파일하거나 패키지를 설치합니다.
4단계 – 테스트: 단위 테스트, 통합 테스트를 자동으로 실행합니다.
5단계 – 결과 알림: 테스트 통과 시 초록 체크, 실패 시 빨간 X를 표시하고 알림을 보냅니다.
6단계 – 배포: 테스트를 통과한 코드를 스테이징 또는 운영 서버에 배포합니다.
테스트가 실패하면 해당 코드는 배포되지 않고 파이프라인이 중단됩니다. 문제가 있는 코드가 운영에 올라가는 것을 자동으로 막아줍니다.
5. CI/CD를 도입하면 실제로 무엇이 달라지나?
배포 주기 단축: 수동 배포는 신중하게 준비하다 보니 주 1회 또는 월 1회씩 배포하는 경우가 많습니다. CI/CD를 도입하면 하루에도 여러 번 안전하게 배포할 수 있습니다.
배포 불안감 제거: 자동화된 테스트가 항상 실행되므로 배포할 때 “혹시 뭔가 망가지지 않을까?”라는 불안감이 줄어듭니다.
팀 생산성 향상: 수동 배포에 쏟던 시간이 줄어들어 개발에 집중할 수 있습니다.
코드 품질 향상: 자동 테스트가 필수가 되어 테스트를 빠뜨리는 문화가 사라집니다.
6. 대표적인 CI/CD 도구 비교
| 도구 | 특징 | 추천 대상 |
|---|---|---|
| GitHub Actions | GitHub 내장, 설정 간단 | GitHub 사용자 |
| Jenkins | 오픈소스, 자체 서버 설치 | 커스터마이징 필요 시 |
| GitLab CI/CD | GitLab 내장 | GitLab 사용자 |
| CircleCI | 클라우드 기반, 빠른 속도 | 빠른 파이프라인 필요 시 |
처음 시작한다면 별도 서버 없이 GitHub에 설정 파일만 추가하면 되는 GitHub Actions가 가장 진입 장벽이 낮습니다.
7. 언제 CI/CD를 도입해야 하는가?
CI/CD가 좋다고 해서 모든 프로젝트에 즉시 필요한 것은 아닙니다.
아직 CI/CD가 필요 없는 경우는 개인 학습 프로젝트, 한 달에 1~2번 배포하는 소규모 프로젝트, 아직 MVP(최소 기능 제품) 단계인 경우입니다.
CI/CD 도입을 고려할 시점은 팀원이 2명 이상으로 늘어났을 때, 배포 빈도가 주 1회 이상이 됐을 때, 수동 배포 실수로 인한 장애가 발생했을 때입니다.
8. 정리 및 다음 단계
오늘 배운 핵심을 정리합니다.
- CI는 코드를 통합할 때마다 자동 빌드와 테스트를 실행합니다.
- CD는 CI를 통과한 코드를 자동으로 배포 준비하거나 배포합니다.
- CI/CD 파이프라인은 push → 빌드 → 테스트 → 배포 순서로 진행됩니다.
- 처음 시작은 GitHub Actions가 가장 간편합니다.
다음 글에서는 GitHub Actions 워크플로우를 직접 만들어보는 방법을 알아보겠습니다.