뱅크샐러드, GitHub Actions CI 속도 개선 노하우 공개!

by DD
3년 전
조회수 10

GitHub Actions캐싱을 활용하여 CI 실행 시간을 40초대로 단축

Job 분리병렬 실행을 통해 테스트 결과를 더 빠르게 확인

Nx를 도입하여 CI/CD 파이프라인의 복잡성을 줄이고 캐싱 효율을 높임

GitHub Actions 캐싱 전략

GitHub Actions는 각 job마다 새로운 가상 머신을 생성하므로, 의존성 캐싱이 필수적이다. 구체적으로 `actions/cache`를 사용하여 `node_modules`를 캐싱하고, `package-lock.json` 변경 여부로 캐시 무효화를 결정한다. 따라서 CI 실행 시간 획기적 단축을 달성한다.

Job 분리를 통한 병렬 처리

단일 job 내 step 순차 실행은 병목 현상을 유발한다. Job 분리를 통해 Lint, Test, Build를 병렬 실행하면, 각 step의 실패 여부와 관계없이 전체 CI 결과를 빠르게 확인할 수 있다. 반면, GitHub Actions의 가상 머신 생성 시간은 비용 증가의 원인이 될 수 있다.

Nx를 활용한 CI/CD 자동화

Nx는 모노레포 환경에서 CI/CD 파이프라인을 효율적으로 관리하도록 돕는다. 변경 사항 감지 기능을 통해 불필요한 테스트 실행을 줄이고, 캐싱을 자동화하여 개발 생산성을 향상시킨다. 따라서 CI/CD 복잡성 감소빌드 시간 단축을 동시에 달성한다.

뱅크샐러드 Web chapter에서 GitHub Action 기반의 CI 속도를 개선한 방법