-
CI/CD(Continuous Integration/Continuous Deployment)CS 2024. 6. 2. 12:44
소프트웨어 개발은 끊임없이 변화하고 있으며, 효율성과 품질을 동시에 높이는 것을 가장 중요시 여긴다.
개발 팀은 코드 변경, 테스트, 배포 등 다양한 작업을 빠르고 효율적으로 수행해야 하며, 동시에 높은 품질을 유지해야 하는데, 이러한 개발 팀의 코드 변화를 신속하고 안정적으로 배포할 수 있게 도와주는 핵심적인 솔루션이 바로 CI/CD이다.
CI/CD는 개발, 테스트, 배포 과정을 자동화하여 개발 속도를 높이고 품질을 향상시키는 데 도움을 준다.
그렇다면 CI/CD가 무엇인지 자세히 알아보도록 하자.
CI/CD란?
CI(Continuous Integration, 지속적 통합)
개발자들의 새로운 코드의 변경 사항을 정기적으로 빌드 및 테스트 되어 git과 같은 외부 저장소에 통합하는 것을 의미한다.
CI를 통해 코드 변경 사항을 신속하게 통합하고 자동으로 빌드 및 테스트하여 문제를 조기에 발견할 수 있다.
이런 CI의 핵심 요소는 다음과 같다.
- 버전 관리 시스템(VCS) 사용: 모든 코드의 변경 사항은 git과 같은 버전 관리 시스템을 통해 관리된다.
- 자동화된 빌드: 코드가 저장소에 병합될 때마다 자동으로 빌드가 수행된다.
- 자동화된 테스트: 빌드 과정에서 단위 테스트와 통합 테스트가 자동으로 실행되어 코드 품질을 보장한다.
- 신속한 피드백: 빌드 및 테스트 결과가 개발자에게 신속히 전달되어 문제를 조기에 수정할 수 있다.
CD(Continuous Deployment/Continuous Delivery, 지속적 배포/전달)
CI의 연장선에서 빌드된 코드를 자동으로 배포하는 과정이다.
CD는 배포 과정을 자동화함으로써 배포 시간을 단축하고, 배포 오류를 방지하는 데 도움을 준다.
- 지속적 전달(Continuous Delivery)
모든 변경 사항이 자동화된 테스트를 통과한 후, 수동 승인 단계를 거쳐 프로덕션 환경에 배포된다.
수동 승인 없이 배포가 이루어지기에 완전한 자동화를 실현한다. - 지속적 배포(Continuous Deploymen)
모든 변경 사항이 자동화된 테스트를 통과하면 자동으로 프로덕션 환경에 배포된다.
수동 승인 없이 배포가 이루어지기에 완전한 자동화를 실현한다.
왜 필요한가?
CI/CD가 왜 필요한가 묻는다면, 한마디로 속도와 효율을 위해서이다.
개발 팀은 끊임 없이 진화하고 있는 개발 환경을 고려할 때, 시장 변화 및 고객 요구에 신속하고 유연하게 대응할 수 있는 개발 안을 구축해야 하는데, 이를 위한 핵심적인 솔루션인 Agile 문화와 DevOps의 한 부분으로 CI/CD 개념이 출현한 것이다.
주로 많이 사용되는 CI/CD 도구 5가지
Jenkins
- 특징: 오픈 소스 CI/CD 도구로, 플러그인 생태계가 매우 풍부하여 다양한 개발 환경과 통합 가능
- 장점: 높은 커스터마이징 가능성, 광범위한 커뮤니티 지원
- 단점: 설정과 유지보수가 복잡할 수 있으며, 리소스 소모가 큼
GitLab
- 특징: GitLab에 통합된 CI/CD 기능으로, GitLab 리포지토리와 밀접하게 연동
- 장점: 설정이 간편하고, GitLab과 완벽하게 통합되어 소스 코드 관리와 CI/CD를 한 곳에서 관리 가능
- 단점: GitLab 자체를 사용하는 것이 필수적이며, 기능이 풍부하지만 모든 기능을 학습하는 데 소요되는 시간 발생
circleci
- 특징: 클라우드 기반 CI/CD 서비스로, 간단한 설정과 빠른 빌드 성능 제공
- 장점: 설정이 간편하고, 다양한 언어와 플랫폼을 지원 및 클라우드 서비스로서 인프라 관리 불필요
- 단점: 무료 플랜의 한계가 있으며, 복잡한 워크플로우 구성 시 추가 비용 발생 가능성
Bamboo
- 특징: Atlassian에서 제공하는 CI/CD 도구로, Jira 및 Bitbucket과의 통합이 강력
- 장점: Atlassian 생태계와의 깊은 통합, 강력한 빌드와 배포 기능
- 단점: 유료 도구로, 비용이 발생하며 설정과 유지보수가 복잡할 수 있음
Travis CI
- 특징: 오픈 소스 프로젝트에 널리 사용되는 클라우드 기반 CI 서비스로, GitHub 리포지토리와 쉽게 통합
- 장점: 설정이 간편하고, GitHub와의 통합이 매우 뛰어남
- 단점: 무료 플랜의 한계가 있으며, 일부 고급 기능이 제한될 수 있음
CI/CD의 이점
CI/CD를 도입함으로써 얻을 수 있는 이점들은 다음과 같다.
- 신속한 배포 주기: 코드 변경 사항이 빠르게 배포되어 사용자에게 신속하게 전달
- 높은 코드 품질: 자동화된 테스트를 통해 코드 품질을 지속적으로 유지하고 개선 가능
- 개발 효율성 향상: 반복적인 작업이 자동화되어 개발자는 핵심 기능 개발에 집중 가능
- 문제 조기 발견: 작은 단위로 자주 통합하고 테스트함으로써 문제를 조기에 발견하고 해결 가능
결론
CI/CD는 현재 소프트웨어 개발 시장에서 필수적인 도구로 자리잡고 있다.
각각의 CI/CD 도구들은 고유한 장점과 단점을 가지고 있으므로, 각 개발 팀의 요구사항과 환경에 맞는 도구를 선택하는 것이 중요하다. 사용의 용이성, 커스터마이징 가능성, 지원 언어 및 플랫폼, 커뮤니티 지원 등을 고려하여 가장 적합한 도구를 선정하도록 하자.
CI/CD를 통해 지속적인 통합과 지속적인 배포를 통해 개발 프로세스를 자동화하고, 품질을 향상시키며, 배포 주기를 단축할 수 있기에, 이러한 이점들을 활용하여 더욱 효율적이고 안정적인 소프트웨어를 고객에게 제공할 수 있다.
'CS' 카테고리의 다른 글
HTTP/HTTPS? (0) 2024.06.19 GitHub Actions (1) 2024.06.02 Docker? (0) 2024.05.30 인증과 인가 (0) 2024.05.12 JWT(JSON Web Token)? (0) 2024.05.11