AI Briefing

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

·2022.08.29 09:00

핵심 내용

뱅크샐러드가 GitHub Actions의 의존성 캐싱과 Job 병렬화, 변경 사항만 테스트하는 전략으로 CI 실행 시간을 40초대로 단축했다.

자세히 보기

뱅크샐러드 웹 프론트엔드 엔지니어 조성동은 GitHub Actions의 실행 대기 시간을 줄이기 위해 CI 속도 개선 전략을 공개했다. 기존 방식은 20명이 사용할 경우 총 1시간의 대기 시간이 발생했으나, 캐싱과 병렬 처리를 적용해 action 시작부터 종료까지 40초대로 개선했다.

의존성 설치 시간을 단축하기 위해 actions/cache@v3를 활용했다. package-lock.json 해시를 키로 사용하여 node_modules를 캐싱했으며, 캐시 히트 시 npm ci 실행을 생략했다. 이를 통해 의존성 설치 시간이 1분 8초에서 21초로 단축되었다. 다만 첫 번째 커밋에는 캐시가 없으며, 무료 플랜의 저장 공간 제한으로 인해 오래된 캐시가 삭제될 수 있다는 점을 고려해야 한다.

Job 구조를 개선하여 실행 효율을 높였다. 기존에는 lint, test, build를 하나의 Job에서 순차적으로 실행했으나, 이를 여러 Job으로 분리해 병렬 실행하도록 변경했다. 각 Job은 독립적인 Runner를 할당받으므로 의존성 설치 단계가 필요하지만, 순차 실행 대비 대기 시간을 크게 줄일 수 있다. 예를 들어 각 단계가 10초씩 걸릴 때 순차 실행은 30초가 소요되지만 병렬 실행은 10초 만에 모든 결과를 확인할 수 있다.

변경된 파일만 테스트하는 전략도 도입했다. git diff를 활용해 변경 사항만 Lint하고, Jest의 changedSince 옵션을 사용하여 테스트 범위를 좁혔다. 또한 Nx 도구를 활용하면 변경 사항의 영향을 받는 프로젝트만 빌드 및 테스트할 수 있어 효율적이다. Nx는 내부적으로 복잡한 캐싱 계산을 수행하며, 무료 플랜으로 월 2,000분 및 10GB 저장 공간을 제공한다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.