CI/CD와 젠킨스의 대해서 알아보자
젠킨스(JenKins)란?
젠킨스는 지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Deployment, CD)를 자동화하는 도구로, 개발자들이 코드를 변경할 때마다 지정된 작업들을 자동으로 실행해 줍니다. 예를 들어, 코드 변경이 발생하면 자동으로 빌드를 시작하고, 테스트를 실행하고, 필요에 따라 Docker 이미지를 빌드하고 배포하는 등의 작업을 처리할 수 있습니다. 이를 통해 개발자들은 반복적이고 일정한 작업들을 자동화하여 생산성을 향상할 수 있습니다.
그림으로 한번더 설명하자면 개발자가 Git과 같은 저장소에 코드를 푸시하면, Jenkins는 변경 사항을 감지하여 자동으로 빌드를 시작합니다. 이 과정에서 소스 코드가 컴파일되고 테스트되며, 빌드된 JAR 파일이 생성됩니다. 그다음, Jenkins는 이 JAR 파일을 Docker와 같은 컨테이너에 적재하는 과정을 자동화합니다.
CI/CD란 무엇인가?
지속적 통합(Continuous Integration)과 지속적전달(Continuous Delivery)은 소프트웨어 개발 프로세스를 자동화하고 개선하는 방법입니다.
CI(지속적 통합 : Continuous Integration)
CI는 개발자들이 GIT과 같은 공유저장소에 PUSH 할 대마다 자동으로 MERAGE나 TEST해주는 프로세스입니다. 다음과 같은 3가지를 추구합니다.
- 빠른 피드백
- 일관성유지
- 품질향상
CD (지속적 전달 : Continuous Delivery )
CD는 소프트웨어를 자동으로 테스트하거나 안전하게 배포를 하기위한 프로세스입니다. 다음과 같은 3가지를 추구합니다.
- 자동화 배포 : 개발자가 손수 빌드하고 배포하는 과정을 자동화하여 대신해줍니다.
- 배포주기 단축 : 젠킨스와 같은 도구를 사용하지 않을 때는 "스케줄에 따른 배포(Scheduled Deployment)"와 같은 방식으로 일정 시간에 배포를 하곤 했는데, 이를 단축시켜 줍니다.
- 신뢰성확보 : 개발자의 오타나 실수를 최소화하여 배포 프로세스를 통해 신뢰성을 확보합니다..
젠킨스의 장단점
장점
- 유연성 : 다양한 플로그인을 통해 다양한 개발환경과 도구를 지원한다.
- 확장성 : 클라우드 기반으로 동작하여 병렬처리가 가능하다.
- 오픈소스 : 비용은 들지 않아 누구나 사용할 수 있다.
- 강력한 자동화 기능 : 오프소스답지 않게 빌드-테스트-배포등의 강력한 자동화 기능을 제공한다.
단점
- 설정 복잡 : 젠킨스의 설정은 초보자에게는 다소 복잡할 수 있습니다. 특히 CI/CD 파이프라인을 구축하기 위해 Jenkinsfile과 같은 설정 파일을 작성해야 하는 과정은 매우 여러 기술등을 공부해야 다룰 수 있다.
- 리소스 및 유지보수 : 대규모 프로젝트에서는 젠킨스가 상당한 리소스를 요구할 수 있습니다. Jenkins.war 파일을 실행하고 유지보수하는 과정에서 서버 자원을 많이 사용할 수 있으며, 이는 대규모 프로젝트에 부적합할 수 있습니다.
- 보안 : 젠킨스는 보안 취약점이 발견되는 경우가 있습니다. 항상 최신 버전으로 업데이트하고 보안 설정을 강화하는 것이 중요합니다. 보안 취약점에 대한 업데이트는 시스템의 안전성을 유지하는 데 필수적입니다.(항상.. 업데이트하라는 문구가 나오곤 한다..)
젠킨스의 핵심 기능
파이프라인 구축(Pipeline 구축)
파이프라인은 여러 기능이 파이프처럼 연결되어 연속적인 작업을 자동화하여 빌드부터 배포까지의 과정을 관리하는 메커니즘을 의미합니다. 이렇게 연결된 각 단계는 하나의 파이프라인을 형성하며, 성공적으로 진행될 경우 마지막까지 이어져 컨테이너까지 배포가 이루어집니다. 그러나 한 단계라도 실패하면 이후 단계로 진행되지 않으며, 도커 컨테이너까지 이를 수행하지 못하고 이전 단계에서 실패가 발생하여 빌드가 이루어지지 않습니다. 이처럼 파이프라인을 통해 일련의 작업들을 자동화함으로써 개발 및 배포 프로세스를 효율적으로 관리할 수 있습니다.
플러그인(Plugin)
젠킨스는 다양한 플로그인을 지원합니다. 플러그인을 통해 다양한 도구와 서비스를 통합 지원합니다. 또한 플러그인을 통해 빌드부터 배포까지의 옵션등을 확장가능합니다.
다중 에이전트(Multi-Agent) 구성
젠킨스는 다중 에이전트를 활용해 여러 대의 머신에서 동시에 빌드를 수행할 수 있습니다.
New node를 통해 새로운 에이전트 노드를 추가해서 사용가능하다.
정리
젠킨스와 CI/CD는 개발 생산성을 향상하고 소프트웨어 전달 프로세스를 자동화하여 품질을 유지하는 핵심 도구이다.
젠킨스는 유연하고 확장 가능한 플랫폼을 제공하여 다양한 프로젝트에 적용될 수 있으며, CI/CD는 끊임없는 통합과 전달을 통해 더 나은 소프트웨어를 제공하는 핵심 원칙을 추구한다.
'Devops' 카테고리의 다른 글
[Git] git 실수로 올린 commit 및 push 취소 및 add 취소하는 방법 (1) | 2024.03.08 |
---|---|
[Git] Git bash CLI 명령어 모음 (0) | 2024.03.03 |
[Jenkins] "String Parameter"와 "Secret File"을 활용하여 YAML 및 Properties 파일의 민감한 정보 보호하기 (0) | 2024.02.27 |
[Jenkins] 로컬 Docker(Docker HUB) +Jenkins(pipeline)+Git(Webhook)+MySQL CI/CD 자동 배포하기 (1) | 2024.02.27 |
[Jenkins] 젠킨스를 이용해 Git의 변경내용을 자동 빌드 (1) | 2024.02.24 |