[ADR][가상] 아키텍처 의사 결정 기록: CI 빌드 시간 단축을 위한 Tuist Cache 활용 방안
CI 빌드 시간 단축을 위한 Tuist Cache 활용 방안
작성일 : 2025-05-01 작성자 : 안정민
상태
- 수락됨(Accepted)
배경
프로젝트가 커짐에 따라 CI 빌드 시간이 지속적으로 증가하고 있습니다. 이는 개발자들이 코드를 작성하고 PR을 통해 변경된 부분만 빌드하고 테스트를 수행하는 것이 아니라, 전체 프로젝트를 다시 빌드하고 있어 테스트에 소요되는 시간을 늘리고, CI/CD 파이프라인의 효율성을 저하시킵니다. 따라서 빌드 시간을 단축하기 위한 방안이 필요합니다.
결정
Tuist Cache를 활용하여 CI 빌드 시간을 단축시키는 것이 가능한지 PoC(Proof of Concept)를 진행하기로 결정했습니다.
이유
대부분의 PR은 기존 코드에 대한 수정이기 때문에, 전체 프로젝트를 다시 빌드하는 것보다 변경된 부분만 빌드하는 것이 더 효율적입니다. 따라서, 변경되지 않는 모듈은 캐시를 사용하여 빌드 시간을 단축할 수 있습니다. Tuist Cache는 이러한 캐시를 관리하는 도구로, 다음과 같은 장점이 있습니다.
- Tuist Cache는 빌드 캐시를 자동으로 선택하므로, 개발자가 수동으로 빌드 캐시를 선택할 필요가 없습니다.
- 빌드 캐시를 S3와 같은 클라우드 스토리지에 저장하여 여러 CI/CD 환경에서 쉽게 공유할 수 있습니다.
- 이는 CI/CD 환경뿐만 아니라 로컬 개발 환경에서도 사용할 수 있습니다.
- 빌드 캐시를 저장할 때 해당 버킷의 수명을 지정하여 캐시가 자동으로 삭제되도록 설정할 수 있어, 불필요한 캐시를 자동으로 정리할 수 있습니다.
빌드 캐시 사용 시 고려할 점
Tuist Cache를 사용할 때 다음 사항을 고려해야 합니다:
- 캐시 무결성: 캐시된 빌드 아티팩트가 최신 상태인지 확인해야 합니다. 이를 위해 캐시 키를 정확히 관리하고, 변경된 코드에 따라 캐시를 무효화하는 전략이 필요합니다.
- 스토리지 비용: 클라우드 스토리지를 사용할 경우 저장소 비용이 발생할 수 있으므로, 캐시의 수명 주기를 적절히 설정해야 합니다.
- 환경 변수 관리: Tuist Cache를 활용하기 위해 필요한 환경 변수를 명확히 정의하고, CI/CD 환경과 로컬 개발 환경에서 일관되게 설정해야 합니다.
- 프로젝트 구조: Tuist Cache는 Framework 단위로 캐시를 제공하므로, 기존 프로젝트 구조를 변경하지 않고도 적용할 수 있도록 설계를 신중히 검토해야 합니다.
결과 및 영향
Tuist Cache를 적용할 때 Framework 단위로 캐시를 제공하므로, 기존 프로젝트의 구조를 변경하지 않고도 적용할 수 있습니다. 또한, Tuist Cache를 위한 별도의 환경 변수를 설정하여 의도적으로 캐시를 활용할 수 있도록 해야 합니다. 이를 통해 CI 빌드 시간을 단축하고, 개발자 생산성을 향상시킬 수 있습니다.
결론
Tuist Cache를 활용하여 CI 빌드 시간을 단축시키는 것이 가능하다고 판단됩니다.
따라서 Tuist Cache를 활용하여 CI 빌드 시간을 단축시키는 방안을 PoC로 진행하기로 결정했습니다.