CI/CD
DevOps
CI / CD 를 설명하기 전 DevOps 부터 설명하겠습니다. 왜냐하면 DevOps 자동화 관점에서 많은 Tool 들을 사용할 수 있는데 그 중 CI / CD 가 있기 때문입니다.
DevOps 란 무엇일까?
어플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합입니다.
장점
- DevOps 는 개발, 운영, 품질, 보안 등 각 역할들의 협업이 원활하게 진행되게 해줍니다.
- DevOps 를 사용했을 시 CI / CD 로 인한 안정된 빌드와 배포, 효과적인 대응이 가능합니다.
- 작업 속도가 빨라집니다. 복잡하고 계속 변화하는 시스템을 효율적으로 관리할 수 있습니다.
단점
- 다양한 팀이 모여 업무 역할이 변경되기 때문에 활성화되기 위해서는 충분한 시간이 필요합니다.
- 코드를 자주 배포할 필요가 없다면 비용만 늘어납니다.
- 포괄적인 자동화 도구가 필요합니다.
DevOps 의 예를 들자면 Jenkins, Travis CI, circle CI 가 있습니다.
CI (Continuous Integration)
CI 는 무엇일까?
CI 는 개발을 하면서 지속적으로 코드에 대한 품질 유지 해주는 것 입니다.
CI 의 시간을 설정해두고 일정 시기에 수정된 코드들을 build 와 테스트를 알아서 해줍니다.
CI 의 장점
자동으로 빌드 및 테스트를 거쳐 지속적 통합해줍니다.
-
공유 레파지토리에 올라온 코드가 잘 돌아가는지 단위테스트, 통합테스트를 해주고, success 혹은 fail 을 메일로 보내줍니다.
- 단위 테스트, 통합 테스트를 통해 작은 에러들을 바로 알고 해결할 수 있습니다. 그렇기에 merge를 한다고해도 충돌문제없이 할 수 있습니다.
- 개발자 생산성이 향상됩니다.
- 수동으로 하던 작업이 자동화되고, build, test 까지 자동화되면서 개발자는 코드에 더 집중할 수 있고, 테스트 실패 메일이 오면 바로 수정이 가능하기 때문에 향상됩니다.
CI 의 단점
- 유지보수를 잘 해야합니다.
- 프로젝트가 커지고 코드가 길어질 수록 테스트 양과 테스트 시간이 길어질 것입니다.
- 개발자들은 코드를 version control 에 올리고 스케쥴링에 지정된 시간이 되면 공유 레파지토리에 있는 코드들을 자동으로 build → test 해줍니다.
CD
CI 를 설명했으니 배포단계인 CD 를 설명하겠습니다.
CD 는 2개로 나뉩니다.
- Continuous Delivery (지속적 제공)
- Continuous Deployment (지속적 배포)
Continuous Delivery (지속적 제공)
지속적 제공은 무엇일까?
모든 코드 변경을 테스트 환경 및/또는 프로덕션 환경에 배포함으로써 CI 를 확장합니다.
장점
- CI 에서 끝난 결과물을 가지고 테스트후 레파지토리에 릴리즈 해줍니다.
- 개발자는 언제나 즉시 배포할 수 있습니다.
- 개발자는 업데이트를 좀 더 철저히 검증하고 문제를 사전에 발견할 수 있습니다.
- 테스트용으로 여러 개의 환경을 생성하고 복제하는 작업을 비용 효율적으로 손쉽게 자동화할 수 있습니다.
- 소프트웨어 릴리즈 프로세스 자동화를 해줍니다.
- 릴리즈 하기위한 코드 변경을 자동으로 build, test (CI) 를 하고 빠르게 소프트웨어를 전달할 수 있습니다.
단점
- 여러 환경 테스트를 만들 때 시간이 많이 소요됩니다.
- 많은 선행 투자가 필요합니다.
Continuous Deployment (지속적 배포)
지속적 배포란 무엇일까?
Continuous Integration 와 Continuous Delivery 과정을 거치고나면 알아서 변경 사항이 운영환경으로 자동 배포됩니다.
장점
- 상시, 신뢰성 있는 릴리즈 가능합니다.
- 지속적 통합과 지속적 제공에 의해 통과된 코드만이 배포되기 때문입니다.
- 운영환경 업데이트에 대한 승인 프로세스 제공 가능합니다.
- 개발자 입장에서 봤을 땐 예를 들어 코드를 수정하고 push만 해도 알아서 build + 테스트와 배포까지 되는 상황이 펼쳐집니다.
단점
- 자동화된 테스트는 CI/CD 파이프라인의 여러 테스트 및 릴리즈 단계를 수행할 수 있어야 하기 때문에 많은 선행 투자가 필요합니다.