CI/CD
환경을 구축하여 App
을 배포
해보는 것이 목적이다.
이를 위해 Jenkins
를 이용하여 앱을 빌드하고, AWS Code Deploy
를 이용해 배포하는 환경을 구축할 것이다.
본격적으로 시작하기 전에 CI/CD 파이프라인 구축을 위한 서비스들이 무엇이 있는지 살펴보고,
다음과 같은 솔루션들의 장단점을 분석하고자 한다.
별도의 회사였으나, GitHub
에서 인수하였다.(GitHub는 MS가 인수함)
오픈소스용 무료
travis.org와 Private Repo
를 위한 유료
travis.com을 별도로 운영하고 있고, 내용은 동일하다.
GitHub
와의 연동(그냥 깃허브 계정으로 로그인하며 된다.)YML
파일을 통한 쉬운 설정다양한
래퍼런스알아서
VM으로 호스팅해 줌독립
적(서로 간의 영향을 받지 않음)적음
비쌈
(기본: 69$/month, 일반: 129$/month)
GitLab 서비스에 내장되어 있다.
On-Premise
방식으로 설치하여 사용할 수도 있고, 웹
서비스로 사용할 수도 있다.
GitLab CI만 Runner
를 직접 호스팅하여 사용할 수 있는데, 이를 통해 고성능 혹은 서비스에 트고하된 환경에서 실행할 수 있다.
Runner
: repo로부터 소스코드를 받아 해당 스크립트를 돌리는 작업을 수행
GitLab의 경우shared runner
를 사용해서 계획적으로 돌릴 수 있다.
On-Premise 방식에서는 당연히 지원하고,
GitLab의 클라우드 서비스를 사용하는 경우에도, Runner만따로
운용할 수 있다.
GitLab
과의 손쉬운 연동Docker
컨테이너 기반이라, Docker 친화적임(Docker Repo 무료 제공)간편함
독립적
적음
모든
job에 대해 artifact를 정의 및 업로드/다운로드를 해야함
Java
기반의 오픈소스로 구성되어 있으며, CI계의 아버지
라 불린다.
제일 오래된 만큼 다양한 플러그인을 지원하며, 사용자도 관련 문서도 많이 존재한다.
무료
많은
사용자들을 보유하고 있고, 관련 문서가 다양
직접
해야하기 때문에 관련된 모든 부분을 관리할 수 있음작은
프로젝트의 경우, 설정하는데 리소스 낭비
가 발생할 수 있음직접
해야하기 때문에 서버 운영 및 관리 비용
이 발생CI/CD를 적용해야 한다는 생각에 제일 유명한 Jenkins
를 사용하려는 사람들이 많은것 같다.
하지만, Jenkins는 오래된 만큼 장단점이 확실한 솔루션임을 알고 사용했으면 좋겠다.
특히 Build Server를 직접 구매 및 운영해야 하기 때문에 발생하는 단점
이 생각보다 크게 다가오게 된다.
하나부터 열까지 전부 환경설정을 구축해야하며, 서버를 관리하는데 발생하는 비용이 낭비
가 될 수 있기 때문이다.
Jenkins를 사용할 때, 각종
방화벽
작업이나 서버의관리
및운용
등은 생각보다 많은 리소스를 요구한다.
따라서 규모가 크지않은 프로젝트거나, 외부 클라우드 서비스를 이용하는 상황등이라면 Jenkins말고 다른
서비스도 고려해볼 가치가 있다고 생각한다.
내가 글을 작성하는 이 블로그 또한 Travis
를 사용하여 간단한 CI/CD 형태로 빌드 및 배포하게 되어있다.
개발을 하면서 느끼는 거지만, 모든 일에 정답
은 없다.
상황에 맞게 최선
의 방법을 채택하여 가장 높은 효율
을 낼 수 있는 방안을 선택하는 것도 일류
개발자의 자질이 아닐까.
이 글에서는 언급하지 않았지만,
AWS
,CircleCI
등 수많은 다른 방법도 존재한다.