CI/CD : 지속적인 통합과 배포를 통해 애플리케이션 개발 단계를 자동화하여 고객에게 보다 짧은 주기로 서비스를 제공하고 개선하는 방법
CI(Continuous Integration)
지속적인 통합(Continous Intergration)은 개발자가 작업한 코드를 자동으로 테스트하고 테스트에 통과하면 코드를 통합하여 저장
지속적인 통합이라는 뜻으로 어플리케이션의 새로운 코드 변경사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합되는 것을 의미한다.
이런 경우 CI를 적용하면 좋아요
- 다수의 개발자가 형상관리 툴을 공유하며 사용하는 환경
: 여러 개발자가 한 팀으로 작업하면 공유 레포지토리에 수많은 commit들이 쌓이게 되는데,
그때마다 기능별로 빌드/테스트/병합을 하기엔 번거로우니 자동화된 빌드&테스트로 원천 소스코드의 충돌을 방어 할 수 있다.
-MSA(Micro Service Architecture) 환경
: 작은 기능별로 서비스를 잘게 쪼개어 개발하는 형태를 의미하는데 MSA 환경에서는 대부분 Agile(소규모 기능 단위로 빠르게 개발 & 적용을 반복하는 개발방법론) 이 적용되기 때문에 기능 추가가 빈번하다. 이때 CI는 기능 충돌 방지와 같은 이점이 있다.
정리하자면
버그를 신속하게 찾아 해결하고, 소프트웨어의 품질을 개선하고, 새로운 업데이트의 검증 및 릴리즈 시간을 단축할 수 있다.
CD(Continuous Delivery & Continuous Deployment)
지속적인 배포(Continous Deployment)는 작업한 코드 및 변경사항들을 테스트를 거쳐 리포지토리로 업그레이드되고 실 서비스 배포로 릴리즈까지 자동화 하는 것
Continuous Delivery : 지속적인 서비스 제공
개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 레포지토리(ex. Git)에 자동으로 업로드되는 것을 뜻한다.
Continuous Deployment : 지속적인 배포(Production 레벨까지 자동으로 deploy)
개발자의 변경 사항을 레포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미한다.
즉, CI가 새로운 소스코드의 빌드/테스트/병합이라면 CD는 고객의 프로덕션 환경까지 릴리즈 되는 것을 의미한다.
이런 경우 CD를 적용하면 좋아요
-MSA(Micro Service Architecture) 환경
: MSA 환경에서는 대부분 Agile(소규모 기능 단위로 빠르게 개발 & 적용을 반복하는 개발방법론) 이 적용되기 때문에 기능 추가가 빈번하고 서비스 사용자는 최대한 빠른 시간 내에 최신 버전의 프로덕션을 제공받을 필요가 있다.
이때, 소프트웨어가 항상 신뢰 가능한 수준의 버전을 유지 할 수 있도록 서포트해준다.
대표적인 CI/CD 툴
Jenkins, Travis CI, Bamboo 등
References
https://artist-developer.tistory.com/24
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
위 블로그에서 추천한 링크인데 시각화를 통해 CI/CD를 효과적으로 관리하는 내용이다.
'IT 기본지식' 카테고리의 다른 글
Load Balancer란? / L4 load balancer, L7 load balancer (0) | 2022.02.15 |
---|---|
Micro Service Architecture(MSA)의 장단점 (0) | 2022.02.15 |
3-Tier Architecture 정의 및 구성방식 (0) | 2022.02.13 |
[통신] TCP/UDP 가볍게 읽고 기억하기, TCP vs IP (0) | 2022.02.13 |
Virtualization(가상화)란 무엇인가? | Hypervisor(하이퍼바이저) (0) | 2022.02.13 |
댓글