[DevOps] - CI/CD

chancehee·2023년 10월 6일

DevOps

목록 보기
1/2
post-thumbnail

[ CI : 지속적 통합 ]

코드를 커밋하고 빌드했을 때, 정상적으로 작동하는지 반복적으로 검증해 애플리케이션의 신뢰를 높이는 작업

[ CD : 지속적 배포 ]

CI과정에서 생성된 신뢰할 수 있는 애플리케이션을 실제 상용 환경에 자동으로 배포하는 작업

[ CI/CD : 지속적 통합/지속적 배포 ]

실무적인 환경에서 변경 사항을 계속 추적해 좀 더 안정화된 애플리케이션을 만들고, 이를 배포하는 과정을 자동화해 시스템을 안정적으로 운영하는 데 가장 많이 쓰이는 개념

[ 컨테이너 환경에서의 일반적인 CI/CD ]

  1. 깃허브 등의 저장소에 저장해 둔 애플리케이션 소스 코드를 내려받아 도커 컨테이너 이미지로 빌드
  2. 빌드한 컨테이너 이미지를 쿠버네티스에서 사용할 수 있도록 레지스트리에 등록
  3. 레지스트리에 등록된 이미지를 기반으로 쿠버네티스 오브젝트를 생성
  4. 생성한 오브젝트를 외부에서 접속할 수 있도록 서비스 형태로 노출

이런 과정을 파이프라인이라고 한다.
기존에는 파이프라인을 사람이 하나하나 수작업으로 진행했지만, 현재는 도구를 사용해 자동화

[ CI/CD 도구 비교 ]

Teamcity

  • Jetbrains에서 만든 CI/CD 도구로, Kotlin을 기반으로 만든 Kotlin DSL이라는 스크립트 언어로 작업 구성 가능
  • 에이전트 3개와 빌드 작업 100개 무료 (더 많은 에이전트를 사용하려면 유료 결제 해야 함)

Github Action

  • 깃허브에서 지원하는 워크플로 기반의 CI/CD 도구
  • 깃허브 저장소에 소스 코드를 공개할 경우 무료
  • 한 달에 2000분이라는 제한 시간 존재 (추가로 사용할 경우 분 단위의 요금 별도 부과)

Bamboo

  • 아틀라시안에서 만든 CI/CD 도구로, 유료
  • 아틀라시안에서 만든 다른 협업 도구를 사용 중일 경우 연계해 사용하기 좋음

Jenkins

  • 역사, 인지도, 사용자 수에서 CI/CD 도구의 대명사라고 불림 → refer 많음
  • 오픈 소스 CI/CD 도구로, 무료
  • 사용자가 직접 UI에서 작업을 구성하거나 작업 순서를 코드로 정의할 수 있음

위 도구 외에도 Agro, CodeDeploy 등 다양한 CI/CD 도구 존재

참고 자료

0개의 댓글