9P by whatsup 3달전 | favorite | 댓글과 토론

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 모듈화를 통해 재사용성 및 유지보수 용이성 향상
    • 문제 해결 시간 단축, 시스템 안정성 증대