개몽가

CI/CD 란 무엇인가? 본문

Infra/DevOps

CI/CD 란 무엇인가?

개몽가 2020. 12. 29. 00:34

[CI/CD 란?]

CI/CDContinuous Intergration/Continuous Delivery,Deployement 약자로, 직역하면 지속적 통합/지속적 제공을 말한다.

즉, 어플리케이션 개발 및 배포 단계를 자동화한다는 개념이다.

 

 

[CI/CD 도입 배경 및 도입 프로젝트]

학부시절부터 현업 및 토이 프로젝트를 진행하면서 개발소스코드 통합 및 배포 절차를 보면,

 

학부시절) 개별로 짠 코드를 압축해 한 명에게 전달하면 전달받은 한 명이 소스코드를 Compare하면서 통합 진행

현업) VCS를 통해 소스코드 통합 후, 최종 소스코드 파일리스트를 Jenkins가 읽어서 빌드할 수 있도록 지정해둔 Deploy 파일에 입력

          -> Jenkins 수동 Build 클릭 -> 서버 수동 재기동

토이 프로젝트) Git과 Jenkins의 WebHook을 통한 CI/CD 경험

 

학부시절엔 VCS 조차 사용해보지 않아 다른 사람이 개발한 것을 압축해서 멜로 보내주지 않으면 통합할 수가 없었고, 이를 받기 전까지 동시에 한 파일을 수정해 충돌이 나는 것조차 알지 못한 상태로 로직을 짜게되어 곤란하고 노가다 일이 종종 발생했었다.

 

첫 현업에서는 VCS를 SVN을 사용하여 학부시절과 같은 상황은 어느정도 보완할 수 있었고 Jenkins 배포툴을 사용해 형상에 있는 최종 커밋버전을 손쉽게 배포할 수 있었다. 하지만 이 부분 담당자가 손으로 직접 배포 대상 리스트 취합하고, 빠진 파일이 있는지 반복 확인 등이 필요했다.

 

이런 수고스러운 작업을 보완 및 향상시킬 수 있는 개념이 바로 CI/CD 이다.

 

[CI/CD 차이]

CI(Continuous Intergration)

  • 개발자를 위한 자동화 프로세스
  • 코드 변경 사항을 정기적으로 빌드 및 테스트되어 Share Repository에 통합되기 때문에 동시 작업으로 충돌 발생 및 버그 등을 해결할 수 있음

CD(Continuous Delivery,Deployement)

  • 지속적인 서비스 제공(Continuous Delivery), 지속적인 배포(Continuous Deployment)를 의미
  • Delivery : 개발자들이 추가 및 수정한 변경 사항이 버그 테스트를 완료해 Repository에 자동으로 업로드되고, Repository에서 실시간 프로덕션 환경으로 배포 진행하는 것을 의미
  • Deployment : 개발자들의 변경 사항을 Repository에서 실제 사용자들이 사용가능한 프로덕션 환경까지 자동으로 릴리즈 하는 것을 의미

출처 : redhat.com

CI/CD는 파이프라인으로 표현되는 실제 프로세스를 의미하고 어플리케이션 개발에 지속적인 자동화 및 지속적인 모니터링을 추가하는 것을 의미

 

 

 

CI/CD 구축 경험 프로젝트는 아래 링크 !

 

[배포 자동화 구축 1] AWS EC2 인스턴스 생성하기

EC2(Amazon Elastic Compute Cloud) AWS의 클라우드 컴퓨팅 플랫폼으로 사용자가 가상 컴퓨터를 임대받아 그 위에 사용자가 만든 애플리케이션을 실행할 수 있음 클라우드의 가상서버(인스턴스)를 생성 AMI

shingme.tistory.com