들어가기에 앞서
Aws와 Spring Boot ,S3...등등으로 CI/CD 구축을 했지만 정확히 알고 있지 않으면 커스텀하기가 어렵다고 생각이 들었다 그래서 차근차근 시작부터 정리해보기로 한다
CI/CD란 무엇인가?
제일 큰 키워드는 자동화!라고 생각한다
CI는 Continuous Intergration의 약자로 지속적 통합을 의미한다
- 개발자들은 Branch들을 main -> develop -> feat~ 형식으로 여러가지로 쪼개서 작업을 한다 그러면 당연히 merge를 한다
그러한 이벤트가 발생할때 코드들을 자동으로 빌드 및 테스트해서 merge시킨다 일일히 테스트할 필요도 없고 이 코드가 틀렸나 생각할 필요 없다
CD는 Continuous Delivery/Deployment의 약자로 지속적 제공/배포라는 의미이다.
CI에서 빌드, 테스트가 끝난 코드들이 저장소에 저장되면 자동으로 배포되게 한다.
즉 문제가 없다 -> 자동배포 이런 느낌이다
이해하기 쉽게 예제를 들어서 설명하자면
자동차에 시동을 걸어 문제를 확인하고 문제가 있다면 어떤 문제인지 확인하고 고쳐볼려고 하지만
CI는 자동차 키가 없다 그냥 문에 손만대면 자동차가 잘 돌아가는지 검사해준다
=> 프로그램이 돌아가는데 문제점이 있나 없나를 자동으로 검사하는 것이다
그리고 만약 시동에 문제가 없다면 CD로 자율주행으로 원하는 곳 까지 간다
=> 저장소에 push만해도 서버에 자동으로 올라가서 실행된다
CI/CD를 위한 Tools
종류는 많지만 3가지 정도만 비교해보겠습니다
젠킨스
장점
- 사용자 많음
- 다양한 플러그인 제공
단점
- 설치형으로 AWS EC2를 사용한다면 젠키스만을 위한 인스턴스 따로 필요 (프리티어라면 인스턴스를 두개사용?!)
- 플러그인 세팅이 복잡
- 자체 관리 필요
깃허브 액션
장점
- github와의 빠른 연동성
- 복잡하지 않음
단점
- Public은 무료지만 private 설정에 따라 요금 발생 가능성 있음
트래비스
장점
- 젠키스와 유사한 기능을 가짐
- 초기 구축에 시간과 리소스가 드는 단점 보완(젠키시 보다 초기 구축이 좋다)
단점
- Public은 무료지만 private은 유료
'CI & CD' 카테고리의 다른 글
[CI/CD] Github Actions으로 Spring Boot CI하기 (0) | 2023.03.27 |
---|