CI/ CD
는 애플리케이션 개발 단계부터 배포 단계까지 모든 단계를 자동화를 통해 조금 더 효율적이고 바르게 사용자에게 빈번히
배포할 수 있는 것을 말한다.
CI 빌드 및 테스트 자동화
CD 배포 자동화
CI (Continuos Integration) 란?
지속적인 통합이라는 의미이다.
가능한 작은 단위로 나누어서 주기적으로 빈번히 개발하고 계속해서 통합하여 나가는 것이 중요하다.
애플리케이션의 버그 수정이나 새로운 코드 변경이 주기적으로 빌드 및 테스트되면서 공유되는 레파지토리 통합(meger)되는 것을 의미한다. 이로 인해 코드 출돌의 문제를 해결할 수 있다.
1. 코드 변경사항을 주기적으로 빈번하게 merge
하나의 에시에서의 흐름
1. 여러 개발자들은 계속해서 github 등의 관리 시스템에서 통합한다.
2. 통합한 코드가 제대로 동작하는지 빌드 및 테스트를 진행한다.
3. 버그 발생하면 다음에 해야 할 목록에 정리하고 다음날이나 버그를 해결한다.
2. 통합 단계의 자동화
Build 하고 Test 하는 과정은 사람이 굳이 하지 않아도 되는 작업일 수 있다
빈번하게 통합해줄 때 마다 진행해야 하는 과정이기 때문에 한 번에 몰아서 빌드/테스트를 진행하는 것보다 시간이 더 오래 소모될 수 있다.
github에 코드만 올리고 나머지 작업인 테스트/빌드는 프로그램이 자동을 해준다면?
커밋 할 때 마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경으로 인해 문제가 생기는 부분이 없도록 보장한다.
자동화를 사용한 이후의 흐름
1. 위와 동일하게 개발자들은 형상관리 툴에 작업한 코드를 통합한다.
2. 빌드 및 테스트는 자동으로 진행되므로, 버그가 생기면 다음날 온 버그를 확인해서 버그를 해결한다.
- Continuos Integration 의 장점
코드 검증 시간 단축
개발 편의성 증가
항상 테스트 코드를 통과한 코드만이 레포지터리에 올라가기 때문에 좋은 코드 퀄리티 유지 가능
CD (Continuous Delivery)
Continuous Delivery '지속적인 제공'이라는 의미 & Continuous Deployment, '지속적인 배포'라는 의미가 있으며 두 용어는 상호 교완적으로 사용된다.
CI 에서 Build 가 되고 Test 된 후, 배포 단계에서 Release 할 준비 단계를 거치고 문제가 없는지 수정할만한 것들이 없는지 개발자가 검증하는 팀이 검증을 한다.
그 후 나온 결론이 "이제 사용자들에게 서비스를 제공해도 되겠다"라고 정해져서 배포를 수동적으로 진행하는 것이 "Continuous Delivery", 지속적인 제공이다.
또한 위와 같이 배포할 준비가 되자마자 자동화를 통하여 배포를 진행하는 것을 "Continuous Deployment" . 지속적인 배포이다.
지속적인 배포는 입증된 지속적 통합 및 전달 단계를 기반으로 한다. 간단한 코드 변경이 정기적으로 마스터에 커밋되고 자동화된 빌드 및 테스트 프로세스를 거치며 다양한 사전 프로덕션 환경으로 승격되며 문제가 발견되지 않으면 최종적으로 배포된다. 강력하고 신뢰할 수 있는 자동화 배포 파이프라인을 구축하면 하루에도 여러 번 이루어지는 릴리즈가 특별하지 않은 작업이 된다.
CD를 적용한 후의 흐름
1. CI를 적용하여 코드를 검증
2. 배포 환경과 비슷한 곳에서 검증을 진행
3. 검증된 SW를 실제 프로덕션 환경으로 배포
- CD의 장점
개발자는 배포보다는 개발에 더욱 신경 쓸 수 있도록 도와준다.
개발자가 원클릭으로 수작업 없이 빌드. 테스트. 배포 까지의 자동화를 할 수 있다.
지속적 배포는 품질 저하 없이 최대한 빨리 사용자에게 새로운 기능을 제공할 수 있다.
CI/CD의 종류
- Jenkis
- CicleCI
- TravisCI
- Github Actions
참고
https://jud00.tistory.com/entry/CICD%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C
'몰라 컴퓨터 일반 > 인프라' 카테고리의 다른 글
클라우드 컴퓨팅 VS 클라우드 네이티브 (1) | 2024.02.20 |
---|