본문 바로가기
컴퓨터&CS

CI/CD와 배포 자동화

by 노잉맨 2025. 2. 3.

 

CI/CD와 배포 자동화

소프트웨어 개발에서 CI/CD(Continuous Integration & Continuous Deployment)는 효율적인 코드 배포를 가능하게 합니다. 이번 글에서는 GitHub Actions, Netlify, Docker, Kubernetes를 활용한 배포 자동화 방법을 소개합니다.

1. CI/CD란 무엇인가?

CI/CD는 지속적인 통합(Continuous Integration)과 지속적인 배포(Continuous Deployment)를 의미하며, 자동화된 빌드와 배포 프로세스를 포함합니다.

  • CI(Continuous Integration): 코드 변경 사항을 자동으로 병합 및 테스트
  • CD(Continuous Deployment): 코드 변경 사항이 자동으로 프로덕션 환경에 배포

2. GitHub Actions를 활용한 CI/CD 자동화

GitHub Actions는 GitHub 저장소에서 직접 CI/CD를 설정할 수 있는 강력한 기능을 제공합니다.

2.1 GitHub Actions 기본 설정


name: Deploy to Production
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
      - name: Build project
        run: npm run build
      - name: Deploy
        run: npm run deploy
        

3. Netlify를 활용한 정적 사이트 배포

Netlify는 정적 웹사이트 배포를 위한 강력한 플랫폼입니다.

3.1 Netlify를 이용한 간단한 배포

  • GitHub 저장소를 Netlify에 연결
  • 자동 빌드 및 배포 설정

npm run build && netlify deploy
        

4. Docker와 Kubernetes를 활용한 컨테이너 배포

4.1 Docker로 컨테이너 생성

Docker를 활용하면 애플리케이션을 컨테이너화하여 일관된 환경에서 실행할 수 있습니다.


# Dockerfile
FROM node:14
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]
        

4.2 Kubernetes를 활용한 배포

Kubernetes는 컨테이너 오케스트레이션 도구로, 대규모 애플리케이션을 안정적으로 배포할 수 있습니다.


# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app-image
        ports:
        - containerPort: 80
        

5. 결론: CI/CD 도입의 장점

  • 자동화된 배포: GitHub Actions를 활용한 자동 배포
  • 정적 사이트 배포: Netlify를 통한 간단한 웹사이트 배포
  • 컨테이너화: Docker를 활용한 일관된 실행 환경 제공
  • 확장성: Kubernetes를 통한 대규모 서비스 운영 가능

CI/CD를 활용하면 개발 속도를 높이고 안정적인 배포가 가능해집니다.