#Mobile

안드로이드 빌드 대기 시간 없애기

안드로이드 빌드 대기 시간 없애기
01

Summary

안드로이드 빌드 지옥 탈출기: 네이버는 어떻게 대기 시간을 '0'으로 만들었나?

N3R 오케스트레이션과 3-Layer 캐싱으로 완성한 차세대 동적 CI/CD 인프라 구축기

본 아티클은 네이버의 대규모 안드로이드 프로젝트가 겪었던 빌드 병목 현상을 해결하기 위한 인프라 혁신 과정을 다룹니다. 고정된 빌드 서버의 한계를 깨고 쿠버네티스 기반의 동적 환경과 지능적인 캐싱 전략을 결합하여 개발 생산성을 높인 실무 사례를 소개합니다. 기술적 제약이 많은 사내 환경에서 최적의 아키텍처를 찾아가는 시니어 엔지니어들의 고민과 해결책을 담았습니다.

  • 01사내 오케스트레이션 툴 N3R을 활용한 유연한 빌드 러너 동적 할당 시스템 구축
  • 023-Layer Cache와 Diff-aware 테스트 도입으로 불필요한 빌드 및 테스트 연산 최소화
  • 03Nexus Proxy 및 Nginx WebDAV를 통한 폐쇄망 네트워크 병목 및 속도 문제 해결
  • 04리소스 소모가 큰 안드로이드 빌드 환경에 최적화된 커스텀 Autoscaler 메커니즘
  • 05멀티 모듈 구조에서의 Gradle 빌드 최적화 및 메트릭 기반의 성능 개선 성과

RECOMMENDATION

빌드 리소스 부족으로 개발 사이클이 지연되는 대규모 안드로이드 팀이나, 보안 규정으로 인해 외부 클라우드 사용이 제한된 환경의 데브옵스 엔지니어에게 필독을 권장합니다.

The Problem

리소스 소모가 큰 안드로이드 빌드 특성상 고정된 Runner 풀 방식에서는 빌드 요청이 몰릴 때 심각한 병목 현상이 발생한다. 특히 보안 정책으로 인한 외부망 차단 및 권한 제약이 있는 사내 환경에서 효율적인 빌드 환경 구축에 어려움이 있었다.

The Solution

사내 오케스트레이션 도구인 N3R과 자체 개발한 Autoscaler를 결합하여 빌드 리소스를 동적으로 할당하는 시스템을 구현했다. 여기에 3계층 캐시 전략, Diff-aware 테스트, Nexus Proxy 등을 도입하여 네트워크와 연산 효율을 극대화했다.

The Result

고정된 리소스의 한계를 극복하고 빌드 대기 시간을 획기적으로 단축하여 CI/CD 처리량을 높였다. 인프라 유연성을 확보함으로써 빌드 요청량 변화에 탄력적으로 대응할 수 있는 환경을 마련했다.

Trade-off

공식 ARC를 사용하지 않고 사내 전용 툴과 자체 오토스케일러를 조합함으로써 시스템 복잡도와 유지보수 관리 포인트가 증가했다. 또한 고도화된 캐시 계층 도입에 따른 데이터 정합성 관리 오버헤드가 발생할 수 있다.

03

Key Concepts

Concept · 01

N3R

네이버 사내에서 사용하는 포드(Pod) 오케스트레이션 도구로, 컨테이너화된 애플리케이션의 배포와 관리를 자동화한다.

  • 안드로이드 빌드 환경을 격리된 컨테이너로 관리하고 동적으로 생성/회수하는 기반 인프라로 활용됨
Concept · 02

ARC (Actions Runner Controller)

쿠버네티스 클러스터 상에서 GitHub Actions 셀프 호스팅 러너를 관리하고 자동 스케일링을 지원하는 컨트롤러이다.

  • 본문에서는 공식 ARC 도입이 어려운 환경을 극복하기 위해 N3R과 자체 Autoscaler를 결합한 유사 시스템을 구축함
Concept · 03

Diff-aware Testing

코드 변경 사항(Diff)을 분석하여 해당 변경과 연관된 테스트 케이스만을 선별적으로 실행하는 기술이다.

  • 전체 테스트 대신 필요한 부분만 검증하여 빌드 파이프라인의 전체 소요 시간을 획기적으로 단축함