티스토리 뷰
1. CI/CD란?
CI/CD는 Continuous Integration(지속적 통합)과 Continuous Deployment(지속적 배포)의 약어로, 소프트웨어 개발의 자동화된 빌드, 테스트, 배포 프로세스를 의미한다. 이를 통해 개발자는 보다 신속하고 안정적으로 애플리케이션을 배포할 수 있다.
2. CI(지속적 통합, Continuous Integration)
🔹 CI란?
CI(지속적 통합)는 개발자가 코드 변경 사항을 정기적으로 저장소(Repository)에 병합하고, 자동화된 빌드 및 테스트를 실행하는 프로세스이다.
🔹 CI의 핵심 요소
- 버전 관리 시스템(Git 등) 활용: 모든 코드 변경 사항을 추적하고 관리
- 자동 빌드 및 테스트: 코드가 변경될 때마다 테스트를 실행하여 문제를 조기에 발견
- 빠른 피드백 제공: 코드 변경 후 즉시 결과 확인 가능
🔹 CI의 장점
✔️ 코드 품질 향상 (자동화된 테스트를 통해 오류를 사전에 방지)
✔️ 개발 속도 증가 (작은 단위로 병합하여 충돌 감소)
✔️ 협업 효율성 향상 (팀원이 최신 코드 상태를 공유 가능)
3. CD(지속적 배포 & 지속적 전달)
🔸 CD란?
CD는 Continuous Delivery(지속적 제공)와 Continuous Deployment(지속적 배포) 두 가지 개념을 포함합니다.
🔸 지속적 제공(Continuous Delivery)
- 자동화된 배포 준비
- 코드가 빌드 및 테스트를 통과하면 운영 환경 배포 준비 완료
- 실제 배포 여부는 사람이 결정
🔸 지속적 배포(Continuous Deployment)
- 완전 자동화된 배포
- 테스트를 통과한 코드가 즉시 운영 환경에 반영
- 개발자가 직접 배포할 필요 없음
🔸 CD의 장점
✔️ 배포 주기 단축 (자동화를 통해 신속한 업데이트 가능)
✔️ 안정성 향상 (CI/CD로 지속적인 테스트와 모니터링 수행)
✔️ 빠른 사용자 피드백 반영 (즉각적인 수정 및 배포 가능)
4. CI/CD 파이프라인 구성 요소
CI/CD를 구현하기 위해서는 아래와 같은 주요 단계가 필요하다.
1️⃣ 소스 코드 관리 (Git, GitHub, GitLab, Bitbucket 등)
2️⃣ 자동화 빌드 (Jenkins, GitHub Actions, GitLab CI/CD 등)
3️⃣ 자동화 테스트 (JUnit, Jest, Selenium 등)
4️⃣ 아티팩트 저장소 (Docker Registry, Nexus, Artifactory 등)
5️⃣ 배포 자동화 (Kubernetes, ArgoCD, Spinnaker 등)
6️⃣ 모니터링 및 로깅 (Prometheus, Grafana, ELK Stack 등)
5. CI/CD 도구 비교
도구 | 특징 | 장점 |
Jenkins | 오픈소스, 강력한 커스터마이징 | 다양한 플러그인 지원 |
GitHub Actions | GitHub과 완벽한 연동 | 설정이 간편하고 무료 플랜 제공 |
GitLab CI/CD | GitLab과 통합된 CI/CD 기능 | 설정이 간편하고 강력한 기능 제공 |
CircleCI | 클라우드 기반 CI/CD | 빠른 빌드 속도 |
Travis CI | 오픈소스 친화적 | 설정이 간단하고 GitHub과 연동 쉬움 |
6. CI/CD 적용 시 고려해야 할 점
- 테스트 자동화가 잘 구축되어 있는가?
- 배포 프로세스가 충분히 안전한가?
- 모든 환경(개발, 스테이징, 운영)에서 일관되게 동작하는가?
- 롤백 전략이 마련되어 있는가?
7. 결론
CI/CD는 소프트웨어 개발의 핵심 자동화 전략으로, 빠르고 안정적인 배포를 가능하게 한다.
프로젝트의 규모와 특성에 따라 적절한 CI/CD 도구와 전략을 선택하고, 효과적으로 활용할 수 있다.
✔ 소규모 프로젝트 → GitHub Actions, Travis CI
✔ 중규모 프로젝트 → GitLab CI/CD, CircleCI
✔ 대규모 프로젝트 → Jenkins, Kubernetes 기반 배포
'FrontEnd > 배포' 카테고리의 다른 글
Nextjs AWS 배포하기 (0) | 2024.04.08 |
---|---|
AWS 서버 구축하기 (0) | 2023.11.06 |
- Total
- Today
- Yesterday
- 디바운싱
- AI Challeng for Biodiversity
- 티스토리챌린지
- react
- github
- Network
- style-lint
- 네트워크
- react-query
- git
- 이브와ICT멘토링
- eslint
- zustand
- 오블완
- Tanstack Query
- Next.js
- 쓰로틀링
- Tanstack-Query
- web
- prettier
- 무한스크롤
- 알고리즘
- 핀터레스트
- sass
- React Query
- Firebase
- Masonry 레이아웃
- 최적화
- 캡스톤디자인
- 패키지 매니저
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |