게임 옥션 서버 프로젝트의 API 개발을 하며 스프링 프레임워크를 사용하며 제어의 역전 (IoC)을 통해 개발자가 아닌 스프링이 객체를 관리함을 통해 유지보수성, 가독성, 낮은 결합도의 장점을 가져올 수 있습니다.

스프링의 제어의 역전과 같이 젠킨스는 CI/CD를 통해 협업 시 개발자들의 코드를 통합하거나 배포 자동화 등 통합 서비스를 관리해주는 도구입니다.이번 포스팅에서는 젠킨스의 특징 및 장점, 그리고 CI/CD에 대해 알아보겠습니다.

 

젠킨스(Jenkins)란

젠킨스는 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌 방지를 위해 각자의 Git과 같은 원격 저장소에 업로드 하는 이슈들을 지속적으로 통합하는데 도움을 주는 오픈소스 자동화 서버입니다.

주요한 특징으로는 자동화 테스트, 지속적인 통합(Continuous Integration)과 지속적인 전달 (Continuous Delivery)환경을 구축하는데 도움을 주며 AWS 배포, 도커 빌드 등 각각의 컴포넌트들을 젠킨스 플러그인을 통해 통합할 수 있으며, 해당 플러그인들을 조합한 파이프라인(PipeLine)방식을 통해 자동화된 서비스를 사용할 수 있습니다.

 

장점

  • 프로젝트 표준 컴파일 환경에서 컴파일 오류들을 검출하며 확인할 수 있다.
  • 젠킨스 파이프라인에서 자동으로 실행되는 다양한 테스트를 통해 정확성 및 일관성, 반복작업등을 최소화한다.
  • 자동화된 배포 및 롤백을 통한 버전관리를 통해 안정적인 서비스 제공을 보장한다.
  • 지속적인 통합(Continuous Integration)을 하며 개발 시간을 단축하며 자동화된 테스트를 통해 오류를 확인할 수 있다.
  • 지속적인 전달(Continuous Delivery)를 통한 자동화된 배포 프로세스 관리 및 추가된 기능 및 수정사항을 확인할 수 있다.

Continuous Integration/Continuous Delivery/Continuous Deployment

지속적인 통합 (Continuous Integration,CI)

  • 코드 변경이 감지될 시 빌드를 자동으로 실행하며 해당 아티팩트가 실행가능한지에 대한 테스트를 수행한다.
  • 테스트시 단위테스트, 통합테스트, 보안 테스트 등의 다양한 테스트들이 자동으로 실행되며, 실패시 로그를 출력한다.

지속적인 전달 (Continuous Delivery,CD)

  • 안정적이고 신뢰성 있는 빌드를 프로덕션으로 전달할 수 있도록 도와준다.
  • CI 성공시에 젠킨스는 배포 가능한 아티팩트를 생성한다.

지속적인 배포(Continuous Deployment)

  • 변경사항을 자동으로 프로덕션 환경에 배포한다.
  • 배포 도중 문제가 발생하면 이전 버전으로 롤백할 수있는 기능을 제공함으로써 버전관리에 도움을 준다.

CI/CD 과정

출처 - https://velog.io/@meme2367/EnjoyDelivery-이슈-4.-다중-서버에서의-CI-CD

 

  1. 개발자가 Git과 같은 원격저장소에 커밋 및 푸시한다.
  2. 젠킨스가 변경된 코드를 확인하며 빌드 및 테스트를 수행한다.
  3. 빌드가 성공한 경우 빌드한 파일을 배포 및 서버로 전송한다.
  4. 빌드가 실패한 경우 로그를 남기며 종료한다.

느낀점

젠킨스의 주요특징인 지속적인 통합(CI)에서는 자동화 테스트를 통해 개발자가 직접 검증해야했던 단위테스트, 통합테스트, 보안테스트 등을 젠킨스가 담당함으로써 성공시에는 배포, 실패시에는 로그 출력을 함으로써 개발자의 편리성이 증가했다고 할 수 있으며 이로인해 정확성 및 유지보수성이 향상되었다고 할 수 있습니다.

또한 지속적인 배포(CD)에서는 버전관리를 함으로써 프로덕션 환경에서 오류가 발생시에 롤백을 함으로써 안정성이 향상되었습니다.

 

 

출처

CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이 (redhat.com)

[ EnjoyDelivery ] 이슈 4. 다중 서버에서의 CI / CD : Jenkins Pipeline (velog.io)

 

+ Recent posts