GitHub ↗
CHAPTER 04 OF 10
🐳

DevOps & Infrastructure Skills

DevOps & 인프라 스킬 — 배포를 두려움 없이

DevOps 스킬은 단순히 yaml 파일을 대신 써주는 것이 아니다. 배포 과정의 체계적 사고를 Claude에게 심어줘, 인프라 설계 전체를 파트너십으로 진행하게 한다.

DevOps & Infrastructure Skills cheatsheet
🍌 NANO BANANA CHEATSHEET · CH 04

Overview

개관

DevOps의 가장 큰 고통: CI/CD 파이프라인 설정은 매번 처음 하는 것처럼 느껴진다. 프로젝트마다 Node 버전이 다르고, 테스트 명령어가 다르고, 배포 환경이 다르다.

DevOps 스킬은 Claude가 현재 프로젝트의 package.json, Dockerfile, 기존 workflow를 읽고 그에 맞는 CI/CD 설정을 생성하도록 한다. 템플릿이 아니라 현재 코드베이스에 맞춤화된 설정이다.

cc-devops-skills 패키지: Docker, Kubernetes, Terraform, GitHub Actions, 환경 진단, 마이그레이션 감사를 하나의 패키지로 제공. npx skills add akin-ozer/cc-devops-skills -g

🎯 Learning Goals
  • GitHub Actions workflow를 프로젝트 구조에 맞게 자동 생성할 수 있다
  • Docker multi-stage 빌드로 이미지 크기를 최소화하는 원칙을 안다
  • Terraform으로 AWS 인프라를 코드로 관리하는 기본 패턴을 이해한다
  • 배포 체크리스트 스킬로 프로덕션 배포 전 자동 검증 루틴을 구성한다

Sections

본문

GitHub Actions — 프로젝트 분석 기반 생성

DevOps 스킬의 핵심 기능: 기존 파일을 읽고 적합한 workflow를 생성한다.

package.json의 scripts를 보고 test/build/lint 명령어를 자동 파악. .nvmrc나 package.json engines를 보고 Node 버전 설정. Dockerfile이 있으면 docker build/push 스텝 추가. 환경변수는 GitHub Secrets 참조로 처리.

Docker Multi-stage — 이미지 최적화

Dockerfile 최적화의 3원칙: 1.

레이어 캐싱: COPY package.json → npm install → COPY src (의존성 변경이 없으면 install 캐시 재사용) 2.

Multi-stage: Builder(빌드 도구 포함) → Runner(빌드 산출물만) — 최종 이미지 크기 50-70% 감소 3.

비-root 사용자: 보안을 위해 USER node 추가

DevOps 스킬은 이 세 원칙을 항상 적용한다.

배포 체크리스트 Hook 연동

배포 직전 체크리스트 스킬을 PostToolUse Hook으로 연동하면, git push가 실행될 때마다 자동으로 체크리스트가 돌아간다.

환경변수 검증 → 마이그레이션 상태 → 테스트 통과 → 보안 헤더 → 롤백 계획. 하나라도 실패하면 push를 차단한다.

💡 Analogy · 비유
파일럿의 체크리스트

숙련된 파일럿도 비행 전 체크리스트를 생략하지 않는다. 익숙함이 실수를 낳는다는 걸 알기 때문이다. DevOps 스킬의 배포 체크리스트는 경험 많은 엔지니어도 실수하는 환경변수 누락, 마이그레이션 미실행, 보안 설정 오류를 시스템적으로 방지한다.

DevOps 스킬이 생성하는 GitHub Actions workflow (Next.js 프로젝트 기준)

yaml
name: CI/CD Pipeline

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version-file: '.nvmrc'  # .nvmrc 자동 감지
          cache: 'npm'
          
      - run: npm ci
      - run: npm run lint
      - run: npm test -- --coverage
      
      - name: Upload coverage
        uses: codecov/codecov-action@v4
  
  build-and-deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Build Docker image
        run: |
          docker build \
            --build-arg NODE_ENV=production \
            -t ${{ secrets.REGISTRY }}/app:${{ github.sha }} .
            
      - name: Push to registry
        run: |
          echo ${{ secrets.REGISTRY_PASSWORD }} | docker login -u ${{ secrets.REGISTRY_USER }} --password-stdin
          docker push ${{ secrets.REGISTRY }}/app:${{ github.sha }}

DevOps 스킬은 .nvmrc 파일 존재를 감지해 node-version-file을 자동 설정한다. 시크릿은 하드코딩 없이 GitHub Secrets 참조로만 처리한다.

🏭 현업에서의 평가
CI/CD 파이프라인 코드 리뷰에서 빠지지 않는 코멘트: 'NODE_AUTH_TOKEN을 하드코딩했네요'. 시크릿 관리, 캐싱 전략, 실패 시 알림 설정 — DevOps 스킬은 이런 실수를 처음부터 방지한다.

✅ 시니어가 보는 것

  • 시크릿이 GitHub Secrets/환경변수로만 참조되는가
  • node_modules 캐싱으로 CI 속도를 최적화했는가
  • Docker 이미지가 multi-stage로 최소화되어 있는가
  • 배포 실패 시 롤백 계획이 있는가

Key Takeaways

핵심 정리

DevOps 스킬은 현재 코드베이스를 읽고 생성한다

템플릿이 아니라 프로젝트 파일 분석 기반 맞춤 설정이다.

배포 체크리스트는 Hook으로 강제 실행

CLAUDE.md 규칙은 무시될 수 있지만 PreToolUse Hook은 시스템이 보장한다.

Docker multi-stage로 이미지 크기 50-70% 감소

빌드 도구와 런타임 이미지를 분리하는 것이 표준이다.