개발/Infra

[Infra] - 빌드의 자동화를 위한 Jenkins(젠킨스)

yhyuk 2021. 10. 13. 22:42
728x90
반응형

오늘은 개발을 위한 빌드부터 배포까지 자동화 해주는 Jenkins에 대해 간략하게 알아보려고한다.


개발자가 서버에 기능을 추가하려면 먼저, 개발자의 PC를 통해 개발을 하고 테스트까지 한 뒤, 이상이 없다고 판단이 되면 사용자가 사용할 수 있게 수정된 내용을 서버에 반영을 한다.

여기서 서버에 반영하는 것을 배포(Deploy)라고 하며, 배포 하기 위한 준비 과정을 빌드(Build)라고 한다.

 

빌드의 자동화?

위에서 설명 된 것 처럼 빌드는 서버에 올릴 수 있는 상태로 만드는 것을 의미한다.

그렇다면 빌드는 하루에 한번을 할 수 있으며, 안할 수도 있지만 1주일, 1달로 계산하면 꽤 많이 하게된다. 그리고 이 시간이 점차 늘어나 1년으로 된다면 상당히 많은 시간이라고 할 수 있다.

예를 들어 예전에는 Java를 빌드 할 때 javac라는 커맨드를 직접 사용 했지만, 지금은 IDEA를 이용하면 main() 메소드를 실행하여 javac를 하고 Java가 실행이 된다. 이렇게 반복되는 과정은 버튼 하나 or 단축키로 자동화 시킬 필요가 있다.

 

자동화를 위한 젠킨스

먼저, 젠킨스(Jenkins)란? 지속적 통합(continuous integration, CI)지속적 배포(continuous delivery, CD)를 위한 대표적인 도구이다. 빌드, 테스트, 배포 프로세스를 자동화하여 소프트웨어 품질과 개발 생산성을 높일 수 있으며, 한마디로 '빌드를 자동화' 해주는 툴이다.

대표적으로 사용하는 기능은 크게 2가지로 제공된다.

  1. 대쉬보드 제공 : 여러가지 배포작업의 상황을 모니터링 할 수 있다.
  2. 배포 스크립트를 실행해주기: 배포 스크립트를 개발자 로컬에서도 실행 할 수 있는데, 젠킨스라는 프로그램을 띄워두면 스케줄링을 알아서 해준다.

대강 젠킨스에 대해 찾아보면 굉장히 좋아보인다. 하지만 잘 안쓰게 되는 이유는 초기 세팅이 어려워 초급자에게는 상당히 힘들다.

젠킨스 서버를 띄우는 방법을 조금 알아보자면,

먼저 AWS EC2에 젠킨스를 받아 한다. (이 부분에서도 학습 지식이 필요하다.)

그리고 VPC, Security Group, IAM등에 대해 알아야 한다. (젠킨스 사용을 위한 여러가지를 잘 모르는 상태에서 한다면 서버가 올라가더라도 접근을 못하는 상황이 발생한다.)


젠킨스를 쓰면 개발자에게 매우 편리하며 시간을 감소해주며 개발 속도를 늘린다는 것은 알지만, 위에 말한 이유로 어렵다.

그렇지만 어렵더라도 직접 문서를 찾아가며 시간을 할애 하여 젠킨스를 사용하는것이 빌드의 자동화를 안하여 매번 직접 빌드하는 고통을 느끼는 것보다는 낫다고 생각이 든다. 그렇기에 저도 아직은 모르는 초급자인 입장이지만, 젠킨스에 대해서 하나씩 정리해가며 공부하려고 합니다.

 

 

reference

https://www.ncloud.com/product/devTools/jenkins
https://krksap.tistory.com/1377
https://www.cloudbees.com/jenkins/what-is-jenkins
https://ict-nroo.tistory.com/31

728x90
반응형