이미지 로딩 중...

DevOps 핵심 개념 완벽 정리 - 슬라이드 1/11
C

CodeDeck AI

2025. 11. 8. · 5 Views

DevOps 핵심 개념 완벽 정리

DevOps의 핵심 개념과 실전 도구를 코드로 배워봅니다. Docker, CI/CD, Infrastructure as Code 등 실무에서 꼭 필요한 DevOps 기술을 실습 코드와 함께 설명합니다.


카테고리:Python
언어:Python
난이도:intermediate
메인 태그:#DevOps
서브 태그:
#Docker#CI/CD#Kubernetes#Infrastructure

들어가며

이 글에서는 DevOps 핵심 개념 완벽 정리에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. Dockerfile_기본_구조
  2. Docker_Compose_멀티_컨테이너
  3. GitHub_Actions_CI_파이프라인
  4. Kubernetes_Pod_배포
  5. Terraform_인프라_코드화
  6. Ansible_자동화_스크립트
  7. Prometheus_모니터링_설정
  8. GitOps_배포_자동화
  9. 헬스체크_엔드포인트
  10. 환경변수_설정_관리

1. Dockerfile_기본_구조

개요

Docker 컨테이너를 생성하기 위한 Dockerfile의 기본 구조입니다. 베이스 이미지부터 애플리케이션 실행까지의 과정을 정의합니다.

코드 예제

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]

설명

Python 베이스 이미지를 사용하여 작업 디렉토리를 설정하고, 의존성을 설치한 후 애플리케이션을 실행합니다. 8000번 포트를 노출합니다.


2. Docker_Compose_멀티_컨테이너

개요

여러 서비스를 함께 실행하기 위한 Docker Compose 설정입니다. 웹 애플리케이션과 데이터베이스를 함께 관리합니다.

코드 예제

version: '3.8'
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secret

설명

웹 서비스는 현재 디렉토리에서 빌드하고, PostgreSQL 데이터베이스는 공식 이미지를 사용합니다. 환경변수로 비밀번호를 설정합니다.


3. GitHub_Actions_CI_파이프라인

개요

코드 푸시 시 자동으로 테스트를 실행하는 CI 파이프라인입니다. 지속적 통합의 핵심 개념을 구현합니다.

코드 예제

name: CI
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: pip install -r requirements.txt
      - run: pytest tests/

설명

코드가 푸시될 때마다 자동으로 의존성을 설치하고 테스트를 실행합니다. 테스트 실패 시 배포를 방지할 수 있습니다.


4. Kubernetes_Pod_배포

개요

Kubernetes에서 애플리케이션을 배포하기 위한 Pod 정의입니다. 컨테이너 오케스트레이션의 기본 단위입니다.

코드 예제

apiVersion: v1
kind: Pod
metadata:
  name: myapp
spec:
  containers:
  - name: web
    image: myapp:1.0
    ports:
    - containerPort: 8000

설명

myapp이라는 이름의 Pod를 생성하고, 컨테이너 이미지를 지정합니다. 8000번 포트로 서비스를 제공합니다.


5. Terraform_인프라_코드화

개요

Infrastructure as Code(IaC)를 구현하는 Terraform 예제입니다. 클라우드 리소스를 코드로 관리합니다.

코드 예제

resource "aws_instance" "web" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  tags = {
    Name = "WebServer"
  }
}

설명

AWS EC2 인스턴스를 코드로 정의합니다. AMI ID와 인스턴스 타입을 지정하여 자동으로 서버를 프로비저닝할 수 있습니다.


6. Ansible_자동화_스크립트

개요

서버 설정을 자동화하는 Ansible playbook입니다. 반복 작업을 코드로 관리하여 일관성을 보장합니다.

코드 예제

---
- hosts: webservers
  tasks:
    - name: Install Nginx
      apt:
        name: nginx
        state: present
    - name: Start Nginx
      service:
        name: nginx
        state: started

설명

웹서버 그룹에 Nginx를 설치하고 시작합니다. 여러 서버에 동일한 설정을 일괄 적용할 수 있습니다.


7. Prometheus_모니터링_설정

개요

애플리케이션 메트릭을 수집하는 Prometheus 설정입니다. 시스템 상태를 실시간으로 모니터링합니다.

코드 예제

global:
  scrape_interval: 15s
scrape_configs:
  - job_name: 'myapp'
    static_configs:
      - targets: ['localhost:8000']
        labels:
          env: 'production'

설명

15초마다 메트릭을 수집하도록 설정합니다. localhost:8000에서 실행 중인 애플리케이션의 성능 데이터를 모니터링합니다.


8. GitOps_배포_자동화

개요

Git 저장소를 기반으로 배포를 자동화하는 ArgoCD 애플리케이션 정의입니다. 선언적 배포 방식을 구현합니다.

코드 예제

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: myapp
spec:
  source:
    repoURL: https://github.com/user/repo
    path: k8s/
  destination:
    server: https://kubernetes.default.svc

설명

Git 저장소의 k8s 디렉토리에 있는 매니페스트를 자동으로 클러스터에 동기화합니다. Git이 배포의 단일 진실 공급원이 됩니다.


9. 헬스체크_엔드포인트

개요

애플리케이션의 상태를 확인하는 헬스체크 API입니다. 로드밸런서와 오케스트레이터가 서비스 가용성을 판단합니다.

코드 예제

from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/health')
def health():
    return jsonify({"status": "healthy"}), 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

설명

/health 엔드포인트로 GET 요청 시 상태를 반환합니다. Kubernetes나 로드밸런서가 이를 통해 컨테이너의 정상 작동 여부를 확인합니다.


10. 환경변수_설정_관리

개요

12-Factor App 원칙에 따라 환경별 설정을 분리합니다. 민감한 정보를 코드에서 분리하여 보안을 강화합니다.

코드 예제

import os

DATABASE_URL = os.getenv('DATABASE_URL', 'sqlite:///default.db')
SECRET_KEY = os.getenv('SECRET_KEY', 'dev-secret')
DEBUG = os.getenv('DEBUG', 'False') == 'True'

print(f"DB: {DATABASE_URL}, Debug: {DEBUG}")

설명

환경변수에서 설정값을 읽어오고, 없으면 기본값을 사용합니다. 개발/스테이징/프로덕션 환경별로 다른 설정을 적용할 수 있습니다. 중급 개발자를 위한 DevOps 핵심 개념 10가지를 실전 코드와 함께 정리했습니다. 각 개념은 실무에서 바로 활용할 수 있는 예제로 구성되어 있습니다.


마치며

이번 글에서는 DevOps 핵심 개념 완벽 정리에 대해 알아보았습니다. 총 10가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.

관련 태그

#DevOps #Docker #CI/CD #Kubernetes #Infrastructure

#DevOps#Docker#CI/CD#Kubernetes#Infrastructure#Python

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.