CI/CD

진성·2022년 5월 20일
0

CI

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

CI가 필요한 환경조건

다수의 개발자가 형상관리 툴을 공유하여 사용하는 환경

보통 개발을 할때 개발자들은 협업을 많이 하게 된다.
이때 형상관리 툴(Git, SVN등)을 사용하게 되는데, 지속적으로 서비스해야 하는 어플리케이션이나 현재 개발중인 어플리케이션은 기능 추가 시마다 commit 등을 날려 레포지토리에 버전을 업데이트 한다.
이때 다수의 개발자가 한 팀으로 작업을 할 경우, 공유 레포지토리에 많은 commit 들이 쌓게 된다.
이런 상황에서 자동화된 빌드&테스트는 원천 소스코드의 충돌 등을 방어하는 이점이 생기게 된다.

MSA(Micro Service Archietecture) 환경

기존의 어플리케이션이 모든 기능을 포함하는 하나의 거대한 서비스 였다면, MSA 는 작은 기능별로 잘게 쪼개어 개발하는 형태이다.
MSA 환경에서는 기능 추가 및 보수가 매우 빈번하게 발생하게 된다.
이러한 상황에서 CI의 적용은 기능 충돌 방지 등의 이점이 생긴다.

이러한 CI의 핵심 목표는 버그를 신속하게 찾아 해결하고, 소프트웨어의 품질을 개선하고, 새로운 업데이트의 검증 및 배포의 시간을 단축시키는 것에 있다.

CD

CD는 Continuous Delivery 혹은 Continuous Depolyment 이 두 용어의 축약어 이며, 지속적인 서비스 제공 혹은 지속적인 서비스 배포라는 의미이다.

Continuous Delivery는 공유 레포지토리로 자동으로 릴리즈 하는 것이며,
Continuous Depolyment는 Production 레벨까지 자동으로 deploy 하는 것을 의미한다.
CD는 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션 환경까지 릴리즈 되는 것을 의미한다.

서비스의 사용자는 최대한 빠른 시간 내에 최신 버전의 Production을 제공받을 필요가 있다.
이 때, 소프트웨어가 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도 support 하는 것이 CD라고 할 수 있는 것이다.

이는 서비스의 개발팀과 비즈니스팀(영업, CS팀 등) 간의 커뮤니케이션 부족 문제를 해결해 줌으로써,
배포에 이르기까지의 노력을 최소한으로 단축시켜 준다는 이점을 가져다 준다.

출처: 개발자 김모씨의 성장 일기

profile
풀스택 진행중...

0개의 댓글