- SourceFS는 대규모 디바이스 코드베이스의 빌드 속도와 효율성 문제를 해결하기 위해 설계된 고성능 가상 파일시스템
-
Android 빌드 속도를 최대 9배, 코드 체크아웃 속도를 10배 이상 향상시키며, 디스크 사용량을 83% 줄이고 컴퓨팅 비용을 14배 절감
- 핵심 원리는 파일 가상화와 온디맨드(materialization) 방식으로, 실제 파일처럼 보이지만 필요한 순간에만 내용을 불러오는 구조
- 빌드 과정에서는 입출력·환경을 기록하고 재사용하는 샌드박스 기반 캐싱을 통해 대부분의 빌드 단계를 즉시 재생(replay)
느린 빌드와 코드 체크아웃의 문제
- 현대의 연결된 디바이스는 수억 줄 규모의 코드베이스로 구동됨
- Linux 커널은 약 4천만 줄, Android AOSP는 1억4천만 줄 이상이며, 실제 디바이스는 하드웨어 지원·커스텀 기능·서비스 코드가 추가되어 2억 줄을 넘김
- 전기차(EV)는 5억 줄 이상에 달하며, 소프트웨어 업데이트로 지속적으로 증가
- 코드 체크아웃 시 수백 GB의 데이터를 내려받고, 빌드는 수십만 단계를 거침
- 의존성 그래프의 불완전성으로 인해 작은 변경도 대규모 재빌드를 유발하거나 잘못된 결과를 초래
- 결과적으로 매일 수시간의 개발자 시간 손실과 CI 컴퓨팅 비용의 급증이 발생
Source File System (SourceFS)
- SourceFS는 새로운 빌드 시스템이 아닌, 기존 워크플로에 통합 가능한 고성능 가상 파일시스템
- Android 코드베이스의 체크아웃 및 빌드 속도를 획기적으로 향상시키며, 마이그레이션 부담이 거의 없음
- 핵심 원리는 모든 파일을 가상화하고, 필요할 때만 실체화(materialize)하며, 이 과정을 투명하게 처리
-
체크아웃 가속화: 전체 코드베이스의 가상 파일 표현을 생성하고, 접근 시점에만 내용을 불러옴
- 파일은 실제처럼 보이지만, 대부분의 파일은 가상 상태로 남아 디스크 공간을 절감
- Git 및 Repo와 완전 호환
-
빌드 가속화: 각 빌드 단계는 입출력·환경을 기록하는 경량 샌드박스에서 실행
- 동일한 단계는 재실행 없이 결과를 재사용, 변경된 단계만 새로 수행
- 컴파일뿐 아니라 링크, 패키징, 문서 생성 등 전체 빌드 프로세스에 적용
- 내부적으로 고성능 캐싱·리플레이 알고리듬, 효율적 샌드박싱, Rust 기반 백엔드를 사용
빠른 빌드, 효율적 저장소, 비용 절감
- SourceFS 환경에서의 코드 체크아웃은 기존 대비 20배 이상 빠름
- 개발자는 기존 Git 트리와 동일한 워크플로를 유지하면서 SourceFS 폴더에서 작업 가능
-
디스크 사용량 절감은 다중 코드베이스를 전환해야 하는 디바이스 개발자에게 큰 이점
- 여러 디바이스 버전 간 전환이나 대규모 버그 수정 시에도 소규모 GitHub 리포지토리처럼 가볍게 작업 가능
-
빌드 속도는 최대 9배 향상, 일반 개발자 머신에서도 대규모 빌드를 신속히 완료
- CI 파이프라인의 피드백 루프 단축으로 개발 생산성 극대화
-
비용 절감 효과는 최대 14배에 달함
- 고성능 머신보다 일반 머신에서 SourceFS를 사용하는 편이 더 빠르고 저렴
- 동일한 컴퓨팅 예산으로 더 많은 작업 수행 가능
기존 대안과의 비교
- SourceFS는 기존 접근법의 한계를 극복
-
Bazel, Buck2 등 새로운 빌드 시스템으로의 마이그레이션은 대규모 프로젝트에서 현실적으로 어렵고, 다중 OS(예: Yocto, Android, QNX)를 포함한 디바이스 코드베이스에서는 복잡성이 배가
- SourceFS는 이러한 마이그레이션 없이도 동일한 성능 향상을 제공
-
컴파일러 래퍼(REClient, Goma 등) 는 일부 빌드 단계만 가속화하고 체크아웃에는 효과 없음
- 명령행 플래그 파싱에 의존해 예상치 못한 오류 발생 가능성 존재
향후 계획