Github Actions 배포 시간 줄여볼까?
(blog.lemonbase.team)Github Actions 배포 시간 줄여볼까?
Github Actions를 활용한 배포 시간을 단축하기 위해 시도한 다양한 방법들과 그 과정에서 겪은 문제를 해결한 경험이 들어간 글입니다.
- 배포 시간이 점차 길어지면서 개발 속도와 팀 생산성에 악영향을 미치는 문제가 발생
- 문제를 해결하기 위해 배포 프로세스를 병렬 처리로 전환하고, 선택적 빌드 트리거를 도입하는 등 여러 가지 개선 작업을 어떻게 진행했는지 설명된 글입니다
문제 상황
- Github Actions를 사용한 배포 시간이 점차 길어져 평균 배포 시간 27분을 기록
- 개발 생산성에 영향을 미치기 시작
- Frontend, Intro, Backend를 순차적으로 빌드 및 배포하는 방식으로, 시간이 지나면서 비효율적인 배포 방식이 되면서 배포 시간이 늘어남
주요 개선 사항
- 병렬처리 도입
- 직렬로 배포되는 Frontend와 Backend 배포 작업을 병렬로 분리해 배포 시간을 27분에서 18분으로 단축.
- 이 과정에서 Github Workflow 코드 모듈화도 진행
- 선택적 빌드 트리거 도입
- 변경된 부분만 빌드하도록 path-filter를 사용했으나, 롤백 시 문제되는 상황을 발견
- path-filter 방식을 사용하지 않고, 개발자가 배포 대상을 선택할 수 있도록 Workflow 옵션으로 제공
- Docker Image Tag 사용 전략
- Docker Image 재사용을 통해 배포 시간을 18분에서 15분으로 단축.
- Deploy 병렬 처리
- Deploy 단계에서도 병렬 처리가 가능하도록 분리하여 배포 시간을 추가로 단축
- 인트로 분리
- 프론트엔드에서 인트로 페이지 빌드를 서비스 빌드와 분리하여 배포 효율성을 극대화.
결과
- 배포 시간 55% 감소(27분 -> 12분)
- 최대 70% 시간 단축 가능, 인프라 비용 절감, 제품 개발 생산성 향상.
- 추가 이점
- Workflow 모듈화를 통해 재사용성 및 유지보수 용이성 향상
- 문제 해결 시간 단축, 시스템 안정성 증대