본문 바로가기
IT지식/Web, Server

[Web] CI/CD에 대해 공부해보자

by five-sun 2022. 12. 21.
728x90

많이 들어 보았지만 정확히 무슨 용어인지를 공부해보도록 하자.

 

CI/CD란?

DevOps 엔지니어의 핵심 업무이다.

(DevOps 엔지니어 : 코딩, 인프라 관리, 시스템 관리 및 DevOps 도구 체인을 포함하여 개발 및 운영에 대한 광범위한 지식을 갖춰야 하는 IT 전문가)

결론:

CI = 빌드 및 테스트 자동화

CD = 배포 자동화

 

출처: https://artist-developer.tistory.com/24

CI(Continuous Integration) 이란?

지속적인 통합이라는 의미이다.

지속적인 통합이란, 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것을 의미한다.

 

CI가 필요한 환경은 어떤 조건들이 있는가?

1. 다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경 :  자동화된 빌드와 테스트는 원천 소스코드의 충돌 등을 방어할 수 있다.

2. MSA(Micro Service Archietecture) 환경 : 최근 IT업계에서 떠오르고 있는 아키텍처 모델인 MSA는 작은 기능별로 서비스를 잘게 쪼개어 개발하는 형태이다. MSA 환경에서는 대부분 Agile(소규모 기능 단위로 빠르게 개발과 적용을 반복하는 개발방법론) 방법론이 적용되기 때문에, 기능 추가가 매우 빈번하게 발생한다. CI의 적용은 기능 충돌 방지 등을 제공할 수 있다.

 

CI의 핵심 목표?

버그를 신속하게 찾아 해결한다.

소프트웨어의 품질을 개선한다.

새로운 업데이트의 검증 및 릴리즈의 시간을 단축시킨다.

 

 

출처 : gocd.org

CD(Continuous Delivery & Continuous Deployment)이란?

지속적인 서비스 제공 혹은 지속적인 배포라는 의미를 갖는다. 

Continuous Delivery는 공유 레포지토리로 자동으로 Release 하는 것,

Continuous Deployment는 Production 레벨까지 자동으로 deploy 하는 것을 의미한다.

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

 

CI에서 예로 든 MSA 같은 환경에서 Agile 방법론이 적용될 경우, 서비스의 사용자는 최대한 빠른 시간 내에 최신 버전의 Production을 제공받을 필요가 있다. 이 때, 소프트웨어가 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도록 support하는 것이 CD라고 할 수 있다.

 

CD는 개발팀과 비즈니스팀간의 커뮤니케이션 부족 문제를 해결해 줌으로써, 배포에 이르기까지의 노력을 최소한으로 단축시켜 준다는 이익을 제공한다.

 

출처: https://artist-developer.tistory.com/24

 

CI/CD란 무엇인가 (Feat. DevOps 엔지니어)

안녕하세요. 개발자의 용어를 쉽고 명확하게 설명해드리는 개발자 김모씨입니다. CI/CD ?! 개발자로 밥먹고 사시는 분들이시라면, 혹은 IT서비스 업계에 종사하시는 분들이라면, 한 번 쯤은 들어

artist-developer.tistory.com

 

728x90