JUINTINATION

CI/CD(지속적 통합/지속적 배포)란? 본문

Amazon Web Services

CI/CD(지속적 통합/지속적 배포)란?

DEOKJAE KWON 2024. 7. 19. 01:48
반응형

어느새 지금 읽고 있는 책의 마지막 목차를 지나고 있다. 그래서 마지막 실습을 진행하기 전에 CI/CD가 무엇인지에 대해 간단하게 먼저 정리해 보고 넘어가 보려고 한다.

 

클라우드 서비스 개발자를 위한 AWS로 구현하는 CI/CD 배포 입문 - 예스24

이 책은 신입 개발자부터 실제 서비스 구축 경험이 없는 모든 개발자를 위한 클라우드 서비스 개발 실무 밀착형 입문서! 이 책은 깃허브에 이미 구현된 코드와 예시와 함께 자세히 설명되어 있

www.yes24.com

CI/CD

  • CI: 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다.
    • CI를 성공적으로 구현할 경우에 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 레포지토리에 통합되므로, 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
  • CD: 지속적인 서비스 제공(Continuous Delivery) 또는 지속적인 배포(Continuous Deployment)를 의미한다.
    • 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만, 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다.

A 로컬 컴퓨터의 프로젝트와 B 로컬 프로젝트의 통합을 한다고 가정했을 때, 안전한 코드인지 프로젝트 테스트 과정을 거치는 검증  과정이 필요하다. 검증이 성공적으로 끝나면 빌드를 진행해야 하며, 이후에 빌드 된 실행 파일을 실제 서버에 올려 서비스해야 한다. 이러한 CI/CD를 구현하는 방법에는 크게 2가지가 있다.

폴링(polling) 기법

간헐적인 시간을 두고 계속해서 request 요청을 통해 코드의 변화가 있는지 물어보는 것을 폴링(polling) 기법이라고 하며, 대표적으로 폴링 기법을 사용하는 CI/CD 도구에는 Travis가 있다.

  1. 중간에 서버를 하나 만든 다음, 깃허브와 같은 형상관리 툴에 계속해서 request 요청으로 코드가 push 되었는지 물어본다.
  2. 코드의 변화가 감지되면 코드를 다운받는다.
  3. 해당 코드의 단위 테스트와 통합 테스트를 진행한다.
  4. 테스트에 성공하면 빌드한다.
  5. 빌드가 끝나면 배포할 서버로 코드를 전달한다.

폴링 기법을 사용하여 중간 서버를 만들 수도 있지만, 이는 계속해서 request 요청을 하며 물어봐야 하니까 서버 입장에서 힘들 수 있다. 그래서 다음과 같이 깃허브에서도 제공해 주는 웹훅 서비스를 많이 사용한다.

웹훅(Webhook) 기법

폴링 기법과 하는 일은 똑같지만, 깃허브의 특정 Repository에 코드가 push 되면 자동으로 특정 브랜치에 소스코드가 업로드 되었을 때 업로드되었다는 이벤트를 전달해 주는 역할을 하는 hook을 날려준다. 이때 hook을 받으면 똑같이 코드를 테스트 서버로 내려받고 테스트에 필요한 프로그램을 설치한 뒤 테스트를 하고 프로젝트를 빌드하여 AWS에 전달해준다. 대표적으로 웹훅 기법을 사용하는 도구에는 Jenkins가 있다.


결론

간단하게 CI/CD가 무엇인지와 이를 구현하는 방법 2가지를 정리해보았다. 사실 마지막에 GitHub Actions에 대해서도 정리해보려고 했는데 이에 대한 설명은 깃허브 공식 문서에 잘 나와 있어서 참고하면 될 것 같다. 물론 이 글의 내용도 책에 있는 내용을 그냥 정리한 것 뿐이지만.. 아무튼 다음에는 GitHub Actions를 이용한 CI/CD 관련 실습을 할 예정이니 관련 내용도 정리할 수 있으면 해보도록 하겠다.

728x90
Comments