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

파이프라인 성능 조정

병목을 식별하고 고급 기법을 적용하여 GitHub Actions 워크플로의 실행 속도와 리소스 사용량을 최적화합니다.

파이프라인 성능 조정은(는) 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개의 강의가 포함되어 있습니다.

파이프라인 속도 향상하기

파이프라인 성능 조정에 오신 것을 환영합니다! 현대적인 개발 환경에서는 빠른 CI/CD 파이프라인이 신속한 피드백과 효율적인 리소스 사용에 매우 중요합니다.

느린 파이프라인은 시간과 비용을 낭비합니다. 이 레슨에서는 병목 지점을 식별하고 GitHub Actions 워크플로를 크게 빠르게 만드는 고급 기법을 알아봅니다.

워크플로 병목 지점 찾기

최적화하기 전에 무엇을 최적화해야 하는지 알아야 합니다. GitHub Actions는 느린 단계나 작업을 정확히 찾아낼 수 있는 훌륭한 도구를 제공합니다.

  • GitHub UI: 워크플로 실행 로그를 확인합니다. 타임라인 보기에서 각 작업과 단계에 걸린 시간이 명확하게 표시됩니다.
  • 작업 요약: 비정상적으로 오래 걸리는 단계를 찾습니다.
  • 작업 로그: 자세한 로그를 확인하면 가장 많은 시간을 소비하는 특정 명령이나 프로세스를 파악할 수 있습니다.

일관되게 가장 오래 걸리는 단계에 집중합니다.

독립적인 작업 병렬화하기

워크플로의 일부가 서로 의존하지 않는다면 동시에 실행하십시오! 이는 전체 실행 시간을 줄이는 간단하면서도 강력한 방법입니다.

워크플로에 여러 최상위 작업을 정의합니다. 작업 사이에 needs 의존성을 지정하지 않으면 GitHub Actions는 기본적으로 해당 작업을 병렬로 실행합니다.

name: Parallel Jobs Example
on: [push]
jobs:
  build-frontend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Frontend
        run: echo "Building frontend..."
  build-backend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Backend
        run: echo "Building backend..."

체크아웃 작업 최적화하기

actions/checkout 작업은 저장소의 코드를 가져옵니다. 대규모 저장소이거나 기록이 방대한 저장소에서는 이 작업이 느릴 수 있습니다. 다음과 같이 최적화하십시오.

  • 얕은 복제: fetch-depth: 1을 사용하여 최신 커밋만 가져옵니다. 대부분의 CI/CD 작업에서 상당한 시간을 절약할 수 있습니다.
  • 희소 체크아웃: 파일의 일부만 필요한 경우 희소 체크아웃을 고려합니다. 다만 설정이 더 복잡한 경우가 많습니다.

전체 기록을 다운로드하므로 꼭 필요한 경우가 아니라면 fetch-depth: 0을 사용하지 마십시오.

name: Optimized Checkout
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 1 # Only fetch the latest commit
      - name: Run Build
        run: echo "Code checked out and building..."

빌드 아티팩트 크기 줄이기

워크플로에서 컴파일된 바이너리나 테스트 보고서 같은 아티팩트를 업로드하거나 다운로드한다면 아티팩트의 크기가 성능에 직접적인 영향을 줍니다.

속도를 높이려면 다음과 같이 하십시오.

  • 필요한 파일만 포함하기: 필요하지 않은 임시 빌드 디렉터리나 로그를 업로드하지 않습니다.
  • 아티팩트 압축하기: 가능하다면 업로드하기 전에 큰 아티팩트를 압축합니다. actions/upload-artifact 작업은 자동으로 압축을 처리하지만, 원본 파일을 최소화해야 합니다.

효율성을 위한 경로 필터링

모든 코드 변경이 모든 작업을 실행해야 하는 것은 아닙니다. 경로 필터링을 사용하여 관련 파일이 수정된 경우에만 작업을 실행하십시오.

이는 규모가 큰 저장소에서 특히 유용합니다. 예를 들어 문서 변경으로 인해 전체 백엔드 빌드가 실행되는 것을 막을 수 있습니다.

워크플로의 on 트리거 안에 paths 또는 paths-ignore를 지정합니다.

name: Path Filter Example
on:
  push:
    paths:
      - 'frontend/**'
      - 'shared/**'
jobs:
  build-frontend:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Frontend
        run: echo "Frontend files changed, building..."

더 빠른 실행 환경 및 리소스 할당

워크플로를 실행하는 가상 머신(실행 환경)은 다양한 크기와 유형으로 제공됩니다. CPU를 많이 사용하는 작업에는 더 강력한 실행 환경을 사용하면 실행 시간을 크게 줄일 수 있습니다.

  • 더 큰 GitHub 호스팅 실행 환경: GitHub는 더 많은 리소스를 요구하는 작업을 위해 더 큰 실행 환경(예: ubuntu-latest-xlarge)을 제공합니다.
  • 자체 호스팅 실행 환경: 매우 구체적인 하드웨어 요구 사항이 있거나 내부 리소스에 대한 네트워크 지연 시간을 최소화하려는 경우, 자체 호스팅 실행 환경을 정확한 요구 사항에 맞게 최적화할 수 있습니다.

고급 캐싱 전략

종속 항목(예: npm 패키지 또는 Maven 아티팩트)을 캐싱하는 것은 필수입니다. 다음 팁을 활용하여 기본 캐싱을 넘어서는 최적화를 수행하십시오.

  • 세분화된 캐시 키: 더 구체적인 캐시 키를 사용하여 불필요한 캐시 누락을 방지합니다. 예를 들어 특정 잠금 파일과 OS의 해시를 포함할 수 있습니다.
  • 여러 캐시 사용: 모든 항목을 하나의 큰 캐시에 넣지 않습니다. 다양한 종속 항목 유형(예: node_modules, pip 패키지)에 대해 캐시를 분리하면 적중률을 높일 수 있습니다.
  • 복원 키: 기본 캐시 키가 누락된 경우 여러 캐시 키를 시도하도록 restore-keys를 사용하면 부분적으로 적중할 가능성이 높아집니다.
name: Advanced Caching
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Cache Node Modules
        uses: actions/cache@v4
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: | # Try less specific keys if primary misses
            ${{ runner.os }}-node-
      - name: Install Dependencies
        run: npm ci

이 워크플로 최적화하기

프런트엔드 코드와 백엔드 코드를 모두 빌드하는 워크플로를 생각해 보십시오. 현재는 순차적으로 실행되고 체크아웃에서 전체 기록을 가져옵니다. 성능을 크게 향상할 수 있는 변경 두 가지는 무엇일까요?

name: Inefficient Workflow
on: [push]
jobs:
  build-all:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Frontend Deps
        run: npm install
      - name: Build Frontend
        run: npm run build
      - name: Install Backend Deps
        run: pip install -r requirements.txt
      - name: Build Backend
        run: python setup.py build

복습: 속도를 위한 조정

GitHub Actions 워크플로를 최적화하는 강력한 기법을 학습하셨습니다!

  • 병목 지점 식별: GitHub UI와 로그를 사용합니다.
  • 작업 병렬화: 독립적인 작업을 동시에 실행합니다.
  • 체크아웃 최적화: 얕은 복제를 사용합니다.
  • 아티팩트 줄이기: 업로드 및 다운로드 크기를 작게 유지합니다.
  • 경로 필터링: 관련 파일이 변경된 경우에만 작업을 실행합니다.
  • 더 빠른 실행 환경: 적절한 실행 환경 리소스를 선택합니다.
  • 고급 캐싱: 세분화된 키와 여러 캐시를 사용합니다.

이러한 전략을 적용하면 파이프라인을 더 빠르고 효율적으로 만들고 귀중한 시간과 리소스를 절약할 수 있습니다.

자주 묻는 질문

“파이프라인 성능 조정” 강의는 무료인가요?

네 — “파이프라인 성능 조정” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 CI/CD with GitHub Actions & DevOps Pipelines 강의 전체를 잠금 해제할 수 있습니다. CI/CD with GitHub Actions & DevOps Pipelines 강의에는 총 4개의 강의가 포함되어 있습니다.

“파이프라인 성능 조정”에서 뭘 배우나요?

병목을 식별하고 고급 기법을 적용하여 GitHub Actions 워크플로의 실행 속도와 리소스 사용량을 최적화합니다. 브라우저에서 직접 실행하는 실습 코드로 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. DORA 지표 및 CI/CD 상태
  2. 파이프라인 성능 조정
  3. DevOps 자동화의 미래 동향
  4. CI/CD 비용 및 실행기 효율 최적화
← CI/CD with GitHub Actions & DevOps Pipelines(으)로 돌아가기