원격 캐싱

Turborepo의 태스크 캐시는 동일한 작업을 두 번 수행하지 않음으로써 시간을 절약합니다.

하지만 문제가 있습니다: 캐시는 로컬 머신에만 저장됩니다. 지속적 통합(CI) 시스템을 사용할 때 이로 인해 많은 중복 작업이 발생할 수 있습니다:

Local caching creates a cache on each system.

Turborepo는 기본적으로 로컬 파일시스템에만 캐시하기 때문에, 동일한 태스크(turbo run build)가 모든 태스크 입력이 동일하더라도 각 머신에서 다시 실행되어야 합니다(개발자, 팀원, CI, PaaS 등에 의해) — 이는 시간과 리소스를 낭비합니다.

Good to know: 

Turborepo를 사용하기 위해 원격 캐싱을 사용할 필요는 없습니다. 원격 캐싱이 가장 큰 속도 향상을 가져오지만, 원격 캐싱 없이도 기존 워크플로우를 더 빠르게 만들 수 있습니다.

단일 공유 캐시

팀 전체(심지어 CI까지)에서 단일 Turborepo 캐시를 공유할 수 있다면 어떨까요?

Remote caching creates a shared cache for your entire team.

Turborepo는 태스크 결과를 저장하는 클라우드 서버인 원격 캐시와 안전하게 통신할 수 있습니다. 이를 통해 조직 전체에서 중복 작업을 방지하여 엄청난 시간을 절약할 수 있습니다.

원격 캐싱은 무료이며 관리형 제공업체 또는 자체 호스팅 캐시와 함께 사용할 수 있습니다.

원격 캐싱은 Turborepo의 강력한 기능이지만, 큰 힘에는 큰 책임이 따릅니다. 먼저 올바르게 캐싱하고 있는지 확인하고 환경 변수 처리를 다시 확인하세요. Turborepo는 로그를 아티팩트로 취급하므로 콘솔에 무엇을 출력하는지 주의하세요.

Vercel

Vercel 원격 캐시는 Vercel에서 애플리케이션을 호스팅하지 않더라도 모든 플랜에서 무료로 사용할 수 있습니다. 아래 단계에 따라 리포지토리에 대한 원격 캐싱을 활성화하세요.

로컬 개발의 경우

로컬 Turborepo를 원격 캐시에 연결하려면 Turborepo CLI를 Vercel 계정으로 인증하세요:

Terminal
turbo login

전역 turbo가 설치되어 있지 않은 경우 패키지 매니저를 사용할 수도 있습니다:

Terminal
pnpm dlx turbo login

원격 캐시가 Single Sign-On을 사용하도록 구성된 경우 올바른 권한이 있는 캐시 토큰을 얻으려면 npx turbo login --sso-team=team-name을 실행해야 합니다.

이제 Turborepo를 원격 캐시에 연결합니다:

Terminal
turbo link

활성화되면 현재 캐싱 중인 패키지를 변경하고 turbo run을 사용하여 태스크를 실행하세요. 이제 캐시 아티팩트가 로컬 원격 캐시에 저장됩니다.

확인하려면 다음을 사용하여 로컬 Turborepo 캐시를 삭제하세요:

Terminal
rm -rf ./.turbo/cache

그런 다음 동일한 빌드를 다시 실행하세요. 제대로 작동한다면 turbo는 로컬에서 태스크를 실행하지 않아야 합니다. 대신 원격 캐시에서 로그와 아티팩트를 다운로드하여 재생합니다.

Vercel에서의 원격 캐싱

Vercel에서 앱을 빌드하고 호스팅하는 경우, turbo를 사용하면 원격 캐싱이 자동으로 설정됩니다. 자세한 내용은 Vercel 문서를 참조하세요.

아티팩트 무결성 및 진위성 검증

Turborepo는 원격 캐시에 업로드하기 전에 비밀 키로 아티팩트에 서명할 수 있습니다. Turborepo는 제공된 비밀 키를 사용하여 아티팩트에 HMAC-SHA256 서명을 사용합니다. Turborepo는 다운로드할 때 원격 캐시 아티팩트의 무결성과 진위성을 검증합니다. 검증에 실패한 아티팩트는 무시되고 Turborepo에서 캐시 미스로 처리됩니다.

이 기능을 활성화하려면 turbo.json 구성의 remoteCache 옵션을 signature: true로 설정하세요. 그런 다음 TURBO_REMOTE_CACHE_SIGNATURE_KEY 환경 변수를 선언하여 비밀 키를 지정하세요.

Turborepo logo
./turbo.json
{
  "remoteCache": {
    "signature": true
  }
}

원격 캐시 API

원격 캐시는 Turborepo의 원격 캐싱 API 사양을 충족하는 모든 HTTP 서버로 구현할 수 있습니다.

Vercel의 관리형 원격 캐시

Turborepo의 제작자이자 유지 관리자인 Vercel은 Turborepo와 완전히 호환되는 관리형 원격 캐시를 제공합니다.

Vercel 원격 캐시를 사용하면 구성이 필요 없으며 오픈 소스 Vercel 원격 캐시 SDK를 통해 Vercel 배포와 자동으로 통합됩니다.

Vercel의 Turborepo에 대해 자세히 알아보거나 무료로 템플릿을 배포하여 사용해 보세요.

자체 호스팅

자체 호스팅 원격 캐시를 사용하고 --manual 플래그를 사용하여 로그인하여 API URL, 팀 및 토큰 정보를 제공할 수도 있습니다.

Terminal
turbo login --manual

OpenAPI 사양

현재 모든 버전의 turbov8 엔드포인트와 호환됩니다.

커뮤니티 구현

Turborepo 커뮤니티는 원격 캐시의 오픈 소스 구현을 만들었습니다.