Nx, 커스텀 Task Runner 중단에 대한 Go 기반의 해결책 제시
Nx는 원격 캐싱을 위한 커스텀 Task Runner 지원을 중단하여 사용자들의 반발을 샀음
저자는 GitLab CI의 파일 시스템 캐시를 활용하는 portable-nx-cache를 개발하여 문제를 해결함
오픈소스 솔루션인 portable-nx-cache는 Go로 작성되었으며, CI 환경에서 원격 캐싱을 간편하게 구현하도록 지원함
portable-nx-cache 아키텍처 분석
portable-nx-cache는 Nx의 OpenAPI 명세를 구현하여 CI 환경에서 원격 캐싱을 제공한다. 구체적으로, Go로 작성된 단일 바이너리 형태로, CI 작업 시작 시 백그라운드 프로세스로 실행된다. 따라서, GitLab CI의 캐시 기능을 활용하여 빌드 아티팩트를 저장하고 복원하며, HTTP 요청을 통해 Nx와 통신한다.
Nx의 상업화 전략과 기술적 절충
Nx는 상업적 이익을 위해 커스텀 Task Runner 지원을 중단하고, Nx Cloud 서비스를 강화했다. 반면, OpenAPI 명세를 제공하여 자체 캐싱 솔루션 구축을 가능하게 했지만, 벌크 요청 미지원과 같은 제약이 존재한다. 결과적으로, portable-nx-cache는 이러한 제약 속에서도 CI 환경에서 원격 캐싱을 구현하는 실용적인 대안을 제시한다.
CI 환경에서의 portable-nx-cache 적용 가이드
portable-nx-cache를 사용하기 위해서는 CI 환경에 바이너리를 포함시키고, 환경 변수를 설정해야 한다. 구체적으로, PORTABLE_NX_CACHE_PORT 및 NX_SELF_HOSTED_REMOTE_CACHE_ACCESS_TOKEN 변수를 설정하고, 캐시 디렉토리를 지정해야 한다. 따라서, GitLab CI 설정 예시를 참고하여, CI 파이프라인에 원격 캐싱 기능을 통합할 수 있다.