logo
한달 포트폴리오 멘토링
블로그

CI/CD (Continuous Integration, Continuous Delivery)

CI는 Continuous Integration, CD는 Continuous Delivery의 약자입니다. 한국말로 하면 계속되는 통합, 계속되는 배달(배포)라는 뜻이죠. 그렇다면 공통되는 단어인 Continuous는 어떤 의미로 쓰이고 있을까요?

예전에는 여러가지 개발을 통합(코드 최신화 → 빌드 → 서비스 통합 → 테스트)와 배포 (개발 서버 배포 → 운영 서버 배포)를 하기 위해서는 특정한 날을 잡아서 열심히 통합하고 배포하였습니다. 이 과정에서 예상치 못한 버그와 문제가 생겨 많은 밤샘과 야근을 만들었죠.

이러한 문제를 해결하기위해 통합과 배포과정코드로 자동화하고 기존처럼 날잡고 하는 것이 아닌 주기적으로 자주 할 수 있게 만들었습니다. 즉 자동화된 코드를 통해 주기적으로 통합과 배포를 하기 때문에 Continuous라는 단어가 붙은 것이죠

CI/CD에서 주로 하는 작업은 유닛테스트, 통합테스트, 코드 정적분석, 빌드, 테스트 서버 배포, 실서버 배포 등이 있습니다.

CI/CD 정책 예제

CI/CD는 정책에 따라 빌드 정적분석 유닛테스트 통합테스트 Relase 등을 주기적으로 진행합니다.

CI 정책의 예제로 많이 쓰는 Git관리 정책인 Gitflow 와의 연동 예제는 다음과 같이 할 수 있습니다.

- Feature Branch Push시 1. 유닛테스트 수행 2. 유닛테스트 수행 실패시 테스트결과를 Slack으로 전송 - Pull Reqeuest 생성시 1. 유닛테스트 수행 2. 유닛테스트 수행 실패시 테스트결과를 Slack으로 전송 3. 소스코드 정적분석 수행 3. Slack에 정적분석 결과 Slack 전송 - Develop Branch Merge시 1. 통합 빌드 2. Develop 서버 배포 3. 통합 테스트 수행 4. 통합테스트 수행 결고 Slack 전송 - Main Branch Merge시 1. 통합 빌드 2. QA 서버 배포 3. 릴리즈 메세지와 함께 QA팀에 메세지 전송 - Relase Branch Merge시 1. 통합 빌드 2. 릴리즈 서버 배포

해당 과정에 대한 스크립트를 미리 작성해서 셋업해 놓으면 Git서버에서 이벤트 CI/CD에 메세지를 보내어 해당 과정을 자동으로 수행하기 때문에 빌드 & 테스트 & 배포 를 주기적으로 자주 할 수 있으며, 사람의 실수를 최소화 하여 일정 수준 이상의 소프트웨어 퀄리티를 유지할 수 있습니다.

PortfolioAD
관련있는 글

couchcoding

2022-12-07

Postman Mock Server로 팀 프로젝트의 개발 속도와 갈등을 개선하기

프로젝트의 개발 효율을 저해시키는 요소에는 정말 여러가지가 있습니다. Mock Server는 개발 효율을 저해시키는 요소 중에 개발 병목현상과 불명확한 커뮤니케이션을 해결할 수 있는 좋은 솔루션입니다. 여기 백엔드 개발자 A와 프론트엔드 개발자 B가 같이 개발을 하는...

개발 도구

협업도구
API 설계
API
mock server
postman

couchcoding

2022-12-07

[Git] 실무에서 사용하는 명령어들을 빠르게 알아보자 (1)

Git은 개발자가 반드시 알아야할 기술 중 첫번째로 뽑을 정도로 굉장히 중요한 기술입니다. 그 Git을 제대로 공부하기는 매우 어렵고, 대부분의 상황에서는 그 모든 것을 알 필요는 없습니다. 그래서 이번 포스팅에서는 실무에서 사용하는 필수 명령어들을 알아보도록 하겠습...

개발 도구

git
commit
push
pull
add
git 충돌 해결

couchcoding

2022-12-07

당신이 Docker로 개발환경을 구축해야 하는 이유(Docker로 Postgresql과 Redis 설치하기 예제)

도커는 리눅스 가상화 시스템으로 사용해보면 Virtual Machine(이하 VM)과 같이 내 컴퓨터에 독립된 리눅스 운영체제 환경을 만든 느낌을 받을 수 있습니다. 그러나 사용해 보면 VM과 달리 굉장히 가벼운 것을 알 수 있습니다. ...

개발 도구

배포
redis
docker
개발환경
postgres

couchcoding

카우치코딩 공식 계정입니다.