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

[CI/CD] Github Actions으로 내 포트폴리오에 CI/CD를 적용하기

Github Actions 는 Github에 내장된 CI/CD 도구입니다. Github에 내장되 있는 CI/CD라 github와 통합이 쉽고, CI/CD 서버가 내장 되어 CI/CD서버를 따로 구축할 필요 없으며, 일정 수준까지 가격이 무료 라서 개인 프로젝트를 수행할...

개발 도구

CI/CD
git
git flow
github actions
배포

couchcoding

2022-12-07

포트폴리오(개발 프로젝트) 제작시 도움이 되는 도구들 - 1 (프로젝트 관리 & 디자인)

이번 포스팅에서는 이러한 개발 과정을 돕기 위해 개발 포트폴리오 단계별로 유용한 도구를 소개하려고 합니다. 먼저 협업을 위한 메신저, 프로젝트 관리 툴, 화면 기획 & 디자인에 사용할 수 있는 도구들을 소개하겠습니다. 다음 포스팅에선 설계 및 배포를 위한 다양한 툴들을...

개발 도구

협업도구
프로젝트 관리
화면 기획
디자인 도구
slack
notion
trello
github
whimsical
figma

couchcoding

2022-12-07

포트폴리오(개발 프로젝트) 제작시 도움이 되는 도구들 - 2 (설계, 테스팅)

저번 포스팅에서는 프로젝트 관리 및 화면 기획 및 디자인에 사용하는 도구들을 알아보았습니다. 이번에는 프로젝트 설계 및 테스팅할때 도움이 되는 도구들을 알아보겠습니다. ...

개발 도구

DB 설계
소프트웨어 설계
UML
테스팅 도구
erd
swagger
rest client
소프트웨어 정적분석
sonarqube

couchcoding

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