젠킨스는 소프트웨어 개발 시 지속적 통합(continuous integration) 서비스를 제공하는오픈소스 서버입니다.
다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 만들어 줍니다.
젠킨스 인스턴스를 단일로 운영하고 있습니다.
스케쥴 관리 및 빌드를 포함한 모든 Job을 하나의 인스턴스에서 처리하기 때문에, 프로젝트 빌드 중 추가적인 이벤트 발생시 대응하기 어려운 환경입니다.
실제로 빌드 진행중 Cron 이벤트 발생시 서버가 다운되어 요청한 시간에 이벤트가 발생하지 않는 경우가 발생하고 있습니다.
현재 인프라를 개선하고자, 기존 Controller
는 유지하되, 스케줄링과 job을 컨트롤하고 build 또는 cron을 위한 Agent
를 별도로 생성하고자 합니다.
Job으로 구성되어 있거나, 파이프라인으로 구축되어 있는 현재 상황에서 새로운 서비스가 요청되면, 동일한 구성으로 3번의 작업이 진행되고 있습니다. ( dev, stage, prod )
작은 규모의 서비스를 구축할때는 이러한 구성으로 관리가 용이했지만, 서비스가 확장됨에따라 3n 개 수 만큼의 파이프라인이 만들어져서, 파이프라인을 관리하기가 힘들어집니다.
멀티브랜치 파이프라인으로 구성하여 prod, dev, stag로 구성된 현재 소스코드를 서비스별로 파이프라인을 일원화하여 관리 및 유지보수를 효율적으로 달성하고자 합니다.
젠킨스 개선 과정을 시리즈로 작성하여 공유하고자 합니다.
다음은 하나의 젠킨스를 Controller - agent 구조로 개선하는 과정을 포스팅 하겠습니다.