study blog
[CI/CD] CI/CD란? 본문
지난 프로젝트 때 처음으로 CI/CD를 직접 구축해보면서 공부한 내용을 정리해보았습니다!
💡 CI/CD 란?
애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공하는 것
매번 개발자가 코드를 수정할 때 마다 빌드와 테스트를 하고 배포까지 한다면 상당히 많은 시간이 소요된다. CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다. 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하기 위한 솔루션이다.
💡 CI ( Continuous Integration ) 이란?
CI 는 Continuous Integration의 약자로 지속적인 통합이란 뜻이고 쉽게 말하자면 빌드/테스트 자동화 과정이다. 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다. CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결 할 수 있다.
📌 CI의 장점
- 코드의 검증에 들어가는 시간이 줄어든다.
- 개발 편의성이 증가한다.
- 항상 테스트 코드를 통과한 코드만이 레포지터리에 올라가기 때문에, 좋은 코드 퀄리티를 유지할 수 있다.
💡 CD ( Continuous Deployment ) 이란?
CD는 Continuous Deployment의 약자로 지속적인 배포 및 지속적인 서비스 제공을 의미한다. 배포 자동화라고 기억해도 무방하다. 지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드 되는 것을 뜻하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다. 이는 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.
📌 CI/CD 종류
- Jenkins
- TravisCI
- CircleCI
- Github Actions
💡 CI/CD 파이프라인
📌 CI/CD를 적용 하기 전의 과정
- 개발자들이 코딩한다.
- 각자의 브랜치에 코드를 push한다.
- 각자의 코드를 git에 올리고 통합한다.
- 디버깅하고 테스트한 후 코드를 수정한다.
- 위의 과정을 반복한다.
- 에러 해결 후 배포를 직접 수행한다.
📌 CI/CD를 적용 후의 과정
어느 정도의 자동화를 하느냐 어떤 파이프라인을 구성하느냐에 따라 다르다.
- 개발자들이 개발 후 코드를 push한다.
- git push를 통해 Trigger되어 CI서버에서 build, test를 수행하고 코드를 검증한다.
- build가 정상적으로 수행이 되었다면 자동으로 배포한다.
결론적으로 CI/CD는 비효율적인 과정을 줄여 소프트웨어 개발 효율성을 높인다. 즉 상호 작용을 앞당기고 피드백을 더 빨리 받음으로써 빠르게 페일하도록 도와준다. 요구사항에 맞게 파이프라인을 구성할 수 있는 유연성을 제공하는 동시에 관리가 용이한 CI/CD 플랫폼을 선택하면 안정적인 릴리스 프로세스를 구축하고 소프트웨어 품질을 개선할 수 있다.