배포)CI/CD 툴

김태성·2024년 8월 25일

개인 프로젝트-1

목록 보기
26/53
post-thumbnail

레퍼런스 : https://blog.jetbrains.com/teamcity/2023/07/best-ci-tools/

믿을만한 자료가 필요해서 jetbrains에서 제공하는 설문을 참고했다.

(CI systems 이라고 말했지만 CI/CD 통합이다.)
사실 여기 중에서 내가 들어본건 GithubAction / Jenkins / Azure / AWS CodePipeline 4개 뿐이었다.
그마저도 Azure는 프로젝트 팀원이 써보고 싶다고 여러번 말해서 들어본 것이었고,
AWS는 기능이 하도 많아서 이름만 들어봤을뿐, 이게 CI/CD 툴인것도 몰랐다.
이중 내가 쓰려는것과 이유를 알아보자.

GithubAction

사실 이건 내가 Github 에 Repository를 쓰고 있기 때문에 선택의 여지가 없다고 생각했다.
돈도 안들고(요금제가 있긴한데 모든 상황에서 내는게 아니다), 연동되어 관리도 편하다.

레퍼런스 : https://docs.github.com/ko/actions/about-github-actions/understanding-github-actions

방법도 생각보다는 간단했다. 워크플로우를 작성하면 알아서 다 해주고

시각화 정보도 보여줄 뿐만 아니라 Repository에 배포에 문제가 있는지 표시도 붙여주며,
공식문서도 다양한 방법에 여러 경우를 상정하여 문서를 잘 만들어 놓았다.

Jenkins

레퍼런스 : https://www.jenkins.io/doc/
공식 문서이다. Jenkins를 어떻게 사용해야 하는지, 파이프라인을 까는 법 등 상세하게 나와 있다.

내가 젠킨스에서 마음이 들었던 부분은 플러그인이다.

Jenkins 공식 사이트에서 플러그인 검색을 써봤는데 진짜 별별게 다 들어있다.
docker, aws, gradle, 심지어 java, github 등등 내가 원하는건 다 들어있다고 보면 된다.

이 플러그인이 뭔가 하니

Plugins are the primary means of enhancing the functionality of 
a Jenkins environment to suit organization- or user-specific needs

즉 개발자들이 개발을 하다가 아 화나네? 하면 플러그인 새로 만들어서 기능을 편하게 해준다는 것이다.

또한 레딧 구글링하다가 발견한건데
'니가 하려는거 99퍼는 이미 5000번 했고, 그중 500개는 stackoverflow에 있음' 이라고 한다.
정말 많은 사람들이 Jenkins를 활용하고 있고, 기능도 다양하며 유지보수까지 되니
어떤 CI/CD가 좋은지 모른 나의 입장에서는 최선은 몰라도 망하진 않을 선택이라고 본다.

java21 호완성도 되는 모습이다.
Docker를 사용해야 된다.
레퍼런스 : https://aws.amazon.com/ko/docker/
AWS에서도 Docker 사용을 권장하고 있다.
EC2에 올리는 Docker인지, 새로운 서비스 인지는 불분명하지만 EC2에 올릴 수 있다는건 확인 되었다.
뿐만 아니라 로드밸런싱 할때도 Docker가 효과적이어서(아직 정리되진 않음) Docker는 꼭 사용할 예정이었다.

어쨌든 이러한 Jenkins를 활용하여 배포를 진행할 예정이다.
현재까지의 생각으로는, EC2 안의 Docker에 배포가 진행될 예정임으로,
CI는 GithubAction으로, CD는 Jenkins로 하려고 한다.

레퍼런스 : https://safeti.medium.com/mastering-ci-cd-github-actions-vs-jenkins-5e619c5cbf3b

그 이유는 위의 레퍼런스가 컸다.
위의 글에서 보이듯, complementary(상호보완적)이라는 말이 쓰인다.
Github는 리포지토리와 잘 연결되어 있고
Jenkins는 복잡하고, 개인이 설정 가능한(Customized) 파이프라인을 사용할 수 있다.

그러니 Github에서 코드를 쉽게 보낸 후 Jenkins에서 다양한 기능을 구현하기 편하다 라고 해석할 수 있다.

실제로 Jenkins를 처음 알았을때 들었던 말이
'자동 배포하면서 결과가 어떤지 slack으로 알려준다 카더라'라는 것이었다.
물론 GithubActions로도 가능은 하지만, 그만큼 Jenkins가 유연한 프로그램이라는 것을 의미한다고 생각한다.





생각보다 정보 찾는게 힘들었다.
자동화/배포 과정이 정형화 되어 있어서 그런진 몰라도
대부분의 블로그들이 CI/CD 하는 과정~ 이렇게 적어놓은게 많았다.
영어권 레퍼런스도 뭔가 직관적이지 못하고 두루뭉실한 설명이 많았다.

내일부터는 본격적인 배포를 시작해야 겠다.
코드정리/리턴값 확인 등을 해보자.

profile
닭이 되고싶은 병아리

0개의 댓글