운영 런북
서버 구성
Nginx가 도메인을 라우팅하고, 백엔드·프론트엔드가 각각 Docker 컨테이너로 실행됩니다.
api.zeroone.it.kr/test-api.zeroone.it.kr→ 백엔드zeroone.it.kr/test.zeroone.it.kr→ 프론트엔드- 운영/SSH 등 관리 포트는 인프라 담당자 외 접속 제한, 기본 포트(3000·8080·22 등) 사용 회피.
- 인프라는 AWS Lightsail 기반(+ On-Premise 구성도 보유).
배포
운영 반영은 항상 백엔드 → 프론트엔드 순서입니다. 프론트가 새 API/데이터 형태를 기대하므로 백엔드가 먼저 운영에서 정상 동작해야 합니다.
백엔드 (Jenkins → GitHub Actions 이관 중)
- PR에
release:patch/release:minor/release:major중 정확히 하나의 라벨을 붙입니다. - Jenkins(또는 이관된 Actions)에서 운영 배포 실행 → migration 검증 → 이미지 빌드 → 운영 반영.
- 배포 성공 확인 (이 단계만으로 FE 릴리스 기록이 생기지는 않음).
프론트엔드
develop→mainPR에 release 라벨 하나를 붙이고 CI 통과 확인 후 머지.- GitHub Actions(
deploy-prod.yml)가 라벨 확인 → 버전 계산 → Docker 이미지 빌드 → 운영 배포 → health/smoke check. - 성공 시
releases/prod-YYYYMMDD-HHmm.yaml에 **최종 운영 조합(Frontend + Backend + DB + Rollback target)**을 기록.
릴리스 기록 / 버전 규칙
- release intent는 PR에서 계산:
patchv1.0.0→1.0.1,minor→1.1.0,major→2.0.0.hotfix라벨은 쓰지 않습니다. - 이미지 태그는 불변·날짜 미포함:
zeroone-frontend:vMAJOR.MINOR.PATCH-shortCommit. prod/latest-prod는 움직이는 pointer 태그 — 배포 식별·롤백 대상으로 절대 사용 금지.- 운영 배포 순서:
db_migration → backend → backend_health_check → frontend → e2e_check.
QA · 카나리
- QA 원칙은 Shift-Left(기획 단계부터 품질 개입)와 Shift-Right(실제와 같은 환경 검증)를 함께 따릅니다.
- 카나리 릴리스: 전체가 아닌 일부(1%)에 먼저 노출해 검증. QA 실배포 시에도 운영 컨테이너는 건드리지 않고 임시 포트·격리 DB 카나리로 먼저 검증 후 적용합니다.
- 배포 시 기능 점검에 그치지 않고 “내가 유저라면” 관점으로 직접 사용해 본 뒤 배포합니다.
모니터링
- 에러 모니터링은 Glitchtip(Sentry 호환) 사용 예정. 현재 외부 키(Sentry/Glitchtip·Slack·Notion·Claude)는 미등록 상태로 키가 없으면 skip 처리됩니다.
- 배포 알림은 Slack(Jenkins CI 연동, PR 알림 채널)으로 전달됩니다.
롤백
releases/에 기록된 고정 이미지 태그 기준으로 롤백합니다.
- 실패 직전의 최신 성공 릴리스 YAML을 엽니다.
rollback.app_rollback_target의 고정 frontend/backend 이미지 태그를 복사.- 해당 고정 이미지를 배포 → 백엔드 health check → 프론트 smoke/E2E check.
- 결과를 새
releases/prod-*.yaml로 기록.
규칙:
prod/latest-prod로 롤백하지 않습니다 (고정 태그만).- 근거가 없으면 frontend/backend를 호환 조합으로 함께 롤백.
- 파괴적 DB 롤백은 자동 실행하지 않으며, migration 호환성이 불확실하면 앱 이미지 교체 전 멈추고 확인.
장애 대응 시작점
- 최신
releases/prod-*.yaml을 열어 현재 운영 backend/frontend 이미지 확인. - DB migration 상태 확인.
rollback.app_rollback_target고정 태그 확인 (pointer 태그 사용 금지).- 상세 절차는
docs/ops/version-management.md롤백 가이드 참조.
장애 후에는 근본 원인 분석·재발 방지·지식 공유를 위해 Incident Review를 문서로 남깁니다 (예: AWS malware 감염, 운영 서버 이전 중 이미지 삭제, 브랜치 미분리로 선택 배포 불가 등 사례 축적).
원문: