본문 바로가기
Coding/TIL & 배운것들

CI / CD

by 코딩짜는 머글 2024. 12. 9.

 

 

출처 : Amazon Web Services

 

 

CI(Continous Integration)

지속적인 통합. 애플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합하는 것을 의미한다. 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경이나 MSA(Micro Service Archietecture)환경에서 유용하다. 

 

핵심 목표 : 버그를 신속하게 찾아 해결하고, 소프트웨어의 품질을 개선하고, 새로운 업데이트의 검증 및 릴리즈 시간을 단축시키는 것

 

 

CD(Continous Dlivery & Continous Deployment)

지속적인 서비스 제공 & 지속적인 배포. 

Delivery 는 공유 레포지토리로 자동으로 릴리즈하는 것. 

Deployment 는 프로덕션 레벨까지 자동으로 배포하는 것을 의미한다. 

 

 

 

정리하자면 CI가 새로운 소스코드의 빌드, 테스트, 병합까지를 의미
CD는 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션 환경까지 릴리즈 되는 것을 의미.

 

 

 

 

 

4가지 주요 원칙

 

1. 모든 것을 자동화 : 자동화할 수있는 것이 많을수록 수작업이 줄어들고 새로운 기능과 버그 수정을 더 빨리 제공할 수 있다.

2. 빌트인 품질 : 개발자는 처음부터 소프트웨어에 품질을 구축해야 한다. 즉, 개발 프로세스의 일부로 자동화된 테스트를 작성하고 코드 리뷰를 수행해야 한다. 

3. 일찍 그리고 자주 테스트하자 : 조기에 자주 테스트하여 오류를 신속하게 찾아내고 코드베이스에 통합되는 것을 방지할 수 있다. 

4. 자주 배포하자 : 자주 배포할수록 배포할 때마다 발생하는 위험이 줄어든다. 또한 고객이 새로운 기능과 버그 수정을 더 빨리 받을 수 있다. 

 

 

 

 

이점 

 

새로운 기능 및 버그 수정의 신속한 제공 : 새로운 코드 변경사항을 더 빠르게 제공할 수 있게되고 그로인한 피드백을 빠르게 대응할 수 있다. 

소프트웨어 품질 향상 : 조기에 자주 테스트하면 오류를 빠르게 발견하고 코드베이스에 포함되지 않도록 방지할 수 있다. 이를 통해 프로덕션 환경에서 버그가 줄어들고 고객에게 전달되기 전에 소프트웨어가 올바르게 작동하고 있는지 확인할 수 있다. 

위험감소 : 코드 변경 사항을 자주 배포하면 각 배포의 위험이 줄어든다. 또한 문제가 발생하면 더 빠르고 효율적으로 문제를 파악하고 수정하기가 더 쉬워진다. 

향상된 협업 : 개발자는 모든 코드 변경 사항을 실시간으로 하나의 중앙 메인라인에 병합하고 자동화된 테스트를 통해 검증할 수 있다. 또한 소프트웨어가 최종 사용자에게 도달하기 전에 충돌을 더 쉽게 소싱하고 완화할 수 있다.

 

 

 

파이프라인 구축단계

 

1. 빌드 : 소스코드를 실행 가능한 아티팩트로 저장하고 패키징한다.

2. 테스트 : 자동화된 테스트 환경에 아티팩트를 삽입하여 코드의 정확성과 동작을 검증한다. 

3. 배포 : 아티팩트를 테스트 또는 스테이징 환경과 프로덕션 환경에 배포한다. 

4. 모니터 : 공식 릴리스 전에 배포 환경에서 애플리케이션의 오류 및 성능 문제를 모니터링한다. 

'Coding > TIL & 배운것들' 카테고리의 다른 글

Docker 특강정리  (1) 2024.12.11
도커(Docker)  (0) 2024.12.10
12/06 베이직반 수업정리  (0) 2024.12.06
파이썬 얕은 복사 & 깊은 복사  (0) 2024.12.05
streamline 특강 정리  (1) 2024.12.05