CI/CD(Continuous Integration/Delivery & Deployment) 🚀
🤔 왜 필요할까?
혼자 개발을 한다면 CI/CD가 없어도 문제가 되지 않을 것 같다.
그런데 여러 개발자들과 함께 개발을 진행한다면 이야기가 달라진다.
CI/CD가 없으면 코드 통합이 어려워지고, 배포가 수동으로 진행되면서 실수가 발생할 가능성이 높아진다.
그렇다면 CI/CD는 어떤 역할을 하는 걸까?
🔗 파이프라인이란?
코드 구축부터 시작해서 배포까지의 일련의 과정을 CI/CD 파이프라인이라고 한다.
이 과정은 총 3가지 단계로 구성된다.
- Continuous Integration (CI): 코드를 빌드하고, 테스트한 후, 저장소에 병합
- Continuous Delivery (CD): 레포지토리에 릴리스 (main 브랜치에 머지)
- Continuous Deployment (CD): 실제 서비스 환경(프로덕션)으로 배포
이렇게 파이프라인을 구성하면 코드 배포가 체계적으로 진행되기 때문에
"어느 단계에서 문제가 발생했는지" 빠르게 알 수 있다.
또한, 테스트가 필수로 포함되므로, 테스트 코드가 없으면 코드 병합(merge)이 불가능하도록 설정할 수도 있다.
🧪 테스트의 종류
CI/CD에서는 다양한 테스트가 강제되는데, 대표적인 것들은 다음과 같다.
- 단위 테스트(Unit Test): 개별 기능이 정상 동작하는지 검증
- 통합 테스트(Integration Test): 여러 기능이 조합되어도 문제없는지 확인
- 엔드투엔드 테스트(E2E Test): 사용자의 흐름과 동일한 환경에서 테스트
- 보안 테스트(Security Test): 코드의 보안 취약점을 점검
CI/CD의 목표는 단순히 자동 배포가 아니라, 안전한 코드만 배포되도록 하는 것이다.
그렇다면 빌드는 어떤 역할을 할까?
🔧 빌드(Build)란?
예를 들어, 프론트엔드 개발에서 .vue
파일을 직접 배포할 수는 없다.
사용자들은 HTML, CSS, JS로 변환된 파일을 사용해야 하기 때문이다.
이 과정에서 Webpack 같은 빌드 도구를 사용하여 코드를 변환한다.
빌드는 단순히 변환하는 것뿐만 아니라, 코드 최적화, 압축, 번들링 등의 역할도 한다.
🔀 머지(Merge)와 충돌 해결
Git을 사용하면 여러 개발자가 각자의 브랜치에서 작업한 후,
변경 사항을 하나의 브랜치(main)에 합치는 머지(Merge) 과정이 필요하다.
머지에서 가장 중요한 것은 충돌을 최소화하는 것!
- 작은 프로젝트라면 디렉토리 단위로 개발자가 맡아서 충돌을 방지할 수도 있다.
- 일반적으로는 작은 단위(issue)로 작업 후, 해당 단위로 커밋하고 머지하는 것이 중요하다.
- 충돌이 발생하면 화면 공유 등을 통해 개발자 간 협업하여 해결하는 것이 가장 좋다.
충돌을 줄이기 위해 한 달 동안 코드를 짠 후 한 번에 배포하는 것이 아니라,
작은 기능 단위(issue)로 나누어 배포하는 것이 일반적이다.
🚀 배포(Deployment)
배포는 단순히 사용자에게 서비스 제공을 위한 과정이 아니다.
QA 엔지니어, 관리자 페이지, 백엔드 데이터 가공 등 다양한 목적으로 배포될 수 있다.
CI/CD 툴
- GitHub Actions
- Jenkins
- CircleCI (가장 유명한 툴)
Heroku를 사용하면 CI/CD 설정 없이 자동 배포가 가능하다.
예를 들어, Heroku + GitHub Actions
조합으로 쉽게 배포할 수 있다.
🔥 결론: CI/CD는 필수가 될 수밖에 없다!
CI/CD를 도입하면 자동화된 테스트와 배포 덕분에 코드 품질이 좋아지고,
배포 과정이 체계적으로 관리된다.
'CS 공부' 카테고리의 다른 글
# static 키워드 (0) | 2025.02.16 |
---|---|
# 클래스와 객체, 인스턴스 (0) | 2025.02.16 |
# 컨테이너와 도커 (0) | 2025.02.15 |
# IaaS, PaaS, SaaS (1) | 2025.02.15 |
# 오프프레미스와 온프레미스 (1) | 2025.02.15 |