사내에서 프로젝트를 진행하면서 개발 및 배포를 할 때 현재 사용하는 방법은

강의를 듣거나 책을 읽을 때 나오는 `고대의 방법'인 war파일을 생성하고, was서버의 배포 폴더에 이동 한 뒤 재기동하는 방식을 사용하고 있습니다.

사내 시스템을 효율적으로 개선하고 싶어서 임원분들과 관리자분에게 여러번 요청하였지만 우선순위에 밀려 진행하지 못하다 이번에 여유가 생겨 시스템을 도입하기로 하였습니다.

 

Jenkins 도입에 앞서 Jenkins를 사용하는 목적인 CI/CD가 무엇이고 어떤 장단점이 있는지 정리해보았습니다.

CI/CD란?

CI/CD의 과정들

CI/CD란 소프트웨어 개발에서 지속적인 통합과 배포를 의미하는 용어입니다. CI는 소스 코드 변경이 일어날 때마다 자동으로 빌드, 테스트 등의 작업을 수행하여 팀 내에서 통합된 코드를 유지하고 품질을 유지하는 것을 말하며, CD는 CI를 통해 빌드된 코드를 자동으로 배포하여 최종 사용자에게 제공하는 것을 의미합니다.

CI/CD의 필요성

개발자 생산성 향상

CI/CD를 도입하면 개발자는 빠른 피드백과 자동화된 빌드, 배포 등의 작업을 통해 개발 속도를 높일 수 있습니다. 이는 개발자들이 더욱 집중적으로 개발에만 집중할 수 있도록 돕습니다.

높은 코드 품질

CI/CD를 활용하면 빌드와 테스트 자동화를 통해 오류 발생 가능성을 줄일 수 있습니다. 이는 코드의 품질과 안정성을 높이고, 버그 발생 가능성을 낮출 수 있습니다.

빠른 배포

CI/CD를 도입하면 빠른 속도로 배포를 수행할 수 있습니다. 이는 고객 요구사항이나 시장 상황 변화에 빠르게 대응할 수 있도록 돕습니다. 또한, 빠른 배포는 개발자들이 새로운 기능을 빠르게 출시하여 경쟁 우위를 유지할 수 있도록 돕습니다.

개발 프로세스의 표준화

CI/CD를 도입하면 개발 프로세스를 자동화하고 표준화할 수 있습니다. 이는 프로젝트 참여자들 간의 협업을 더욱 원활하게 할 수 있으며, 코드의 일관성과 품질을 유지할 수 있습니다.

 

Jenkins란

친절해보이는 Jenins 로고

Jenkins는 자동화된 소프트웨어 개발 프로세스를 지원하는 오픈 소스 도구입니다. 이 도구를 사용하면 개발자들이 소스 코드를 지속적으로 빌드, 테스트 및 배포할 수 있으며, 이를 자동화하여 더욱 빠르고 안정적인 소프트웨어 개발 및 배포를 가능하게 합니다.

 

Jenkins는 다양한 플러그인을 지원하며, 이를 통해 빌드, 테스트, 배포, 지속적인 통합 및 배포(CI/CD) 파이프라인 등의 작업을 자동화할 수 있습니다. 이를 통해 개발자들은 자동화된 작업으로 인해 더 많은 시간과 노력을 코드 작성에 집중할 수 있습니다.

 

Jenkins는 Java로 작성되어 있으며, Java 기반의 어플리케이션을 빌드 및 배포하는 것을 지원합니다. 그러나 이 외에도 다양한 언어와 프레임워크를 지원하며, 개발자들은 다양한 플러그인을 통해 커스터마이징할 수 있습니다.

Jenkins는 오픈 소스이므로 무료로 사용이 가능하며, 커뮤니티에서 지속적으로 업데이트 및 개선이 이루어지고 있습니다.

사내 Jenkins 서버 구축 목표

  • 반복적인 작업을 자동화
    • ex) 빌드 → ssh접속 → 배포 및 백업 → 서버 재기동
  • 빌드 환경 표준화
    • 개발자마다 로컬 개발PC 환경이 달라진다면 빌드 결과물이 달라질 수 있음
    • Jenkins : 빌드서버 구축으로 표준화된 빌드 환경 구축

 

참고자료

https://www.redhat.com/ko/topics/devops/what-is-ci-cd

 

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

CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포까지 애플리케이션 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하는 것을 뜻합니다.

www.redhat.com

https://ko.wikipedia.org/wiki/%EC%A0%A0%ED%82%A8%EC%8A%A4_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4) 

 

젠킨스 (소프트웨어) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EC%A7%80%EC%86%8D%EC%A0%81_%ED%86%B5%ED%95%A9

 

지속적 통합 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 소프트웨어 공학에서 지속적 통합(continuous integration, CI)은 지속적으로 품질 관리(Quality Control)를 적용하는 프로세스를 실행하는 것이다. - 작은 단위의 작업, 빈

ko.wikipedia.org

 

+ Recent posts