어려울 거 없어요~ 어려운 말로 번드르르 읽지말고 함께 쉬운 말로 정리해보아요~
CI
지속적인 통합, 즉 Git에 수정한 내 새로운 코드를 합친다는 뜻입니다 ^^ 이를 빌드한다(배포 파일을 만든다~)고도 할 수 있겠지요~
CD
지속적인 배포. 바뀐 내용을 사용자에게 제공(배포)한다는 뜻입니다~ 자동화된 CD는 '무중단 배포'를 의미합니다.
CI가 자동화되기 전에는 개발자들이 한땀한땀 Githup 레포지토리에 수정한 코드를 커밋하고, 푸쉬하고, 브랜치를 머지해야했답니다. 자동화 적용안하고 직접 git 관리하는 회사는 지금도 많지만요~
CD가 자동화되기 전에는 개발자들이 직접 tomcat(서버) 끄고, .war파일(배포할 코드파일) 바꾸고, tomcat 올리고, 로그 모니터링하는 과정을 거쳤지요~
여기에 많은 시간과 신경씀...이 들어가다보니 야 이거 알아서 코드 합쳐주고, 코드 배포해주는 거 좀 만들어보자. 하는 아이디어가 나왔답니다~
자동화된 CI는 어떻게 동작하나요?
- 개발자가 코드를 작성하여 Git 같은 공유 저장소에 변경 사항을 커밋합니다.
- CI 서버는 저장소를 모니터링 하고 있기 때문에 (1)번을 눈치챕니다.
- 변경 사항을 통합(merge)하고 테스트 코드에 따라 테스트를 수행합니다.
- 배포 가능한 아티팩트(배포 파일^^)를 생성합니다.
- 개발자에게 완료됐음을 알립니다^^
대표적으로 Travis, Jenkins, AWS amplify가 있는데요.
이들을 비교해볼게요~
Travis CI
깃헙에서 제공하는 무료 오픈소스입니다. 깃헙, 깃랩에서 사용이 가능하고요.
개발자가 특정 레포지토리에 코드를 커밋하면 Travis는 코드를 가져와 빌드하고 테스트 스크립트를 실행합니다.
Travis CI/CD가 아니라 Travis 'CI'라는 이름에서 알 수 있듯이 배포를 위해서는... 다른 툴을 사용해야합니다 ^^ (AWS code deploy 등)
프로젝트에 적용하기가 아주 쉽다고 합니다. ~.yml 파일로 셋팅할 수 있습니다 ^^ (사견이지만 yml파일이라는 이유로 셋팅이 쉽다는 건 정말 헛소리 같아요^^)
오픈 소스 프로젝트는 무료, 상업 프로젝트는 유료이다.
Jenkins
- CI/CD 모두 가능하다. 더해서 Spring 배치 작업에도 사용이 가능합니다(스케쥴링 이용 가능)
- 또 Jenkins는 java 기반 도구입니다. 그래서 JRE 위에서 굴러가지요~
- Travis에 비해서 정교한 설정 들이 필요합니다. 이는 다시 말해 엄밀한 커스터마이징이 가능하다는 뜻이지요. 장점이자 단점입니다 ^^ Tomcat에 좀 능숙해야 쉽게 쓸 수 있을 듯~
- 무료입니다.
AWS Amplify
CI와 CD를 모두 제공한다. 이를 위해서는 Route53의 도메인이 필요하다고함...?
cloudfront + S3 등 총합 패키지로 이거 하나로 인프라 구축을 끝내버리겠다...!!!!!! 는 의미에서 유용한듯...
그러나 짧은 개발 인생 되돌아 볼 때 all in one으로 다 처리해준다는 건.. 결국 이게 망가지면... 원인을 알아내기도 힘들 뿐더러(모두 자체 패키지 안에서 놀고 있으므로..) 개노답 크러쉬가 들이닥친다는 것이니까요... 좋은걸지...
12개월 무료 후 사용량 따라 요금 부과 (AWS free tier) https://aws.amazon.com/ko/amplify/pricing/
Github Actions
클라우드 설치로 별도의 설치과정 필요 x
yaml 파일로 셋팅이 가능하며 배포 파이프라인을 신경 쓸 필요가 없다
이벤트를 기반으로 직접 원하는 Workflow를 만들 수 있습니다.
Workflow는 Runners라고 불리는 Github에서 호스팅 하는 Linux, macOS, Windows 환경에서 실행된다. 그리고 이 Runners를 사용자가 직접 호스팅하는 환경에서 직접 구동시킬 수도 있습니다.(self-hosted runner)
Github 마켓 플레이스에는 여러 사람이 공유한 Workflow는 찾을 수 있으며, 자신이 직접 만들어서 공유할 수도 있습니다.
CI 툴 점유율
JetBrain에서 2023년에 발표한 CI툴 사용 순위이다.
Jenkins가 52%
Travis는 10%
amplify는 아예 없네...? 왜지..,.?
참고 url
https://velog.io/@userhwseo/%EC%82%AC%EB%82%B4-CI-CD-%EB%8F%84%EC%9E%85%EA%B8%B0 // jenkins 도입기
https://www.guru99.com/ko/jenkins-vs-travis.html // travis vs Jenkins
https://jindevelopetravel0919.tistory.com/267 // amplify 배포 정리
https://yonghwankim-dev.tistory.com/m/594 // Travis CI와 AWS S3, Code Deploy 연동하기
https://velog.io/@swchoi0329/Travis-CI-%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94
'【 개발 이야기 】' 카테고리의 다른 글
(2) 로컬 프로젝트 깃헙 올리기 (feat. github organization, token, 깃헙에 잘못 올린 프로젝트 삭제하고 다시 올리기) (0) | 2024.09.16 |
---|---|
(1) 스프링부트 프로젝트 셋팅에 따른 자바 버전 선택 (0) | 2024.09.15 |
호스팅 뜻, AWS Amplify, S3, EC2 특징 정리 (4) | 2024.09.11 |
[github] organization (0) | 2024.09.05 |
[intelliJ] junit 같은 인텔리제이 내 자바 실행기 (0) | 2023.10.24 |