젠킨스는 소프트웨어 개발 시 지속적 통합(continuous integration) 서비스를 제공하는오픈소스 서버입니다.
다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 만들어 줍니다.
젠킨스 인스턴스를 단일로 운영하고 있습니다.
스케쥴 관리 및 빌드를 포함한 모든 Job을 하나의 인스턴스에서 처리하기 때문에, 프로젝트 빌드 중 추가적인 이벤트 발생시 대응하기 어려운 환경입니다.
실제로 빌드 진행중 Cron 이벤트 발생시 서버가 다운되어 요청한 시간에 이벤트가 발생하지 않는 경우가 발생하고 있습니다.

현재 인프라를 개선하고자, 기존 Controller는 유지하되, 스케줄링과 job을 컨트롤하고 build 또는 cron을 위한 Agent를 별도로 생성하고자 합니다.

Job으로 구성되어 있거나, 파이프라인으로 구축되어 있는 현재 상황에서 새로운 서비스가 요청되면, 동일한 구성으로 3번의 작업이 진행되고 있습니다. ( dev, stage, prod )

작은 규모의 서비스를 구축할때는 이러한 구성으로 관리가 용이했지만, 서비스가 확장됨에따라 3n 개 수 만큼의 파이프라인이 만들어져서, 파이프라인을 관리하기가 힘들어집니다.
멀티브랜치 파이프라인으로 구성하여 prod, dev, stag로 구성된 현재 소스코드를 서비스별로 파이프라인을 일원화하여 관리 및 유지보수를 효율적으로 달성하고자 합니다.

젠킨스 개선 과정을 시리즈로 작성하여 공유하고자 합니다.
다음은 하나의 젠킨스를 Controller - agent 구조로 개선하는 과정을 포스팅 하겠습니다.