본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 10. 31. · 23 Views
DevOps 핵심 개념 완벽 정리
초급 개발자를 위한 DevOps 핵심 개념 가이드입니다. CI/CD, 컨테이너화, 인프라 자동화 등 실무에서 필수적인 DevOps 도구와 개념을 실제 코드 예제로 배워보세요.
들어가며
이 글에서는 DevOps 핵심 개념 완벽 정리에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- Docker_컨테이너_기본
- Docker_Compose_멀티_컨테이너
- GitHub_Actions_CI_파이프라인
- 환경_변수_관리
- Health_Check_엔드포인트
- Nginx_리버스_프록시_설정
- 로깅_미들웨어
- Kubernetes_배포_설정
- 자동_재시작_스크립트
- 메트릭_수집_엔드포인트
1. Docker 컨테이너 기본
개요
Docker는 애플리케이션을 컨테이너로 패키징하여 어디서나 동일하게 실행할 수 있게 해줍니다. Dockerfile로 이미지를 정의합니다.
코드 예제
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
설명
Node.js 앱을 Docker 컨테이너로 만드는 기본 설정입니다. 이미지를 빌드하고 어디서나 실행할 수 있습니다.
2. Docker Compose 멀티 컨테이너
개요
여러 컨테이너를 한 번에 관리하고 실행할 수 있는 도구입니다. 웹 서버와 데이터베이스를 함께 띄울 때 유용합니다.
코드 예제
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: secret
설명
웹 앱과 PostgreSQL을 docker-compose up 명령 하나로 함께 실행할 수 있습니다.
3. GitHub Actions CI 파이프라인
개요
코드를 푸시하면 자동으로 테스트와 빌드가 실행되는 CI 파이프라인입니다. 품질을 자동으로 검증합니다.
코드 예제
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm install
- run: npm test
설명
GitHub에 코드를 푸시하면 자동으로 테스트가 실행되어 버그를 조기에 발견할 수 있습니다.
4. 환경 변수 관리
개요
비밀번호나 API 키 같은 민감한 정보를 안전하게 관리하는 방법입니다. .env 파일을 사용합니다.
코드 예제
require('dotenv').config();
const dbConfig = {
host: process.env.DB_HOST,
password: process.env.DB_PASSWORD,
port: process.env.DB_PORT || 5432
};
console.log('Connected to:', dbConfig.host);
설명
환경 변수로 설정값을 분리하면 코드에 비밀번호를 직접 넣지 않아 보안이 강화됩니다.
5. Health Check 엔드포인트
개요
서비스가 정상적으로 작동하는지 확인하는 간단한 엔드포인트입니다. 모니터링과 로드밸런서에 필수입니다.
코드 예제
app.get('/health', (req, res) => {
const healthcheck = {
uptime: process.uptime(),
status: 'OK',
timestamp: Date.now()
};
res.status(200).send(healthcheck);
});
설명
/health 경로로 요청하면 서버 상태를 확인할 수 있어 장애를 빠르게 감지할 수 있습니다.
6. Nginx 리버스 프록시 설정
개요
Nginx를 사용하여 여러 백엔드 서버로 트래픽을 분산하는 설정입니다. 로드 밸런싱의 기초입니다.
코드 예제
server {
listen 80;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
설명
80 포트로 들어온 요청을 3000 포트의 앱으로 전달합니다. 여러 서버로 확장 가능합니다.
7. 로깅 미들웨어
개요
모든 HTTP 요청을 자동으로 기록하는 미들웨어입니다. 문제 발생 시 원인을 추적할 수 있습니다.
코드 예제
app.use((req, res, next) => {
const start = Date.now();
res.on('finish', () => {
const duration = Date.now() - start;
console.log(`${req.method} ${req.url} ${res.statusCode} ${duration}ms`);
});
next();
});
설명
요청 메서드, URL, 응답 코드, 처리 시간을 자동으로 로그에 남겨 성능 분석이 가능합니다.
8. Kubernetes 배포 설정
개요
Kubernetes로 앱을 배포하고 3개의 복제본을 유지하는 설정입니다. 고가용성을 보장합니다.
코드 예제
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
template:
spec:
containers:
- name: web
image: myapp:1.0
ports:
- containerPort: 3000
설명
앱을 3개의 파드로 실행하여 하나가 죽어도 서비스가 계속 작동합니다.
9. 자동 재시작 스크립트
개요
PM2를 사용하여 Node.js 앱이 크래시해도 자동으로 재시작되게 하는 설정입니다.
코드 예제
module.exports = {
apps: [{
name: 'myapp',
script: './server.js',
instances: 2,
autorestart: true,
max_memory_restart: '1G',
env: { NODE_ENV: 'production' }
}]
};
설명
앱이 비정상 종료되면 자동으로 다시 시작되고, 메모리가 1GB 초과 시에도 재시작됩니다.
10. 메트릭 수집 엔드포인트
개요
앱의 성능 지표를 Prometheus 형식으로 노출하는 엔드포인트입니다. 모니터링 시스템과 연동됩니다.
코드 예제
const promClient = require('prom-client');
const register = new promClient.Registry();
const counter = new promClient.Counter({
name: 'http_requests_total',
help: 'Total HTTP requests'
});
app.get('/metrics', (req, res) => {
res.set('Content-Type', register.contentType);
res.end(register.metrics());
});
설명
/metrics 엔드포인트로 앱의 요청 수, 응답 시간 등을 수집하여 Grafana로 시각화할 수 있습니다.
마치며
이번 글에서는 DevOps 핵심 개념 완벽 정리에 대해 알아보았습니다. 총 10가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.
관련 태그
#DevOps #Docker #CI/CD #Kubernetes #Infrastructure
댓글 (0)
함께 보면 좋은 카드 뉴스
Istio 보안 완벽 가이드
마이크로서비스 환경에서 필수적인 Istio 보안 기능을 실무 중심으로 설명합니다. mTLS부터 인증, 인가까지 단계별로 학습하여 안전한 서비스 메시를 구축할 수 있습니다.
Istio 트래픽 관리 완벽 가이드
Istio의 트래픽 관리 기능을 마스터하는 완벽 가이드입니다. VirtualService와 DestinationRule을 활용한 라우팅부터 트래픽 분할, 헤더 기반 라우팅까지 실무에 필요한 모든 내용을 다룹니다.
Istio 설치와 구성 완벽 가이드
Kubernetes 환경에서 Istio 서비스 메시를 설치하고 구성하는 방법을 초급 개발자도 쉽게 이해할 수 있도록 실무 스토리와 비유로 풀어낸 가이드입니다. istioctl 설치부터 사이드카 주입까지 단계별로 학습합니다.
서비스 메시 완벽 가이드
마이크로서비스 간 통신을 안전하고 효율적으로 관리하는 서비스 메시의 핵심 개념부터 실전 도입까지, 초급 개발자를 위한 완벽한 입문서입니다. Istio와 Linkerd 비교, 사이드카 패턴, 실무 적용 노하우를 담았습니다.
Helm 마이크로서비스 패키징 완벽 가이드
Kubernetes 환경에서 마이크로서비스를 효율적으로 패키징하고 배포하는 Helm의 핵심 기능을 실무 중심으로 학습합니다. Chart 생성부터 릴리스 관리까지 체계적으로 다룹니다.