오류율/지연 p95/전환율 같은 릴리스 게이트를 기준으로 자동 승인/차단.
무중단 배포
Blue/Green · Canary · Rolling
CI/CD · GitOps
무중단 배포 (CI/CD)
사용자 트래픽을 끊지 않고 새 버전을 안전하게 릴리스합니다. 파이프라인 자동화, 점진적 전환, 즉시 롤백을 기본으로 설계합니다. 요금은 별도문의로 안내합니다.
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 | 자원 포화 |
요금 안내
요금: 별도문의
파이프라인 스테이지/보안 스캔/배포 전략(캐나리·블루/그린)/관측성 연동 범위에 따라 산정됩니다.
무중단 배포로 배포 스트레스를 줄이세요
현재 환경을 알려주시면 최적의 전략을 설계해 드립니다.
무중단 배포 상담
ℹ️
개인정보 처리 안내
문의 응대를 위해서만 사용되며 일정 기간 후 파기됩니다.