0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · 강의

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

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

속도 향상을 위한 종속 항목 캐싱은(는) CoddyKit의 무료 CI/CD with GitHub Actions & DevOps Pipelines 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 CI/CD with GitHub Actions & DevOps Pipelines 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. CI/CD with GitHub Actions & DevOps Pipelines 강의에는 총 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로 업그레이드하면 CI/CD with GitHub Actions & DevOps Pipelines 강의 전체를 잠금 해제할 수 있습니다. CI/CD with GitHub Actions & DevOps Pipelines 강의에는 총 4개의 강의가 포함되어 있습니다.

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

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

CI/CD with GitHub Actions & DevOps Pipelines을(를) 시작하는 데 경험이 필요한가요?

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

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

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

이 CI/CD with GitHub Actions & DevOps Pipelines 강의에서 코드를 작성하고 실행할 수 있나요?

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

이 강의의 모든 강의

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