Jenkins 부하 분산을 위한 Slave 노드 추가 - woowacourse-teams/2021-drop-the-code GitHub Wiki
Jenkins Worker Node

적용 배경
Jenkins EC2에서 하고 있던 Job List

- Backend 개발 서버 배포
- Backend 운영 서버 배포
- Backend Pull Request 빌드 및 테스트
- Frontend 테스트
- Frontend 배포
문제

- 여러 Jenkins Job들이 동시에 실행되면서 Jenkins 인스턴스가 터지는 상황이 자주 발생
- 동시에 Job을 하나만 실행하도록 제한하면 효율성이 떨어짐
목표
- 부하가 많이 발생하는 Job들을 따로 Slave에서 실행시키도록 구성
- Master 노드는 동시에 실행할 수 있는 Job의 개수를 1개로 고정
- 각 job의 timeout을 10분으로 지정
구성
Slave 노드 구성
- Slave Node를 위한 새로운 EC2 인스턴스 생성
- Java 설치
Jenkins 설정 추가
- ssh credential 추가
- Slave 노드 등록
- Slave 정보 등록
Job의 Label 등록
- 각 Job마다 Label을 등록하여 Label에 맞는 Slave를 사용하도록 설정
Jenkins Master 동시에 실행할 수 있는 Job 개수 지정하기
- Master Node의 Executor Number를 1개로 지정
Jenkins 모든 Job에 timeout 지정
- Backend 빌드의 경우 정상적으로 빌드 진행 시간이 평균적으로 2분
- Gralde 초기화 작업이 필요한 경우 평균적으로 5~6분
- 빌드 10분이 넘는 경우에는 테스트의 최적화가 필요하다는 의미로 timeout 10분 지정
Job의 timeout 10분 지정

동시에 3개의 Job 실행

- 3개의 job 모두 각각 다른 Node에서 실행