CICD

Continuous Integration & Continuous Deployment(CI/CD)

Flambee 2021. 7. 17. 22:24

 오늘은 CI(Continous Integration : 지속적인 통합) / CD(Continous Deployment : 지속적인 배포)에 대해서 글을 써보려고 합니다.

 

지금부터 

  • CI(Continous Integration : 지속적인 통합) / CD(Continous Deployment : 지속적인 배포)CI/CD
  • CI(Continous Integration : 지속적인 통합)CI
  • CD(Contious Deployment : 지속적인 배포)CD

로 말하도록 하겠습니다.

 

CI/CD 가 무엇일까요?

CI/CD 그림

 CI / CD란 배포하는 과정을 자동화해 시스템을 안정적으로 운영하는 데 쓰이는 개념입니다.

 

 위 그림과 같이, CI는 개발자가 코드를 커밋을 했을 경우, 애플리케이션이 자동 빌드되며, 테스트를 통하여 배포할 수 있는 애플리케이션인지 확인하며, CDCI 과정에서 생성된 신뢰할 수 있는 애플리케이션을 실제 상용 환경에 자동으로 배포하는 것을 의미합니다.

 

CI / CD 툴은 무엇이 있을까요?

https://www.katalon.com/resources-center/blog/ci-cd-tools/

 CI / CD 를 도입하는 대부분의 애플리케이션은 툴(tool)을 이용합니다.

 

 CI / CD 툴에는 대표적으로 TeamCity, Github Actions, Bamboo, Jenkins, circleci 가 있습니다. 

 

 이 중에서 TeamCity / Github Actions, Bamboo, Jenkins에 대해서 짧게 설명하도록 하겠습니다.

 

TeamCity

  • JetBrains에서 만난 CI/CD 툴 (JetBrains에서 만든 대표적인 툴로써는 Intellij가 있습니다.)
  • Kotlin DSL을 사용하여 스크립트 언어를 작성할 수 있음.
  • UI가 잘되어 있음.
  • 에이전트 3개, 빌드 작업 100개를 무료로 사용 가능 하지만, 이후 유료 결제를 해야 합니다

GitHub Action

  • Github에서 지원하는 워크플로(WorkFlow) 기반의 CI/CD 툴
  • 깃허브에 저장한 소스 코드를 자동 분석한 결과를 기반으로 깃허브 액션이 추천하는 워크플로를 구성하여 사용
  • 무료로 사용하기 위해서는 깃허브 저장소를 공개를 해놔야 하며, 사용 시간은 매달 2000분입니다.

Bamboo

  • Atlassian에서 만든 CI/CD 툴
  • 사용자의 서버에 설치하여 사용
  • Atlassian에서 만든 협업 툴과 같이 사용하면 포퍼먼스 증가
  • 유료.

Jenkins

  • 오픈 소스 CI / CD 도구
  • 사용자의 서버에 설치하여 사용
  • 직접 UI에서 작업을 구성하거나 작업 순서를 정의할 수 있습니다.
  • 많은 회사 및 사람들이 사용하기 때문에 접근하기가 쉬우며, 플러그인을 통하여 툴을 확장시킬 수 있습니다.
  • 오픈 소스이기 때문에 무료

 

그 외 여러 가지 툴이 있지만, 다 설명하기가 힘들고, 각각 지금도 CI / CD 툴이 새로 나오고 있는 상황입니다.

 

 그럼 CI / CD 툴은 무엇을 사용해야 하나요?

CI / CD을 도입하고, 툴을 선택하는 순간이 온다면 CI / CD 툴의 장단점을 체크하여 사용하시면 되겠습니다.

 

제 생각에는 만약 CI / CD를 일단, 도입해보자는 목적이 있다면, 오픈소스인 Jenkins 부터 사용하시는 것도 나쁘지 않을 것이라고 생각합니다.

 

 이만 글을 끝마치도록 하겠습니다. 읽어주셔서 감사합니다! 저는 요가하러 가보도록 하겠습니다~