본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
CodeDeck AI
2025. 11. 8. · 17 Views
DevOps 핵심 개념 완벽 정리
DevOps의 핵심 개념과 실전 도구를 코드로 배워봅니다. Docker, CI/CD, Infrastructure as Code 등 실무에서 꼭 필요한 DevOps 기술을 실습 코드와 함께 설명합니다.
들어가며
이 글에서는 DevOps 핵심 개념 완벽 정리에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- Dockerfile_기본_구조
- Docker_Compose_멀티_컨테이너
- GitHub_Actions_CI_파이프라인
- Kubernetes_Pod_배포
- Terraform_인프라_코드화
- Ansible_자동화_스크립트
- Prometheus_모니터링_설정
- GitOps_배포_자동화
- 헬스체크_엔드포인트
- 환경변수_설정_관리
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
댓글 (0)
함께 보면 좋은 카드 뉴스
VPC 네트워크의 기초 - CIDR과 서브넷 설계 완벽 가이드
초급 개발자를 위한 VPC와 서브넷 설계 입문서입니다. 도서관 비유로 CIDR 개념을 쉽게 이해하고, 실무에서 자주 사용하는 서브넷 분할 전략을 단계별로 배워봅니다. 점프 투 자바 스타일로 술술 읽히는 네트워크 입문 가이드입니다.
AWS 리소스 정리와 비용 관리 완벽 가이드
AWS 사용 후 리소스를 안전하게 정리하고 예상치 못한 과금을 방지하는 방법을 배웁니다. 프리티어 관리부터 비용 모니터링까지 실무에서 꼭 필요한 내용을 다룹니다.
AWS 고가용성과 내결함성 아키텍처 설계 기초
서비스가 멈추지 않는 시스템을 만들고 싶으신가요? AWS의 글로벌 인프라를 활용한 고가용성과 내결함성 아키텍처 설계 원칙을 실무 중심으로 배워봅시다. 초급 개발자도 쉽게 이해할 수 있도록 스토리와 비유로 풀어냈습니다.
직접 구축한 서버의 현실과 클라우드의 필요성
서버를 직접 운영하며 겪는 현실적인 어려움부터 클라우드가 해결해주는 핵심 문제까지, 초급 개발자를 위한 쉽고 실질적인 가이드입니다. 실무 상황 스토리로 풀어낸 클라우드 도입 결정 가이드.
이스티오 기반 마이크로서비스 플랫폼 완벽 가이드
Kubernetes와 Istio를 활용한 엔터프라이즈급 마이크로서비스 플랫폼 구축 방법을 실전 프로젝트로 배웁니다. Helm 차트 작성부터 트래픽 관리, 보안, 모니터링까지 전체 과정을 다룹니다.