🔧 DevOps

DevOps

데브옵스

개발과 운영을 통합하는 문화/실천. CI/CD, IaC, 모니터링이 핵심 요소.

상세 설명

DevOps는 Development(개발)와 Operations(운영)의 합성어로, 개발팀과 운영팀 사이의 사일로(silo)를 허물고 협업을 강화하는 문화와 실천 방법론입니다. 2009년 Patrick Debois가 DevOpsDays를 시작하면서 본격적으로 확산되었습니다.

DevOps의 핵심 원칙은 CALMS로 요약됩니다: Culture(문화), Automation(자동화), Lean(린), Measurement(측정), Sharing(공유). 기술보다 문화가 먼저이며, 실패를 비난하지 않는 Blameless 문화가 중요합니다.

주요 실천 방법으로는 CI/CD(지속적 통합/배포), IaC(코드형 인프라), 모니터링 및 로깅, 마이크로서비스 아키텍처 등이 있습니다. 이를 통해 배포 빈도를 높이고 MTTR(평균 복구 시간)을 줄여 비즈니스 가치 전달 속도를 높입니다.

DORA(DevOps Research and Assessment) 메트릭은 DevOps 성숙도를 측정하는 표준으로, 배포 빈도, 변경 리드 타임, 변경 실패율, 서비스 복구 시간 4가지를 측정합니다. Elite 팀은 하루에 여러 번 배포하고 1시간 이내에 복구합니다.

코드 예제

# GitHub Actions CI/CD 파이프라인 예제
name: DevOps Pipeline

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

jobs:
  build-test-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # 빌드
      - name: Build
        run: |
          docker build -t myapp:${{ github.sha }} .

      # 테스트
      - name: Unit Tests
        run: docker run myapp:${{ github.sha }} npm test

      - name: Integration Tests
        run: |
          docker-compose -f docker-compose.test.yml up -d
          ./run-integration-tests.sh

      # 보안 스캔
      - name: Security Scan
        uses: aquasecurity/trivy-action@master
        with:
          image-ref: myapp:${{ github.sha }}

      # 배포 (main 브랜치만)
      - name: Deploy to Production
        if: github.ref == 'refs/heads/main'
        run: |
          kubectl set image deployment/myapp \
            myapp=myapp:${{ github.sha }} --record

실무에서 이렇게 말해요

팀장: "지금 배포하는데 2주 걸리는 건 너무 길어. DevOps 도입해서 배포 주기를 일 단위로 줄여보자."

개발자: "먼저 CI/CD 파이프라인부터 구축하고, 테스트 자동화 커버리지 높이면 될까요?"

팀장: "그것도 중요하지만 Blameless 포스트모템 문화부터 정착시키자. 장애 났을 때 비난하면 숨기게 되거든."

면접관: "DevOps 엔지니어로서 가장 중요하게 생각하는 메트릭은 무엇인가요?"

지원자: "DORA 4대 메트릭 중 MTTR을 가장 중요하게 봅니다. 장애는 필연적이라 빠른 복구 능력이 서비스 안정성의 핵심입니다. 그래서 Runbook 자동화와 카오스 엔지니어링에 투자합니다."

리뷰어: "이 PR, 테스트 커버리지가 30%밖에 안 돼요. 최소 80%는 넘겨야 자동 배포 파이프라인 탈 수 있어요."

개발자: "네, 유닛 테스트 추가하고 통합 테스트도 작성하겠습니다."

주의사항

더 배우기