1. 다양한 CICD 플랫폼
CICD의 중요성이 많이 인지되고 대기업부터 스타트업까지 여러 기업들이 CICD 시스템을 도입함에 따라서 CICD 구축을 도와주는 CICD 플랫폼들도 다양해지고 있습니다. 예전에는 CICD 시스템을 구축하기 위해서 전담 엔지니어가 필요하는 등 고된 작업이었던 시대가 있었지만, 요즘은 간단한 설정만으로도 기본적인 CICD를 쉽게 구현할 수 있는 시대가 되었습니다. 가장 널리 알려지고 사용되고 있는 CICD 플랫폼들은 다음과 같습니다:
- Jenkins
- Travis CI
- Circle CI
- Github Action
각 CICD 플랫폼들에 대해서 간략하게 알아보도록 하겠습니다.
2. Jenkins
Jenkins는 CICD 플랫폼의 원조라고 할 수 있습니다. 처음에는 Hudson이라는 이름이었다가 오라클과 상표권에 대한 논쟁이 있던 것을 계기로 하여 Jenkins로 2011년 이름이 변경되었습니다. 한국에서는 Jenkins 할아버지로도 알려져 있는, 집사의 모습을 하고 있는 Jenkins logo도 유명합니다.
여담으로, Jenkins logo는 여러 다양한 버젼의 로고가 존재합니다. 한국 버전 Jenkins logo도 존재합니다. 한국 버전 Jenkins logo는 하얀 한복에 갓을 쓰고 있습니다. Jenkins community 사이트에서 다양한 Jenkins logo들을 확인하고 다운 받을 수 있습니다.
[그림 2-1] Jenkins 공식 로고
Jenkins는 self-hosting이 필요한 CICD 플랫폼 입니다. 즉, 우리가 직접 우리 서버에 설치하고, 설정하고, 운영도 해야합니다. 예전에는 Jenkins 설치와 설정 그리고 운영이 쉽지는 않았으나 요즘은 설치와 설정 부분은 예전에 비해 많에 간단해졌습니다. 운영도 기본적인 규모는 어렵지 않습니다만, 만일 규모가 큰 CICD 시스템을 운영하려면 난이도가 상당히 올라가긴 합니다.
웹서비스 운영과 동일하다고 생각하시면 됩니다. 서버 하나로 모든 load를 감당하지 못하면 여러 서버를 운영해서 load를 분산해야 하는데, 이런 분산 CICD 서버를 구축하는데에는 많은 작업이 요구됩니다.
Workflow 설정도 최신 CICD 플랫폼들보다는 난이도가 있는 편입니다. 요즘은 대부분 YAML 언어를 사용하여 설정하는데, Jenkins는 Jenkins만의 설정 언어가 존재하며, YAML보다는 난이도가 있는 편입니다. 요약하자면 Jenkins의 단점은 설치와 설정 그리고 운영의 공수에 있다고 할 수 있겠습니다.
하지만 Jenkins가 지닌 장점은 바로 우리의 환경과 수요에 맞는 CICD 구축이 가능하다는 점입니다. 우리가 직접 우리 서버에 설치하고 운영하다 보니 보안과 필요한 환경 구축, 작업 분산 처리등 우리가 필요한대로 구축이 가능합니다.
Jenkins UI도 단점이라면 단점일 수 있겠습니다. 아무래도 오래된 노장 플랫폼 이다 보니 요즘 나오는 CICD 플랫폼들의 UI보다는 구식의 느낌이 들긴 합니다. 그리고 오픈소스 이기 때문에 UI 측면에서 많은 업데이트가 되지는 않습니다.
그림 [2-2] Jenkins 콘솔 화면
그나마 개선안으로 기존의 UI 대신에 blue ocean이라는 UI를 설치할 수 있습니다. 기존 UI보다는 나아졌지만 여전히 요즘 CICD 플랫폼들 보다는 디자인적 우위를 누린다고 말하기는 어려울것 같습니다.
그림 [2-3] Jenkins Blue Ocean 콘솔 화면
3. Travis CI
Travis CI는 github에서 쉽게 사용할 수 있는 CICD 플랫폼 입니다. Travis CI는 CICD 업계 최초로 오픈 소스일 경우 무료로 github에서 사용 가능하도록 하면서 굉장히 유명해진 케이스입니다. 당시에 오픈 소스 활동히 굉장히 활발하게 인기를 얻을 때였으므로 Travis CI도 같이 많은 인기를 끌게 되었습니다.
Travis CI는 Jenkins 처럼 직접 운영하는것도 가능은 하지만, 대부분은 github와 연동해서 클라우드 서비스 형태로 사용합니다. 즉, 우리가 서버를 직접 운영하지 않고, 설정만 해두면 Travis CI가 본인들의 서버에서 대신 실행해주고 운영해주는 것입니다. Travis CI부터 CICD가 클라우드 서비스 형태로 많이 발전되기 시작했습니다.
그림 [3-1] Travis CI 콘솔 화면
Jenkins와 비교했을때 Travis CI의 장점은 바로, 설치와 설정 그리고 운영의 공수가 거의 들지 않는다는 것입니다. 클릭 몇번과 간단한 설정으로 곧바로 github에 연결되어 바로 사용이 가능합니다. 물론 비용을 내야 하지만 규모가 크지 않다면 크게 부담은 없는 비용입니다. 물론 사용 규모가 커질 수록 비용이 높아지니 유의해야합니다.
단점은, 클라우드 서비스 형태로 사용해야 하다 보니 기본적인 케이스가 아닌 복잡한 빌드 및 테스트 환경 이나 workflow 구축에는 제한이 있다는 것입니다. Jenkins의 경우 우리가 직접 서버를 운영 하기 때문에 우리가 직접 서버의 환경을 다 구축할 수 있지만, Travis CI의 경우 우리가 서버에 직접 접속 할 수 없으므로 우리가 필요한 환경들 구축에 어려움이 있을때가 있습니다. 좋은 예가 바로 데이터베이스 설치 혹은 접속입니다. unit test를 실행하기 위한 데이터베이스를 설치 및 시작해야 하는 경우가 많은데, 우리가 원하는 데이터베이스 종류나 데이터베이스의 버젼을 Travis CI가 지원하지 않는 경우에는 우리가 직접 설치 가능해야 하는데, 이런 부분을 해결하려면 작업 난이도가 많이 높아집니다.
또한 우리의 데이터베이스에 접속하게 하는것도 쉽지 않습니다. 데이터베이스의 경우 접속이 가능하기 위해서는 VPN등 private한 접속을 해야하는데 해당 설정을 Travis CI의 설정 범위내에서 하는것또한 난이도가 높습니다. 개발을 하다보면 이러한 케이스가 상당히 자주 있기 때문에, 설정 및 운영이 쉽다는 이유로 선택했다가 나중에 작업량과 그 난이도가 증가하는 경우가 발생할 수 있습니다.
4. Circle CI
Circle CI는 Travis CI와 유사한 서비스입니다. Travis CI와 마찬가지로 클라우드 기반의 서비스로서, 비용만 지불하면 아주 간단하게 설정 및 실행이 가능합니다. Travis CI와 마찬가지로 규모가 작을때는 비용도 크게 부담가지 않는 수준 입니다. Travis CI와 상당히 유사하기 때문에 사실 Travis CI 대비 크게 차이점이 있다고 보기가 어려울 것 같습니다. 아마 UI의 차이가 가장 큰 차이이지 않을까 합니다. 장단점도 Travis CI와 동일합니다. 설치와 설정 그리고 운영의 공수가 거의 들지않는 반면에 Circle CI가 지원하는 환경이나 설정등 외에 경우를 구축하려면 작업 난이도가 높아집니다.
그림 [4-1] Circle CI 콘솔 화면
5. Github Action
Travis CI와 Circle CI는 둘다 github의 혜택을 많이 본 케이스 입니다. Github에서 손쉽게 바로 설정 및 사용 가능하게되어 많은 인기를 얻었습니다. 그러자 Github가 위기감을 느꼈나 봅니다. 두 플랫폼에 대응하여 Github Action이라는 서비스를 출시함으로써 사용자들로 하여금 Travis CI와 Circle CI를 대체할 수 있게 했습니다. 게다가 Github에서 직접 내놓은 서비스이므로 UI조차 Github 내에서 모두 확인할 수 있다는 까닭에 Travi CI와 Circle CI보다 더 편리한 CICD 서비스로 자리매김하였습니다.
그림 [5-1] Github Action 콘솔 화면
비용도 저렴하고 많은 부분 무료로 사용이 가능합니다. 고객 입장에서는 Github내에서 모든걸 다 해결 할 수 있고, 비용도 여러 업체에게 내는게 아니라 github에게만 내면 되기 때문에, 비용 관리 측면에서도 편리해졌다는 장점이 있습니다. 기능이나 성능 측면에서도 Travis CI나 Circle CI에 뒤지지 않고 오히려 더더욱 강화되는 부분도 많아지고 있습니다. 이러한 이유로 Github Action가 클라우드 기반의 CICD 서비스 중에는 현재 많은 인기를 빠르게 얻고 있습니다.
'Cloud Service > AWS 공부' 카테고리의 다른 글
Git flow & Rebase (참고) ** (0) | 2023.10.28 |
---|---|
[CICD] Github Action으로 CICD 구축하기 4) (0) | 2023.10.28 |
[CICD] CICD의 개념 및 동작원리 2) (0) | 2023.10.28 |
[CICD] CICD는 언제, 왜 필요할까? 1) (0) | 2023.10.28 |
[AWS] ALB - [Network] Nginx를 사용한 Load Balancing 적용** (0) | 2023.10.28 |