프로그래밍(Basic)

[바미] CI/CD 그리고 젠킨스

Bami 2023. 1. 12. 08:00
728x90
반응형
728x170

CI/CD?

CI : Continuous Integration
CD : Continuous Delivery / Continuous Deployment

CI/CD는 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법을 의미합니다.

 

이러한 것을 하기 위한 툴로 젠킨스(Jenkins)라는 것을 사용합니다.

 

젠킨스? 

쉽게 설명하면 빌드를 자동화 해주는 툴입니다. 따라서 빌드를 자동화 시키기 위해 사용합니다.

 

빌드(Build)란?

빌드는 서버에 올릴 수 있는 상태로 만드는 것을 빌드(Build)라고 합니다.

서버에 올려서 사용자가 사용 할 수 있게 하는 것은 배포(Deploy)라고 합니다.

 

예를 들어 SpringBoot 어플리케이션을 쿠버네티스에 배포하는 경우 먼저 Maven이나 Gradle로 빌드를 해서 .jar이나 .war를 만든 후 Docker빌드를 해서 Docker Image를 만듭니다. 그 후에 k8s에서 .yml파일에 이미지 버젼이 바뀐것을 반영하게 되죠.

왜 Build를 자동화 해야하는가?

빌드는 하루에 한번을 할 수도 있고 안할수도 있지만 1주일, 1달로 따지면 꽤 많이 합니다.

그리고 이게 1년이면 꽤 많은 시간이라고 할 수 있습니다.

 

예를들면 옛날에는 자바를 빌드 할 때 javac라는 커맨드를 직접 사용 했지만 지금은 IDEA를 이용하면 main()메소드를 실행했을 때 javac를 하고 java가 실행이 됩니다.

이렇게 반복되는 과정은 버튼 하나 또는 단축키로 자동화 시킬 필요가 있습니다.

 

왜냐하면 이 작업을 하는데도 집중력, 긴장감 등이 소모 되기 때문입니다. 그리고 빌드는 시간이 꽤 걸리는 작업인데(30초 이상 걸림) 빌드를 실행 시키고 나서 빌드가 될 때까지 기다리는 시간도 모아보면 엄청 길 것입니다.

 

개발자의 시간은 소중하기 때문에 최대한 반복작업은 자동화 할 필요가 있습니다.

 

저도 수동으로 빌드를 5개월쯤 하니 자동화를 안시킬 수가 없었습니다. 수정하고 빌드하고 dev에 올리고 하는데 너무 시간을 많이 잡아먹기 때문입니다.

 

그래서 위에 소개한 젠킨스라는 툴을 사용하는데요.

문제는 젠킨스를 쓰려면 젠킨스 서버를 띄워야 합니다. 요즘은 그나마 많이 비교적 쉬워져서(비교적 쉬운거지 절대 쉽다는게 아님) 띄울만 해졌는데 전에는 너무 어려웠습니다.
AWS에 EC2띄우고 젠킨스 받아서 띄우면 되는데 초보자에게는 선행 지식이 많이 필요합니다. AWS에 띄울려면 VPC, Security Group, IAM등에 대해 알아야 합니다. 모르면 서버가 띄워도 접근을 못하는 안타까운 일이 벌어집니다.
이런 어려움에도 불구하고 젠킨스를 도입하려고 문서 찾아보고 시간쓰고 하는 이유는 손빌드가 너무  힘들기 때문입니다.
자동화를 미리 해놓는게 가장 시간을 아끼는 길인 것 같네요.

참조

https://velog.io/@gth1123/CI-CD-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

728x90
반응형
그리드형