개발일반/도대체

도대체 CI/CD는 뭘까?

문괜 2023. 12. 19. 10:00
반응형

백엔드개발뿐만 아니라 많은 개발에 있어 CI/CD라는 표현을 자주 들어 봤을 것이다. 그런데 CI/CD는 정확히 어떤 걸까?

 

기본적으로 CI/CD Software Engineering에서 주로 사용되는 표현이다. 개발과정과 운영방식에 대한 방법론적인 표현으로 CI/CD자체는 어떤 개발툴이나 개발언어를 지칭하는 것이 아니다. 즉, 안 지킨다 해서 개발을 못하고 그런 건 아니다.

 

하지만, 우리가 개발한 Application의 유지 관리와 개발 그리고 개선하는 입장에서 필요한 상식이다.

 

CI/CD는 Continuous Integration/ Continuous Deployment의 약자로 지속적인 통합 지속적인 배포를 뜻한다. 

즉, Application을 만들고 해당하는 기능들을 지속적으로 통합하고 통합한 내용을 지속적으로 배포하는것을 의미한다.

 

CI(Continuous Integration) 지속적인 통합

지속적인 통합에는 Monitor - Plan - Code - Build - Continuous Testing 순서로 진행된다.

 

팀 혹은 개인이 현재 개발된 혹은 개발 단계에서의 수요 파악을 통해 개발 방향을 설정하는 게 Monitor과 Plan이다. 

그리고 계획에 맞춰 실질적으로 개발하는 것이 Code와 Build이다.

 

마지막으로 개발된 내용들 혹은 수정된 부분들을 배포전 테스트를 진행하는 게 Continuous Testing이다.(주로 배포환경에 맞춰 테스트를 진행한다.)

 

CD(Continuous Deployment) 지속적인 배포

지속적인 배포에서는 Continuous Testing - Release - Deploy - Operate - Monitor 순서로 진행된다.

 

위에서 Testing을 통과하면서 바로 시행되는 게 Release, Deploy, Operate이다.

Release와 Deploy가 같아 보일 수 있는데 개발의 입장에서 보면 확실히 다른 부분이 있다. Relase의 경우 개발한 Application을 사용 가능하도록 만드는 것이고 Deploy 같은 경우 Release 된 내용을 실제로 배포환경에 적용시키는 과정이다. 그래서 Application을 사용가능하게 업로드하는 게 Release고 업로드된 Application을 배포환경에 다운로드하는 게 Deploy고 마지막으로 설치된 Application 작동하는 게 Operate이다. 그리고 우리가 흔히 말하는 Jenkins, Github Action, Code Deploy들이 Release와 Deploy 그리고 Operate을 담당한다. 

 

이 과정이 끝나고  이제 Monitor를 통해서 특정 기능이 수정이 필요 없는지 개선사항이 없는지 확인한다.

 

마지막으로 위의 한 사이클을 지속적으로 반복해 주는 것이 CI/CD 방식의 개발인 것이다. 이러한 개발방법이 절대적으로 좋다는 아니지만 Application이나 서비스를 안정적으로 운영하고 개선해 나갈 수 있는 좋은 방법 중 하나이다.

 

그럼 도대체 자동배포는 어떤 툴을 써야 할까?

 

참조

What is CI/CD and How Does It Work?

 

What Is CI/CD and How Does It Work? | Synopsys

Continuous integration (CI) is practice that involves developers making small changes and checks to their code. Due to the scale of requirements and the number of steps involved, this process is automated to ensure that teams can build, test, and package t

www.synopsys.com

The difference between deployments and releases

 

The difference between deployments and releases

Why you should think of deployments and releases as separate events.

octopus.com

* 항상 정확한 정보를 드리고 싶지만 실수가 있을 수도 있습니다! 

* 실수를 찾게 되거나 질문이 있으시면 댓글 달아주세요!!

반응형