| GaonIT Cloud — 호스팅 & 클라우드
가온IT

무중단 배포(CI/CD)

개발자가 사랑하는 호스팅 & 클라우드. 지금 바로 시작하세요.

무중단 배포 Blue/Green · Canary · Rolling CI/CD · GitOps

무중단 배포 (CI/CD)

사용자 트래픽을 끊지 않고 새 버전을 안전하게 릴리스합니다. 파이프라인 자동화, 점진적 전환, 즉시 롤백을 기본으로 설계합니다. 요금은 별도문의로 안내합니다.

🎯 목표 기반 배포
오류율/지연 p95/전환율 같은 릴리스 게이트를 기준으로 자동 승인/차단.
⚖️ 점진적 전환
1%→5%→10%→50%→100% 단계적 캐나리. 이상 시 자동 롤백.
🔁 무중단
커넥션 드레이닝/헬스체크로 연결 유지. 세션 스티키/헤더 라우팅 지원.
🔐 품질/보안 내장
테스트·SCA·취약점 검사·서명·승인 워크플로우를 파이프라인에 기본 포함.
배포 전략 비교
전략 원리 장점 주의 적합 사례
Rolling 개별 인스턴스 순차 교체 간단, 점진적 스키마 호환성 필요 웹/API 일반
Blue/Green 두 환경 병행, 스위치 전환 즉시 롤백 쉬움 리소스 2배 대형 릴리스
Canary 일부 트래픽만 신버전 리스크 최소화 라우팅/모니터링 필요 빈번한 릴리스
Shadow 실트래픽 복제, 결과만 관찰 안전한 회귀검증 추가 비용 알고리즘/검색
Feature Flag 코드 내 토글 초세밀 제어 플래그 부채 관리 AB/점진 공개
트래픽 전환 기법
기법 설명 전환 시간 장점 주의
LB 가중치 조절 업스트림 가중치로 단계 전환 즉시 세밀 제어 상태 동기화 필요
헤더/쿠키 라우팅 특정 사용자만 신버전 즉시 내부 검증 용이 분기 누락 주의
DNS 스위치 레코드 전환 TTL 내 단순 캐시 지연
표준 CI/CD 파이프라인
소스 — 브랜치 전략, PR 규칙, 코드오너 승인
CI — 빌드·테스트·정적분석·SCA·컨테이너 이미지 생성
서명/스캔 — SBOM, 서명, 이미지 취약점 검사
스테이징 — 캐나리/섀도우·부하·연기법 테스트
승인 — 메트릭 게이트, 수동/자동 승격
프로덕션 — 가중치 전환·세션 드레이닝
관측성 — 릴리스 태그 메트릭/로그/트레이스 연동
롤백 — 버튼 한 번/자동 역전환
릴리스 안전장치
헬스체크 — 스타트업/라이브니스/레디니스 엄격 설정
커넥션 드레이닝 — 기존 연결 유지 후 교체
DB 마이그레이션 — 하위 호환 스키마, 이중 쓰기/리드
플래그 — 롤아웃/롤백을 코드 토글로 제어
속도제한 — 동시 배포 제한, 최대 실패율 게이트
보안 — 비밀/서명/권한 최소화, 서킷 브레이커
즉시 롤백 시나리오
① 에러·지연 임계 초과 감지 → ② 가중치 0/100 역전환 → ③ 문제 버전 격리 → ④ 포스트모템/재현
* 데이터 스키마는 하위 호환 또는 피처 플래그로 역호환 경로 확보 권장.
예시: CI 파이프라인(YAML)
name: ci-cd
on: [push]
jobs:
  build-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Node
        uses: actions/setup-node@v4
        with: { node-version: '20' }
      - run: npm ci && npm test -- --ci
      - name: Build image
        run: |
          docker build -t registry.example.com/app:${GITHUB_SHA} .
          echo "registry.example.com" | docker login -u $REG_USER --password-stdin
          docker push registry.example.com/app:${GITHUB_SHA}
  deploy-canary:
    needs: build-test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - name: Canary 10%
        run: |
          lbctl weight --service app --stable 90 --canary 10
      - name: Metric gate
        run: |
          ./gate.sh --error-rate-threshold 1 --latency-p95 300
      - name: Promote to 50% → 100%
        run: |
          lbctl weight --service app --stable 50 --canary 50
          ./gate.sh --error-rate-threshold 1 --latency-p95 300
          lbctl weight --service app --stable 0 --canary 100
예시: LB 라우팅(헤더/쿠키)
# NGINX 예시
map $http_x_canary $route_canary { default 0; 1 1; }
map $cookie_canary $cookie_flag { default 0; canary 1; }
upstream app_stable { server 10.0.0.11; server 10.0.0.12; }
upstream app_canary { server 10.0.1.11; }
server {
  listen 443 ssl http2;
  location / {
    if ($route_canary = 1) { proxy_pass http://app_canary; break; }
    if ($cookie_flag = 1) { proxy_pass http://app_canary; break; }
    proxy_pass http://app_stable;
  }
}
예시: RollingUpdate (애플리케이션 배포)
apiVersion: apps/v1
kind: Deployment
metadata: { name: app }
spec:
  replicas: 6
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 2
      maxUnavailable: 0
  selector: { matchLabels: { app: app } }
  template:
    metadata: { labels: { app: app } }
    spec:
      containers:
        - name: app
          image: registry.example.com/app:${TAG}
          readinessProbe: { httpGet: { path: /healthz, port: 8080 }, periodSeconds: 5 }
          livenessProbe:  { httpGet: { path: /live,   port: 8080 }, failureThreshold: 3 }
릴리스 모니터링(관측성)
영역 지표/로그/트레이스 릴리스 태깅 알림
사용자 체감 Apdex, CLS/LCP, 오류율 버전/커밋 SHA p95 지연↑, JS 에러↑
백엔드 RPS, 지연 p50/p95, 4xx/5xx 릴리스/환경 오류율 임계
인프라 CPU/메모리, 네트워크, 드롭 노드/배포 ID 자원 포화
요금 안내
요금: 별도문의

파이프라인 스테이지/보안 스캔/배포 전략(캐나리·블루/그린)/관측성 연동 범위에 따라 산정됩니다.

무중단 배포로 배포 스트레스를 줄이세요
현재 환경을 알려주시면 최적의 전략을 설계해 드립니다.