🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

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

AI Generated

2025. 10. 31. · 23 Views

DevOps 핵심 개념 완벽 정리

초급 개발자를 위한 DevOps 핵심 개념 가이드입니다. CI/CD, 컨테이너화, 인프라 자동화 등 실무에서 필수적인 DevOps 도구와 개념을 실제 코드 예제로 배워보세요.


카테고리:JavaScript
언어:JavaScript
메인 태그:#DevOps
서브 태그:
#Docker#CI/CD#Kubernetes#Infrastructure

들어가며

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

목차

  1. Docker_컨테이너_기본
  2. Docker_Compose_멀티_컨테이너
  3. GitHub_Actions_CI_파이프라인
  4. 환경_변수_관리
  5. Health_Check_엔드포인트
  6. Nginx_리버스_프록시_설정
  7. 로깅_미들웨어
  8. Kubernetes_배포_설정
  9. 자동_재시작_스크립트
  10. 메트릭_수집_엔드포인트

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

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

댓글 (0)

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