AI인사이트 로고AI인사이트
챕터 6

DevOps·인프라 자동화 — CI/CD·Docker·클라우드 프롬프트

AI를 활용해 Dockerfile 작성, GitHub Actions CI/CD 파이프라인 설계, Terraform 인프라 코드 생성, Kubernetes 설정, Datadog 모니터링 구축, 장애 대응 런북까지 DevOps 전 영역을 자동화하는 프롬프트 패턴을 다룹니다.

DevOps에 AI가 필요한 이유

DevOps 엔지니어는 코드를 작성하는 시간보다 설정 파일과 씨름하는 시간이 더 많습니다. Dockerfile, CI/CD 워크플로우, Terraform 모듈, Kubernetes 매니페스트, 모니터링 대시보드 — 각각의 도구마다 고유한 문법과 관행이 있고, 사소한 실수 하나가 프로덕션 장애로 이어질 수 있습니다.

AI 코딩 도구는 이 복잡성을 크게 줄여 줍니다. Cursor나 ChatGPT에 인프라 요구사항을 자연어로 설명하면, 보안 모범 사례가 반영된 설정 파일을 즉시 생성합니다. 시스템 관리자(AI 대체 위험도 58)나 SRE(AI 대체 위험도 22) 같은 역할에서 AI는 반복적인 설정 작업을 자동화하고, 인간은 아키텍처 설계와 의사결정에 집중할 수 있게 해 줍니다.

이번 챕터에서는 DevOps 파이프라인의 각 단계별로 즉시 활용 가능한 프롬프트 패턴을 제공합니다.

Dockerfile 생성 — 최적화된 컨테이너 이미지 만들기

Docker 이미지 최적화는 빌드 시간, 이미지 크기, 보안에 직결됩니다. AI에게 애플리케이션의 기술 스택과 요구사항을 정확히 전달하면, 모범 사례가 적용된 Dockerfile을 생성합니다.

멀티스테이지 Dockerfile 생성 프롬프트

다음 애플리케이션의 프로덕션용 멀티스테이지 Dockerfile을 작성해 주세요.

애플리케이션 타입: Node.js (TypeScript) 웹 서버 패키지 매니저: pnpm 빌드 산출물: dist/ 디렉토리 런타임 요구사항: Node.js LTS, 포트 3000

최적화 요구사항:

  1. 멀티스테이지 빌드 (빌드 의존성 분리)
  2. .dockerignore 파일도 함께 생성
  3. 레이어 캐싱 최적화 (package.json 먼저 복사)
  4. 비루트 사용자로 실행
  5. 보안 모범 사례 적용 (불필요한 패키지 제거, 최소 이미지)
  6. HEALTHCHECK 명령어 포함
  7. 각 단계에 한국어 주석으로 설명

Docker Compose 환경 생성

다음 마이크로서비스 개발 환경의 docker-compose.yml을 작성해 주세요.

서비스 구성:

  • API 서버: Node.js (포트 3000)
  • 프론트엔드: React (포트 3001)
  • PostgreSQL: 15 (포트 5432)
  • Redis: 7 (포트 6379)
  • RabbitMQ: 관리 UI 포함 (포트 5672/15672)

요구사항:

  1. 개발용/프로덕션용 프로필 분리
  2. 볼륨 마운트 (소스 코드 핫리로드)
  3. 환경변수 .env 파일 분리
  4. 서비스 간 의존성 순서 (depends_on + healthcheck)
  5. 네트워크 격리 (frontend/backend 네트워크 분리)
  6. 리소스 제한 설정 (메모리, CPU)

이미지 경량화 분석 프롬프트

다음 Dockerfile을 분석하고 이미지 크기를 최소화해 주세요.

현재 Dockerfile: [코드] 현재 이미지 크기: [크기]

분석 요청:

  1. 불필요한 레이어 식별
  2. 베이스 이미지 대안 제안 (alpine, distroless, scratch)
  3. 빌드 캐시 효율성 분석
  4. 보안 취약점이 있는 패키지 식별
  5. 최적화 전후 예상 크기 비교표

CI/CD 파이프라인 — GitHub Actions 워크플로우 자동화

CI/CD 파이프라인은 코드 변경이 프로덕션에 안전하게 도달하는 경로입니다. AI를 활용하면 복잡한 워크플로우 YAML을 빠르게 작성하고, 실수를 줄일 수 있습니다.

GitHub Actions 워크플로우 생성 프롬프트

다음 프로젝트의 GitHub Actions CI/CD 파이프라인을 설계하고 작성해 주세요.

프로젝트: TypeScript 모노레포 (Turborepo) 구성: apps/web, apps/api, packages/shared

CI 파이프라인 (PR 시):

  1. 변경된 패키지만 감지하여 선택적 빌드
  2. 린트 + 타입 체크 + 단위 테스트 (병렬 실행)
  3. 커버리지 리포트 PR 코멘트 게시
  4. Lighthouse CI 성능 테스트 (web 변경 시)
  5. Docker 이미지 빌드 테스트 (api 변경 시)

CD 파이프라인 (main 머지 시):

  1. 프로덕션 빌드 + E2E 테스트
  2. Docker 이미지 빌드 → 레지스트리 푸시
  3. 스테이징 환경 배포 → 스모크 테스트
  4. 수동 승인 게이트
  5. 프로덕션 배포 (블루/그린)

보안: Secrets 관리, OIDC 인증, 최소 권한 원칙

재사용 가능한 Composite Action 생성

자주 반복되는 CI 단계를 GitHub Composite Action으로 추출해 주세요.

반복 패턴: [워크플로우 YAML에서 반복되는 부분] 요구사항:

  1. inputs/outputs 명확하게 정의
  2. 기본값과 필수 파라미터 구분
  3. 에러 처리 및 로깅
  4. action.yml + README.md 함께 생성
  5. 사용 예시 코드 포함

CI/CD 디버깅 프롬프트

GitHub Actions 워크플로우가 실패합니다. 원인을 분석해 주세요.

워크플로우 YAML: [코드] 에러 로그: [로그] 최근 변경 사항: [변경 내용]

분석 요청:

  1. 에러의 직접 원인 식별
  2. 비슷한 실패를 방지하기 위한 개선 제안
  3. 수정된 워크플로우 YAML 제공
  4. 디버깅을 위한 추가 로깅 포인트 제안

Terraform 인프라 코드(IaC) — 클라우드 리소스 자동화

Terraform은 인프라를 코드로 관리하는 사실상의 표준입니다. AI에게 인프라 요구사항을 전달하면, 모듈화된 Terraform 코드를 빠르게 생성할 수 있습니다.

Terraform 모듈 생성 프롬프트

다음 인프라의 Terraform 모듈을 작성해 주세요.

클라우드: AWS 인프라 요구사항:

  • VPC: 퍼블릭/프라이빗 서브넷, NAT Gateway
  • ECS Fargate: 컨테이너 서비스 (오토스케일링)
  • RDS: PostgreSQL (Multi-AZ, 암호화)
  • ElastiCache: Redis 클러스터
  • ALB: HTTPS 종료, WAF 연동
  • S3: 정적 자산 + CloudFront CDN

구조 요구사항:

  1. 모듈별 분리 (network, compute, database, cache, cdn)
  2. 환경별 변수 파일 (dev/staging/prod)
  3. 원격 상태 관리 (S3 + DynamoDB 락)
  4. 출력값(outputs) 모듈 간 의존성 연결
  5. 태깅 전략 (환경, 팀, 비용 센터)

기존 인프라를 Terraform으로 마이그레이션

현재 수동으로 관리 중인 AWS 인프라를 Terraform으로 가져오는 마이그레이션 계획을 세워 주세요.

현재 리소스: [리소스 목록] 요구사항:

  1. terraform import 실행 계획 (의존성 순서 고려)
  2. 각 리소스의 terraform 코드 생성
  3. plan 실행 시 no changes가 되도록 정확한 속성 매핑
  4. 마이그레이션 단계별 검증 포인트
  5. 롤백 전략

Terraform 보안 검증 프롬프트

다음 Terraform 코드의 보안 문제를 검토해 주세요.

코드: [Terraform 파일] 검토 항목:

  1. 보안 그룹 규칙 (불필요한 포트 개방)
  2. IAM 정책 (최소 권한 원칙 위반)
  3. 암호화 설정 누락 (저장/전송 중 암호화)
  4. 네트워크 격리 부족
  5. 시크릿 하드코딩 여부
  6. 로깅/감사 설정 누락

각 문제에 대해 위험도(높음/중간/낮음)와 수정 코드를 제공해 주세요.

Kubernetes 설정 — 컨테이너 오케스트레이션

Kubernetes 매니페스트는 옵션이 방대하고, 프로덕션 환경에 적합한 설정을 만들기까지 경험이 필요합니다. AI에게 서비스 요구사항과 규모를 전달하면, 견고한 매니페스트를 생성합니다.

Kubernetes 배포 매니페스트 생성

다음 서비스의 Kubernetes 배포 매니페스트를 작성해 주세요.

서비스: Node.js API 서버 Docker 이미지: registry.example.com/api:latest

요구사항:

  1. Deployment: 최소 3 레플리카, RollingUpdate 전략
  2. Service: ClusterIP + Ingress (HTTPS)
  3. HPA: CPU 70%에서 3-10 레플리카 스케일링
  4. 리소스 제한: requests/limits 설정
  5. Liveness/Readiness/Startup Probe 모두 설정
  6. ConfigMap + Secret으로 환경변수 관리
  7. PodDisruptionBudget: 최소 2개 Pod 유지
  8. 보안: non-root, readOnlyRootFilesystem, 불필요한 capability 제거

Kustomize 또는 Helm 차트 형태로 환경별 오버라이드 가능하게 구성해 주세요.

Kubernetes 장애 진단 프롬프트

Kubernetes에서 Pod가 반복적으로 CrashLoopBackOff 상태에 빠집니다. 진단을 도와주세요.

kubectl describe pod 출력: [출력] kubectl logs 출력: [로그] 최근 변경 사항: [배포 내역]

분석 요청:

  1. CrashLoopBackOff의 근본 원인 추론
  2. 추가 확인이 필요한 kubectl 명령어 목록
  3. 즉시 적용 가능한 임시 조치
  4. 근본적인 해결 방안
  5. 재발 방지를 위한 모니터링 설정

Helm 차트 생성 프롬프트

다음 마이크로서비스의 Helm 차트를 생성해 주세요.

서비스 목록: [서비스 이름과 요구사항] 요구사항:

  1. values.yaml에 환경별 설정 분리 (dev/staging/prod)
  2. 공통 템플릿 헬퍼 (_helpers.tpl) 활용
  3. 서비스 간 의존성 관리 (init container 또는 dependency)
  4. Ingress 설정 (호스트 기반 라우팅)
  5. NOTES.txt에 설치 후 확인 사항 포함
  6. 각 파일에 한국어 주석으로 설명

모니터링 및 알림 설정 — Datadog 활용

인프라 자동화의 마지막 퍼즐은 모니터링입니다. Datadog 같은 관측 플랫폼의 설정을 AI로 자동화하면, 시스템 가시성을 빠르게 확보할 수 있습니다.

모니터링 대시보드 설계 프롬프트

다음 서비스의 Datadog 모니터링 대시보드를 설계해 주세요.

서비스: 이커머스 플랫폼 (API + Web + Worker) 모니터링 계층:

  1. 비즈니스 메트릭: 주문 수, 매출, 전환율
  2. 애플리케이션 메트릭: 응답 시간, 에러율, 처리량
  3. 인프라 메트릭: CPU, 메모리, 디스크, 네트워크
  4. 의존성 메트릭: DB 쿼리 시간, 캐시 히트율, 큐 길이

요청:

  1. 대시보드 레이아웃 (위젯 배치 + 크기)
  2. 각 위젯의 쿼리(DQL) 작성
  3. SLO 정의 (가용성 99.9%, 레이턴시 P95 < 200ms)
  4. 환경별 필터 (dev/staging/prod)

알림 규칙 설정 프롬프트

다음 서비스의 알림 규칙을 Datadog Monitor로 설정해 주세요.

서비스: [서비스 정보] 알림 단계:

  1. Warning: 팀 Slack 채널 알림
  2. Critical: PagerDuty 에스컬레이션
  3. Emergency: 전체 온콜 팀 호출

모니터 규칙:

  • 에러율 > 5% (5분 지속) → Warning
  • 에러율 > 15% (5분 지속) → Critical
  • P95 응답시간 > 500ms (10분 지속) → Warning
  • P95 응답시간 > 2s (5분 지속) → Critical
  • Pod 가용 레플리카 < 최소값 → Critical
  • 디스크 사용률 > 85% → Warning

Terraform 또는 Datadog API 기반 코드로 작성해 주세요.

장애 대응 런북 자동 생성

장애 상황에서 가장 중요한 것은 신속하고 정확한 대응입니다. AI를 활용해 런북(Runbook)을 자동 생성하면, 장애 시 당황하지 않고 체계적으로 대응할 수 있습니다.

장애 대응 런북 생성 프롬프트

다음 장애 유형에 대한 대응 런북을 작성해 주세요.

서비스: [서비스 아키텍처 설명] 장애 유형: 데이터베이스 연결 풀 고갈

런북 구조:

  1. 증상 식별: 어떤 메트릭/로그에서 감지되는가?
  2. 영향 범위: 어떤 서비스/사용자에게 영향을 미치는가?
  3. 즉시 대응 (5분 이내):
    • 확인해야 할 대시보드/쿼리
    • 실행해야 할 kubectl/CLI 명령어
    • 임시 완화 조치 (트래픽 차단, 스케일 업 등)
  4. 근본 원인 분석:
    • 일반적인 원인 목록과 확인 방법
    • 로그 검색 쿼리
  5. 해결 절차: 단계별 명령어와 검증 방법
  6. 사후 조치: 포스트모템 템플릿, 재발 방지 대책

모든 명령어는 복사-붙여넣기로 바로 실행 가능하게 작성해 주세요.

포스트모템 보고서 작성 프롬프트

다음 장애에 대한 포스트모템 보고서를 작성해 주세요.

장애 타임라인: [시간별 이벤트] 영향: [영향 범위 및 지속 시간] 조치 내역: [수행한 조치들]

포스트모템 구조:

  1. 요약 (한 문단)
  2. 타임라인 (분 단위)
  3. 근본 원인 분석 (5 Whys 기법 적용)
  4. 영향도 분석 (사용자 수, 매출 손실)
  5. 교훈 (잘한 점 / 개선할 점)
  6. 액션 아이템 (담당자, 기한, 우선순위)

DevOps 도구별 AI 활용 매트릭스

도구 AI 활용 포인트 추천 AI 도구 자동화 수준
Docker Dockerfile 생성, 이미지 최적화, 보안 스캔 Cursor, ChatGPT 높음
GitHub Actions 워크플로우 YAML 생성, 디버깅 GitHub Copilot, Claude 높음
Terraform 모듈 생성, plan 리뷰, drift 감지 ChatGPT, Cursor 중간
Kubernetes 매니페스트 생성, 장애 진단, 최적화 Claude, ChatGPT 중간
Datadog 대시보드 설계, 알림 규칙, 쿼리 작성 ChatGPT, Claude 중간
Ansible 플레이북 생성, 롤 구조화 Cursor, ChatGPT 높음

DevOps AI 자동화의 핵심 원칙

AI가 생성한 인프라 코드를 프로덕션에 바로 적용하면 안 됩니다. 반드시 다음 원칙을 지켜야 합니다.

Plan 먼저, Apply는 나중에: Terraform이든 Kubernetes든, AI가 생성한 코드는 반드시 plan/dry-run으로 변경 사항을 확인한 후 적용하세요.

점진적 배포: 한 번에 모든 것을 바꾸지 마세요. 스테이징 → 카나리 → 프로덕션 순서로 점진적으로 적용하세요.

롤백 계획: AI 생성 설정을 적용하기 전에, 항상 이전 상태로 돌아갈 수 있는 방법을 확보해 두세요.

비밀 정보 분리: AI에게 인프라 코드를 생성 요청할 때, 실제 비밀 정보(API 키, 비밀번호)를 프롬프트에 포함하지 마세요. 변수 참조 형태로 작성하도록 요청하세요.

DevOps는 AI 자동화의 혜택을 가장 크게 받는 영역 중 하나입니다. 반복적인 설정 작업은 AI에게 맡기고, 아키텍처 설계와 장애 대응 전략 수립에 시간을 투자하는 것이 현명한 DevOps 엔지니어의 선택입니다.


다음 챕터 미리보기: 7장 '보안 코드 검증 — 취약점 탐지·OWASP 체크 프롬프트'에서는 AI를 활용해 OWASP Top 10 취약점을 자동 탐지하고, SQL Injection, XSS, CSRF 같은 보안 위협을 코드 레벨에서 차단하며, Snyk를 활용한 의존성 취약점 관리와 시큐어 코딩 패턴을 다룹니다.