Jenkins 란
Jenkins는 자바로 작성된 오픈 소스 자동화 서버
지속적 통합(CI)와 지속적 배포(CD) 프로게스를 구축하는데 지속적 인도 프로세스를 구축하는데 널리 이용됩니다.
Jenkins는 원래 썬 마이크로즈(Sum Microsystems
)에서 개발된 허드슨(Hudson
) 이라는 이름으로 공개된 바 있으나, 오라클(Oracle
)이 허드슨(Hudson
)을 인수하고 독점 소프트웨어로 전환하기로 하자 이름을 젠킨스(Jenkins
)로 바꾸고 현재까지 오픈소스 솔루션으로 개발 지속되고 있습니다.
젠킨스의 특징
- 다양한 프로그래밍 언어 지원
- 플러그인을 통한 확장
- 사용자가 직접 플러그인을 작성해 젠킨스의 기능을 확장하는 것도 가능
- 이식성
- 여러 종류의 컴퓨터에서뿐만 아니라 컨테이너 및 클러스터 환경에도 부드럽게 적용
- 대부분 소스 관리 시스템 지원
- 분산 처리 지원
- 마스터/슬레이브 구조를 채택하여 여러 노드에서 작업 수행
- 코드로 파이프라인 구성
젠킨스 아키텍처
마스터 슬레이브 구조
- 슬레이브(slave)는 에이전트(agent)라고 부르기도 함
마스터
- 빌드 시작 트리거 포착 (예: 코드 커밋)
- 알림 (예: 빌드 실패를 사용자에게 전달)
- 클라이언트와 통신하며 HTTP 요청 처리
- 에이전트에서 실행 중인 작업의 우선순위 조정 등 빌드 환경 관리
에이전트
- 마스터에 의한 개시 후 모든 작업을 처리
젠킨스 인스턴스는 항상 테스트용과 프로덕션용으로 분리 운용해야 함
- 개발팀보다 운영팀에서 주의를 기울여야 하는 부분
- 젠킨스 소프트웨어 업데이트
- 신규 플러그인 적용
CI/CD 파이프라인의 변경 및 유지보수
조직 (개발팀, 테스트팀, 데브옵스팀)이 늘어날 때마다 마스터 인스턴스의 수를 늘려 가는 방식
- 비교: 수직적 확장 - 마스터에 대한 부하가 증가함에 따라 마스터 시스템에 자원을 추가하는 방식
테스트 인스턴스와 프로덕션 인스턴스
젠킨스 인스턴스는 항상 테스트용과 프로덕션으로 분리 운영해야 함
- 개발팀보다는 운영팀에서 주의를 기울여야 하는 부분
시스템 설정 변경이 일어날 때 프로덕션에 적용하기 이전 철저한 검증이 필요
- 젠킨스 소프트웨어의 업데이트
- 신규 플러그인 적용
- CI/CD 파이프라인의 변경 및 유지보수