0Pricing
DevOps Bootcamp · 강의

속도 향상을 위한 종속 항목 캐싱

생성된 종속 항목과 빌드 출력을 재사용하는 캐싱을 구현하여 워크플로 실행 속도를 크게 높입니다.

속도 향상을 위한 종속 항목 캐싱은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

캐싱으로 워크플로 속도 높이기

워크플로가 실행될 때마다 같은 종속성을 다시 다운로드하는 것을 본 적이 있습니까? 작업 속도가 느려집니다!

GitHub 액션의 캐싱을 사용하면 이전 실행에서 사용한 파일을 저장하고 재사용할 수 있습니다. 따라서 이후 워크플로 실행 속도가 크게 빨라집니다.

캐시 액션 소개

GitHub는 actions/cache@v3라는 특수 액션을 제공합니다. 이 액션은 파일을 저장하고 복원하여 워크플로를 더 빠르게 실행하도록 설계되었습니다.

캐시가 이미 있는지 확인한 후 복원을 시도하고, 캐시가 없으면 저장하므로 똑똑하게 작동합니다.

캐시 키와 경로

actions/cache의 두 가지 핵심 매개변수는 key와 path입니다.

  • key: 캐시를 식별하는 고유한 문자열입니다. 이 키를 가진 캐시를 찾으면 복원합니다.
  • path: 캐시하려는 파일 경로 또는 디렉터리입니다. 이 값으로 액션이 저장하거나 복원할 *무엇을* 지정합니다.

종속성 파일이 변경될 때 캐시가 무효화되도록 키에 종속성 파일의 해시를 포함하는 경우가 많습니다.

Node.js 종속성 캐싱

Node.js 프로젝트의 node_modules를 캐시해 보겠습니다. package-lock.json을 기반으로 동적 키를 만들기 위해 hashFiles를 사용합니다.

다음의 간단한 워크플로 코드 조각을 실행해 보십시오.

name: Node.js CI with Cache

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Cache Node.js modules
      uses: actions/cache@v3
      with:
        path: node_modules
        key: npm-${{ hashFiles('package-lock.json') }}
        restore-keys: |
          npm-
    - name: Install dependencies
      run: npm ci
    - name: Run tests
      run: npm test

복원 키를 사용한 대체 기능

정확한 key가 캐시와 일치하지 않으면 어떻게 될까요? 이때 restore-keys가 유용합니다!

restore-keys는 검색할 대체 키 목록을 제공합니다. 기본 키(예: npm-${{ hashFiles(...) }})가 일치하지 않으면 GitHub 액션은 restore-keys를 순서대로 사용하여 캐시를 찾습니다.

이 예시에서 npm-는 "npm-"으로 시작하는 캐시를 찾습니다. 종속성 버전만 조금 변경된 경우에 유용합니다.

파이썬 종속성 캐싱

캐싱은 Node.js에만 사용하는 기능이 아닙니다! 같은 원칙을 파이썬과 같은 다른 언어에도 적용할 수 있습니다. 여기서는 파이썬의 가상 환경과 패키지 관리자의 캐시를 캐시합니다.

여기서 키는 hashFiles('requirements.txt')를 사용하고, 경로는 가상 환경과 패키지 관리자의 캐시 디렉터리를 가리킵니다.

name: Python CI with Cache

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.x'
    - name: Cache Python dependencies
      uses: actions/cache@v3
      with:
        path: |
          ~/.cache/pip
          .venv
        key: pip-${{ hashFiles('requirements.txt') }}
        restore-keys: |
          pip-
    - name: Install dependencies
      run: |
        python -m venv .venv
        .venv/bin/pip install -r requirements.txt
    - name: Run tests
      run: .venv/bin/python -m unittest discover

캐시를 무효화할 시점

캐시는 충분히 최신 상태일 때만 유용합니다. 종속성이 변경되면 캐시도 변경되어야 합니다!

기본 key(예: npm-${{ hashFiles('package-lock.json') }})가 변경되면 캐시가 자동으로 무효화됩니다. package-lock.json이 업데이트되면 해시가 변경되고 새 캐시가 생성됩니다.

키를 수동으로 변경하여 캐시를 강제로 다시 만들 수도 있습니다(예: npm-v2-${{ hashFiles(...) }}와 같이 버전 접미사 추가).

캐시 범위와 한도

캐시가 내부적으로 작동하는 방식을 알아 두면 좋습니다.

  • 범위: 캐시는 저장소별, 브랜치별로 범위가 지정됩니다. main 브랜치의 캐시는 lookup-path를 명시적으로 구성하지 않는 한 기능 브랜치에서 사용되지 않습니다.
  • 크기 한도: 각 캐시의 크기는 최대 10GB입니다.
  • 보존 기간: 캐시는 마지막으로 액세스한 후 7일 동안 보존됩니다. 오래되어 사용되지 않는 캐시는 자동으로 제거됩니다.

효율적인 캐싱 방법

캐싱을 최대한 활용하려면 다음 방법을 사용하십시오.

  • hashFiles 사용: 항상 캐시 키를 종속성 명세 파일(예: package-lock.json, requirements.txt)에 연결하십시오.
  • path를 구체적으로 지정: 필요한 항목만 캐시하십시오(예: node_modules, ~/.cache/pip).
  • restore-keys 사용: 캐시 적중률을 높일 수 있도록 대체 키를 제공하십시오.
  • 변동성이 큰 데이터 캐싱 피하기: 자주 변경되거나 실행마다 매우 크고 고유한 파일(예: 배포용 빌드 산출물)은 캐시하지 마십시오.

캐시 키 도전 과제

Java 프로젝트에서 Maven을 사용하고 있습니다. 종속성은 pom.xml에 정의되어 있으며 Maven은 일반적으로 다운로드한 JAR을 ~/.m2/repository에 저장합니다.

pom.xml이 변경될 때 Maven 종속성이 캐시되고 올바르게 무효화되도록 보장하는 캐시 구성은 무엇입니까?

복습: 속도를 위한 캐시!

잘하셨습니다! GitHub 액션에서 캐싱을 구현하여 CI/CD 워크플로의 속도를 크게 높이는 방법을 학습하셨습니다.

  • actions/cache 액션을 사용합니다.
  • key와 path를 사용하여 캐시할 대상과 방법을 정의합니다.
  • hashFiles는 지능적인 무효화를 위한 동적 키를 만듭니다.
  • restore-keys는 유용한 대체 키를 제공합니다.

종속성을 지능적으로 캐시하면 빌드 시간과 컴퓨팅 리소스를 절약하여 파이프라인의 효율성을 높일 수 있습니다!

자주 묻는 질문

“속도 향상을 위한 종속 항목 캐싱” 강의는 무료인가요?

네 — “속도 향상을 위한 종속 항목 캐싱” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“속도 향상을 위한 종속 항목 캐싱”에서 뭘 배우나요?

생성된 종속 항목과 빌드 출력을 재사용하는 캐싱을 구현하여 워크플로 실행 속도를 크게 높입니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“속도 향상을 위한 종속 항목 캐싱” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 여러 환경을 위한 매트릭스 빌드
  2. 속도 향상을 위한 종속 항목 캐싱
  3. 재사용 가능한 워크플로 및 Actions
  4. 조건부 실행 및 작업 의존성
← DevOps Bootcamp(으)로 돌아가기