728x90
CI/CD란 무엇인가?
CI/CD는 소프트웨어 개발 프로세스를 자동화하여 효율성과 품질을 높이는 기법아다. CI는 지속적 통합(Continuous Integration)을 의미하고 CD는 지속적 배포(Continuous Deployment) 또는 지속적 전달(Continuous Delivery)을 나타냅니다. 이 두 개념은 함께 작동하여 개발자가 코드를 더 안전하게 배포할 수 있도록 돕는다. 이를 통해 팀은 빠르게 피드백을 받고 버그를 조기에 발견하며 안정적인 배포를 실현할 수 있다.
CI/CD 절차
CI/CD 절차는 다음과 같이 나누어진다.
- 개발(Develop): 소스 코드를 작성하여 애플리케이션을 개발한다.
- CI(지속적 통합): 코드 변경 사항을 자동으로 테스트하고 빌드한다.
- 테스트 및 빌드: 코드가 변경되면 자동으로 테스트를 실행하고 문제가 없으면 빌드한다.
- 아티팩트 생성: 빌드 결과물(예: JAR 파일, WAR 파일 등)을 생성한다.
- 배포 준비: 생성된 아티팩트를 배포 가능한 환경에 올리기 위한 준비 작업을 한다.
- CD(지속적 배포): 최신 버전의 애플리케이션을 자동으로 배포한다.
- 아티팩트 배포: 생성된 아티팩트를 실제 운영 환경 또는 테스트 환경에 배포한다.
- 애플리케이션 실행: 배포한 아티팩트를 기반으로 애플리케이션을 실행한다.
CI(지속적 통합)
1. 테스트 및 빌드
- 소스 코드 테스트: 코드가 변경되면 CI 툴(예: Jenkins, GitHub Actions 등)을 통해 자동으로 테스트를 수행한다.
- 아티팩트 생성: 성공적으로 테스트가 완료되면 소스 코드를 빌드하여 아티팩트를 생성한다. 이 과정에서 JAR, WAR, 또는 기타 실행 파일이 만들어진다.
2. 배포 준비
- 아티팩트 저장: 생성된 아티팩트는 아티팩트 저장소에 저장된다. 이는 나중에 배포할 수 있도록 준비하는 단계아다.
CD(지속적 배포)
3. 아티팩트 배포
- 배포 환경 설정: 필요한 경우 배포 환경을 설정하고, 설정이 완료되면 아티팩트를 배포한다.
- 애플리케이션 실행: 배포한 아티팩트를 기반으로 애플리케이션을 실행하고 필요한 경우 서비스 로드 밸런서를 통해 트래픽을 분산한다.
CI/CD 툴
CI/CD는 자동화된 툴을 통해 이루어진다. 여러 가지 CI/CD 툴이 있지만 대표적으로 Jenkins, GitHub Actions, GitLab CI/CD가 많이 사용된다.
이러한 CI/CD 툴은 소스 코드 저장소에서 발생하는 다양한 이벤트에 따라 자동으로 작업을 실행할 수 있는 기능을 제공한다.
- 테스트: 코드 변경 사항이 발생할 때마다 자동으로 단위 테스트를 실행할 수 있다.
- 배포: 특정 브랜치에 푸시되면 자동으로 빌드 및 배포 과정을 수행할 수 있다.
- 배치 작업: 주기적으로 특정 작업을 실행하여 데이터 수집 및 처리를 자동화할 수 있다.
728x90
'DevOps' 카테고리의 다른 글
Github Actions로 간단하게 CI 구축하고 Docker로 배포하기 (7) | 2024.10.18 |
---|---|
Github Actions 동작 원리 (0) | 2024.10.18 |
Docker의 개념 (3) | 2024.10.15 |