article thumbnail image
Published 2022. 6. 18. 09:42

하나의 서비스를 개발하고 계속해서 운영및 관리해나가고자 할 때, 업데이트 사항을 매번 개발자들이 수동으로 빌드시켜 테스트한 뒤 배포 설정을 하게 된다면 반복적인 작업이 될 뿐만 아니라 상당히 많은 시간을 사용하게 됩니다.

이런 문제점을 해결하기 위해 나온 개념이 CI/CD입니다. 개발서비스 운영관리 문제점들을 해결하여 많은 시간을 투자하지 않더라도 기존 수동 방식보다 더 많은 업데이트, 수정 사항들을 적용시킬 수 있게 되었다고 할 수 있습니다

CI

CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)

새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있습니다.

CI가 나오기 전까지는 개발자들이 직접 개발한 코드들을 통합하고 컴파일 → 빌드 → 테스트,배포 과정을 거치게 되는데 코드에 문제가 있었다면 다시 컴파일 → 빌드, 테스트 과정을 진행하게 되고 이 과정을 재설정을 통해 실행하는데 많은 시간이 소모되어 업데이트하고 최신의 서비스를 제공하는 과정들이 어려웠습니다.

 

빌드, 테스트를 수행하고 저장소통합까지 실제 서비스를 문제없이 배포할 수 있도록 준비하는 과정

CD

CD는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)

항상 신뢰 가능할 때 배포될 수 있도록 관리하자는 개념으로 지속적인 제공으로도 사용되고 있습니다. 대표적으로 CI를 거친 코드가 빌드, 테스트 과정이 성공적으로 진행되었다고 할 때, 실제 서비스되는 저장소에 업로드되는 것, 통합을 의미하며 지속적인 배포는 저장소에 업로드 된 코드들을 실제 사용자가 이용할 수 있는 배포환경까지 실행하는 것을 얘기합니다

 

장소에 업로드 된 코드들을 실제 사용자가 이용할 수 있도록 배포하는 과정

간략화

자동화된 통합 ⇒ 제공 ⇒ 배포로 간략화 할 수있으며 각 과정의 출력된 결과물이 다음 과정의 입력으로 들어가는 방식인 파이프라인을 이름에 붙이기도 하며 주로 아래 이미지와 같은 과정을 거친다고 이해할 수 있습니다.

대표적인 CI/CD Tool

  • CircleCI
    • 직관적인 UI
    • 세팅하는게 크게 어렵지 않다
  • Jenkins
    • 별도의 서버 설치가 필요
      • AWS EC2를 거쳐.. VPC 설정 등 선행 지식이 많이 필요하고 설정이 어렵다
    • 저장소와 완전히 분리되어 있다
  • Github Action
    • 별다른 툴없이도 깃허브 저장소에서 바로 이용 가능(설치 간편)
    • Github 이벤트위주로 많은 언어와 프레임워크를 지원
  • Vercel
    • 배포, 설정 간단
    • 깃허브와 연동되어 Github 이벤트 설정이 가능

참고

'TIL > 개념정리' 카테고리의 다른 글

로그인 구현 방식  (0) 2022.06.25
Typescript  (0) 2022.06.23
CSS 레이아웃  (0) 2022.06.21
브라우저 저장방식  (0) 2022.06.20
Node.js , express  (0) 2022.06.19
복사했습니다!