CI/CD는 빌드 테스팅 및 배포의 자동화를 뜻하며, 프로젝트 생산성을 향상하기 위해 고안되었습니다.
CI/CD 는 Continuous Integration / Continuous 'Deploy' or 'Delivery' 의 약자로 지속적인 통합을 이루고, 지속적인 배포 혹은 배달을 통해 생산성의 향상을 도모하기 위한 자동화 개념입니다.
간단하게 여러 개발자가 협업을 할 때 내가 작성한 코드가 다른 개발자의 모듈과 충돌이 나지 않는지, 혹은 실행 환경 호환성에 있어서 문제가 없는지 등을 CI 서버 에서 테스팅합니다. 이 과정에서 개발자들은 각 모듈을 짧은 주기로 서버에 커밋하여 테스팅 해야 하고, CI 서버는 Script, unit test, Integration test 등을 거쳐 개발자가 커밋한 코드가 문제가 없는지 확인합니다.
문제가 있을 경우 해당 개발자에게 report 해서 수정할 수 있도록 합니다.
위 과정을 거쳐 올바르게 작성된 코드가 성공적으로 병합되면, CD단계로 넘어갑니다.
CD 단계는 두 가지로 나뉩니다. 앞서 말한 'Deploy' or 'Delivery'의 차이인데요 간단합니다.
'Deploy'는 CI 단계에서 build된 application을 실제 운용 서버까지 '자동으로' 배포합니다.
'Delivery'는 build된 application을 개발자에게 전달하여 수동적으로 확인하고, 서버에 배포합니다.
현업에서 자주 쓰이는 CI/CD 툴은 Jenkins, Buildkite, Github actions등이 있습니다.
위와 같이 테스팅 및 integration을 자동화하여 프로젝트의 생산성을 향상시킬 수 있습니다.
'Dev' 카테고리의 다른 글
Business logic에 대한 생각 (0) | 2021.05.26 |
---|