오늘은 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 과정에서 생성된 신뢰할 수 있는 애플리케이션을 실제 상용 환경에 자동으로 배포하는 것을 의미합니다.
CI / CD 툴은 무엇이 있을까요?
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 부터 사용하시는 것도 나쁘지 않을 것이라고 생각합니다.