최종 수정 : 24.12.23
CI/CD
구분 | 설명 | 주요 도구 | 핵심 목표 |
CI (Continuous Integration) |
코드 변경사항을 지속적으로 통합하고 테스트하는 과정 | Jenkins, GitLab CI, GitHub Actions | 버그 조기 발견, 품질 향상 |
CD (Continuous Delivery) |
프로덕션 배포가 가능한 상태로 지속적으로 유지하는 과정 | ArgoCD, Spinnaker, Jenkins | 안정적인 릴리스 준비 |
CD (Continuous Deployment) |
프로덕션 환경에 자동으로 배포하는 과정 | AWS CodeDeploy, GitLab CD, CircleCI | 빠른 배포와 피드백 |
CI(Continuous Integration)
개발자들이 코드 변경사항을 메인 브랜치(main branch)에 주기적으로 통합하는 개발 방식이다.
주요 프로세스
커밋 → 자동 빌드 → 테스트 실행 → 코드 품질 검사 → 결과 리포트
CD(Continuous Delivery)
지속적 제공은 소프트웨어가 언제든지 안정적으로 배포될 수 있는 상태를 유지하는 것을 의미한다. 이는 마치 레스토랑에서 주문이 들어오면 바로 제공할 수 있도록 모든 재료를 준비해두는 것과 같다.
CD(Delivery)의 핵심 요소
단계 | 내용 | 목적 |
자동화된 테스트 | 단위, 통합, E2E 테스트 수행 | 기능 정상 작동 확인 |
환경 구성 | 스테이징 환경 자동 구성 | 실제 환경 시뮬레이션 |
문서화 | 변경사항 자동 문서화 | 추적성 확보 |
CD(Continuous Deployment)
지속적 배포는 모든 변경사항이 자동으로 프로덕션 환겨에서 배포되는 것을 의미한다. 이는 자동차 조립 라인과 같이, 모든 검사를 통과한 제품이 자동으로 출하되는 것과 비슷하다.
자동화된 배포 파이프라인
코드 병합 → 빌드 → 테스트 → 스테이징 배포 → 프로덕션 배포
CI/CD의 이점
1. 빠른 문제 발견
개발자들이 코드를 자주 통합하고 테스트함으로써 문제를 조기에 발견할 수 있다. 예를 들어, 기능 개발 직후 자동화된 테스트를 통해 버그를 발견하면, 개발자가 해당 코드를 아직 선명하게 기억하고 있는 상태에서 빠르게 수정할 수 있다. 이는 나중에 문제를 발견했을 때 들어가는 비용과 시간을 절약할 수 있게 해준다. 또한 지속적인 품질 검사를 통해 전반적인 코드 품질도 향상된다.
2. 개발 생산성 향상
CI/CD는 빌드, 테스트, 배포와 같은 반복적인 작업을 자동화함으로써 개발자들이 실제 가치를 만드는 개발 작업에 더 집중할 수 있게 해준다.
3. 안정적인 배포
자동화된 파이프라인을 통해 모든 배포 과정이 일관되고 표쥰화된 방식으로 진행된다. 사람이 직접 수행할 떄 발생할 수 있는 실수나 누락을 방지할 수 있으며, 모든 검증 단계를 거친 후에만 배포가 이루어지므로 안정성이 크게 향상된다. 또한 문제가 발생했을 때 이전 버전으로 신속하게 롤백할 수도 있다.
4. 빠른 피드백
CI/CD를 통해 개발자는 자신이 작성한 코드에 대해 즉각적인 피드백을 받을 수 있다. 테스트 결과, 코드 품질 분석, 성능 측정 등이 실시간으로 제공되어 필요한 개선 사항을 바로 알 수 있다. 이는 고객의 요구사항 변화나 시장 상황 변화에 빠르게 대응할 수 있게 해주는 핵심 요소이다.
주의점과 고려 사항
1. 초기 설정의 복잡성
CI/CD 파이프라인을 구축하는 것은 초기 투자가 필요한 작업이다. 팀원들이 새로운 도구와 프로세를 학습해야 하며, 적절한 도구를 선정하고 설정하는 데 시간이 필요하다. 하지만 장기적으로 봤을 때 충분한 가치가 있는 과정이다.
2. 테스트 전략의 중요성
효과적인 CI/CD를 위해서는 탄탄한 테스트 전략이 필수적이다. 단위 테스트, 통합 테스트, E2E 테스트 등 다양한 레벨의 테스트를 적절히 구성해야 한다. 또한 테스트 커버리지를 지속적으로 관리해야 한다. 특히 성능 테스트는 실제 프로덕션 환경과 유사항 조건에서 수행되어야 한다.
3. 인프라 관리의 필요성
CI/CD 환경을 운영하기 위해서는 안정적이고 확장 가능한 인프라가 필요하다. 빌드 서버, 테스트 환경, 스테이징 환경 등을 관리해야 하며, 이에 따른 비용도 고려해야 한다. 또한 보안적인 측면에서도 주의가 필요하며, 접근 권한 관리와 보안 취약점 점검도 중요한 고려사항이다.
초기 설정의 어려움이나 관리의 복잡하다. 그럼에도 불구하고, 장기적으로는 개발 생산성 향상과 소프트웨어 품질 개선에 크게 기여하기 때문에 CI/CD 프로세스의 도입은 현대 소프트웨어 개발에서 선택이 아닌 필수가 되어가고 있다.
'프론트엔드 > 개발 기초 지식' 카테고리의 다른 글
[개념 정리] 모노레포 / 멀티레포 (0) | 2024.12.22 |
---|---|
[패키지 매니저] PNPM (0) | 2024.12.22 |
[패키지 매니저] NPM / Yarn (0) | 2024.12.21 |
[패키지 매니저] Yarn Berry (0) | 2024.12.20 |
[패키지 매니저] NPM / Yarn / PNPM 비교 (0) | 2024.12.14 |
댓글