CI는 Continuous Integration
, CD는 Continuous Delivery
의 약자입니다. 한국말로 하면 계속되는 통합, 계속되는 배달(배포)라는 뜻이죠. 그렇다면 공통되는 단어인 Continuous는 어떤 의미로 쓰이고 있을까요?
예전에는 여러가지 개발을 통합(코드 최신화 → 빌드 → 서비스 통합 → 테스트)와 배포 (개발 서버 배포 → 운영 서버 배포)를 하기 위해서는 특정한 날을 잡아서 열심히 통합하고 배포하였습니다. 이 과정에서 예상치 못한 버그와 문제가 생겨 많은 밤샘과 야근을 만들었죠.
이러한 문제를 해결하기위해 통합과 배포과정을 코드로 자동화하고 기존처럼 날잡고 하는 것이 아닌 주기적으로 자주 할 수 있게 만들었습니다. 즉 자동화된 코드를 통해 주기적으로 통합과 배포를 하기 때문에 Continuous라는 단어가 붙은 것이죠
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에 메세지를 보내어 해당 과정을 자동으로 수행하기 때문에 빌드 & 테스트 & 배포
를 주기적으로 자주 할 수 있으며, 사람의 실수를 최소화 하여 일정 수준 이상의 소프트웨어 퀄리티를 유지할 수 있습니다.
couchcoding
2022-12-07
Postman Mock Server로 팀 프로젝트의 개발 속도와 갈등을 개선하기
프로젝트의 개발 효율을 저해시키는 요소에는 정말 여러가지가 있습니다. Mock Server는 개발 효율을 저해시키는 요소 중에 개발 병목현상과 불명확한 커뮤니케이션을 해결할 수 있는 좋은 솔루션입니다. 여기 백엔드 개발자 A와 프론트엔드 개발자 B가 같이 개발을 하는...
개발 도구
couchcoding
2022-12-07
[Git] 실무에서 사용하는 명령어들을 빠르게 알아보자 (1)
Git은 개발자가 반드시 알아야할 기술 중 첫번째로 뽑을 정도로 굉장히 중요한 기술입니다. 그 Git을 제대로 공부하기는 매우 어렵고, 대부분의 상황에서는 그 모든 것을 알 필요는 없습니다. 그래서 이번 포스팅에서는 실무에서 사용하는 필수 명령어들을 알아보도록 하겠습...
개발 도구
couchcoding
2022-12-07
당신이 Docker로 개발환경을 구축해야 하는 이유(Docker로 Postgresql과 Redis 설치하기 예제)
도커는 리눅스 가상화 시스템으로 사용해보면 Virtual Machine(이하 VM)과 같이 내 컴퓨터에 독립된 리눅스 운영체제 환경을 만든 느낌을 받을 수 있습니다. 그러나 사용해 보면 VM과 달리 굉장히 가벼운 것을 알 수 있습니다. ...
개발 도구
couchcoding
카우치코딩 공식 계정입니다.