본문 바로가기
C.W.K.
Stream
Lesson 12 of 13 · published

롤백

~11 min · rollback, incident, recovery

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

롤백은 자기 워크플로고, 후순위가 아니야

롤백 옵션이 '이전 커밋 다시 배포'뿐이면, 사건이 터졌을 때 이전 커밋의 이미지가 사라졌고 마이그레이션을 되돌릴 수 없고 아무도 테스트하지 않은 롤백 경로가 존재하지 않는다는 걸 깨닫게 돼. 필요하기 전에 롤백 워크플로를 빌드해.

롤백의 실제 의미

배포 타겟마다 롤백 형태가 달라:

  • 컨테이너 오케스트레이터 (ECS, Kubernetes) — 이전 task definition / deployment manifest 재배포. 가장 빠름.
  • 정적 사이트 (Vercel, Netlify, Pages) — 이전 배포 승격. UI 버튼이나 API.
  • Lambda — 별칭을 이전 버전으로 가리킴.
  • 커스텀 VPS 배포 — symlink 스왑, git checkout <previous> 후 배포 스크립트 재실행.

롤백 워크플로

  • 마지막 10배포에서 채워지는 입력값 version: choice를 가진 workflow_dispatch.
  • 또는: 스모크 작업의 if: failure()로 자동 실행 조건.
  • 선택 버전 + 운영자와 함께 Slack/이메일 알림 게시.
  • 롤백 후 항상 스모크 실행 — 롤백 자체 동작 검증.

롤백으로 못 고치는 것

  • 이미 적용된 schema 변경 — forward-fix 마이그레이션 필요.
  • 이미 변경된 데이터 — 가능하면 point-in-time recovery, 아니면 손실 수용.
  • 이미 통지된 외부 시스템 (보낸 이메일, 청구된 결제) — un-happen 안 됨.

Code

수동 롤백 워크플로·yaml
name: rollback
on:
  workflow_dispatch:
    inputs:
      version:
        type: string
        required: true
        description: 'SHA or tag to roll back to (e.g., abc1234)'
      reason:
        type: string
        required: true
        description: 'Why are we rolling back?'

jobs:
  rollback:
    runs-on: ubuntu-latest
    environment: production
    permissions:
      id-token: write
      contents: read
    steps:
      - run: echo "Rolling back to ${{ inputs.version }} — reason: ${{ inputs.reason }}"
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: arn:aws:iam::123:role/gha-deploy-prod
          aws-region: us-east-1
      - run: ./deploy.sh ${{ inputs.version }}
      - run: ./tests/smoke.sh
      - name: Notify
        if: always()
        run: ./notify-slack.sh "Rollback to ${{ inputs.version }}: ${{ job.status }}"

External links

Exercise

서비스 하나에 수동 롤백 워크플로를 빌드해. 다음 주 30분 동안 스테이징에서 테스트 일정을 잡아. 처음에 안 된 거 문서화해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.