피드로 돌아가기
Optimizing Our E2E Pipeline
Slack EngineeringSlack Engineering
DevOps

Optimizing Our E2E Pipeline

Slack의 DevXP 팀이 git diff 기반 조건부 빌드와 S3 캐시 재사용으로 E2E 파이프라인 빌드 시간을 50% 단축 (10분→2분)

Dan Carton2025년 4월 14일8intermediate

Context

Slack의 모노레포 CI/CD 파이프라인에서 프론트엔드 변경이 없는 PR에도 매번 프론트엔드 빌드(~5분)가 실행되었다. 주간 수천 건의 불필요한 빌드로 인해 AWS S3에 테라바이트 규모의 중복 데이터가 축적되었고, 개발자는 불필요한 대기 시간을 감수해야 했다.

Technical Solution

  • 조건부 프론트엔드 빌드 구현: git diff의 3-dot 표기법을 사용해 현재 브랜치와 main 브랜치의 최신 공통 커밋 사이 변경 사항을 감지하고, 프론트엔드 관련 변경이 없으면 빌드 단계 자체를 스킵
  • S3 기반 사전 빌드 자산 재사용: 빌드 스킵 시 AWS S3에서 최근 프로덕션 버전의 기존 빌드 산출물을 조회하여 재사용
  • 내부 CDN을 통한 자산 서빙: E2E 테스트 실행 시 프론트엔드 자산을 새로 생성하지 않고 내부 CDN으로 미리 빌드된 자산을 배포
  • 효율적인 자산 관리: S3 저장소 개념을 활용한 일관된 파일 명명 규칙과 최신성 기반 자산 식별 로직 구현으로 3초 이내에 빌드 필요 여부 판단 및 자산 위치 파악

Impact

  • 프론트엔드 빌드 빈도 60% 감소
  • 빌드 시간 50% 단축 (5분→2.5분, 이전 10분 파이프라인에서 전체 2분으로 개선)
  • 월간 AWS S3 스토리지 여러 테라바이트 절감
  • 월간 수백 시간의 클라우드 컴퓨팅 시간 및 개발자 대기 시간 감소
  • E2E 테스트 불안정성(test flakiness) 감소로 월별 측정 기준 최저 수치 달성

Key Takeaway

모노레포 규모의 CI/CD 파이프라인에서 git diff와 기존 캐싱 인프라를 활용한 변경 감지 기반 선택적 빌드 패턴은 불필요한 작업을 제거하여 개발 속도와 시스템 안정성을 동시에 향상시킬 수 있다.


대규모 모노레포 환경에서 E2E 테스트 파이프라인을 운영하는 팀은 git diff 3-dot 표기법으로 변경 범위를 정확히 감지한 후, 특정 계층(프론트엔드/백엔드)의 빌드 필요 여부를 판단하는 조건부 빌드 로직을 도입하면, 불필요한 컴퓨팅 자원 소비를 50% 이상 줄이고 파이프라인 대기 시간을 단축할 수 있다.

원문 읽기
Optimizing Our E2E Pipeline | Devpick