티스토리 뷰

 

 

개요

서버 어플리케이션에 기능을 추가 하려면 개발자가 개발자 노트북에서 개발을 완료 하고 테스트까지 한 다음에 이상이 없으면 사용자가 사용할 수 있게 수정된 내용을 서버에 반영해야 합니다. 서버에 반영을 하는 것을 '배포'라고 하고 배포 하기 위한 준비 과정을 '빌드'라고 합니다.

 

Build란?

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

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

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

 

 

 

Build를 자동화 해야하는 이유

빌드는 하루에 한번을 할 수도 있고 안할수도 있지만 1주일, 1달로 따지면 꽤 많이 합니다. 그리고 이게 1년이면 꽤 많은 시간이라고 할 수 있습니다.

 

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

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

 

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

 

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

 

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

 

 

Jenkins란?

위에서 이야기한 빌드를 자동화 해주는 툴입니다.

 

Jenkins는 빌드를 자동화 시키기 위해 사용합니다.

 

대표적인 기능은

1. 대쉬보드 제공

여러가지 배포 작업의 상황을 모니터링 할 수 있습니다

 

2. 배포 스크립트 실행기능

배포 스크립트를 개발자 로컬에서도 실행 할 수 있는데 젠킨스라는 프로그램을 띄워놓으면 스케쥴링을 해줍니다

 

3. 다양한 플러그인

빌드를 하는 환경도 다양하고 빌드를 할 때 바꿔 주어야 하는 옵션도 다양하고 각각 개발 환경과 개발한 언어도 다 다릅니다. 이런 것들을 커버하기 위해 젠킨스는 다양한 플러그인을 제공 합니다.

 

 

Jenkins를 안쓰게 되는 이유

이유1 세팅하기 어렵다
이유2 세팅이 잘 안된다
이유3 세팅이 힘들다

 

 
젠킨스를 쓰려면 젠킨스 서버를 띄워야 합니다. 그런데 요즘은 그나마 많이 비교적 쉬워져서(비교적 쉬운거지 절대 쉽다는게 아님) 띄울만 해졌는데 전에는 너무 어려웠습니다.

 

AWS에 EC2띄우고 젠킨스 받아서 띄우면 되는데 초보자에게는 선행 지식이 많이 필요합니다.
 
AWS에 띄울려면 VPC, Security Group, IAM등에 대해 알아야 합니다. 모르면 서버가 띄워도 접근을 못하는 안타까운 일이 벌어집니다.
 
저도 이걸 해볼려고 매년 시도는 했었는데 6년차가 된 지금에야 겨우 git pull받고 build하는 것까지 해보았습니다. 세팅 등이 너무 어려웠습니다.

 

이런 어려움에도 불구하고 젠킨스를 도입하려고 문서 찾아보고 시간쓰고 하는 이유는 손빌드가 너무  힘들기 때문입니다.
 
자동화를 미리 해놓는게 가장 시간을 아끼는 길인 것 같습니다.
 
 

다음 글 : Jenkins Pipeline Project만들고 git pull실행하기

요즘은 Gitlab이 대세라고 합니다.

 
end.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함