에이전트가 한 일을 되돌리는 법 — 4가지 롤백 전략과 그 한계
에이전트가 production 에서 행동하면, 그 행동을 *되돌릴 수 있어야* 한다. 단순 "ctrl+z" 가 아니다. 4가지 롤백 전략과 각각 작동하지 않는 시나리오.
에이전트가 production 에서 무엇을 하면, 그 무엇 을 되돌릴 수 있어야 한다. 이게 AI 에이전트 도입의 가장 자주 빠지는 요건. "ctrl+z" 정도로 생각하기 쉬운데, production 의 행동을 되돌리는 일 은 작은 자동화 4 종류 + 그 4 종류가 작동 안 하는 시나리오 별도 다.
이 글은 우리가 6개월 동안 정착시킨 4 롤백 전략 과 각각의 한계.
전략 1 — 역행 액션 큐
가장 단순. 에이전트가 모든 액션 직후 그것의 역행 액션 을 큐에 적음. 롤백 시 큐를 역순 으로 실행.
에이전트가 한 액션 → 큐에 추가된 역행 액션
─────────────────────────────┼──────────────────────────
Deploy v2.4.7 to staging → Deploy v2.4.6 to staging
Update flag enable_x = true → Update flag enable_x = false
Restart service api-1 → (없음 — restart 는 idempotent)작동 안 하는 시나리오 — 한 행동이 다른 행동의 입력 일 때. v2.4.7 deploy 후 v2.4.7 의 DB migration 이 자동으로 일어났으면, v2.4.6 으로 롤백 해도 DB 가 맞지 않음.
전략 2 — snapshot 기반
에이전트 행동 직전 에 시스템 상태 snapshot 을 찍음. 롤백 = snapshot 으로 복원.
VM snapshot, DB point-in-time-recovery, k8s deployment revision history 등이 이 패턴.
작동 안 하는 시나리오 — snapshot 이후 발생한 외부 효과. 에이전트가 외부 결제 API 를 호출했으면, snapshot 으로 시스템은 돌아가지만 결제 자체는 발생. 외부 effect 의 보상은 별도 절차 필요.
전략 3 — forward 보정
롤백 대신 새 forward 행동 으로 보정. 예: 잘못된 알람을 보냈으면 수정 알람 을 보냄. 잘못된 deploy 면 새 deploy 로 fix.
이게 production 에서 가장 흔한 롤백 형태. 진짜 "되돌리기" 가 불가능한 행동이 많기 때문.
작동 안 하는 시나리오 — 시간 민감 한 행동. 알람을 보낸 후 15분이 지났으면 수정 알람의 효과가 다름. 15분 동안 받아본 사람은 이미 행동했음.
전략 4 — blast radius 축소 (롤백을 피함)
가장 중요한 전략은 롤백 자체를 피하는 것. 에이전트가 큰 행동 을 하기 전에 작은 행동 으로 영향 범위를 제한.
예:
- production 직접 deploy 없음 — 항상 canary 5% → 검증 → 25% → 100% 순서
- 외부 API 호출 제한 — 한 번에 1건, 결과 검증 후 다음
- DB 변경 2 단계 — schema add (additive only), 후일 add column 사용 시작
이 전략의 한계 — 에이전트의 행동 속도가 느려짐. 사람이 직접 한 번에 하는 일을 에이전트가 5단계로 쪼개 하면 전체 시간이 5배. ROI 가 조건부.
4 전략을 조합 한 우리 패턴
위 4 전략을 조합 해 사용:
에이전트의 행동 종류 | 우선 전략
──────────────────────────────┼────────────────────────────
configuration / flag 변경 | 1. 역행 큐 (가장 단순)
배포 | 4. blast radius (canary) + 1. 역행 큐
DB schema 변경 | 4. blast radius (additive only)
외부 API 호출 | 3. forward 보정 (rollback 불가)
대용량 변경 (수백 행 이상) | 2. snapshot + 4. blast radius이 조합이 6개월 후 결정한 답. 처음에는 전략 1 만으로 충분 하다 가정했지만, 첫 DB migration 사고 에서 깨졌다.
한계 — 되돌릴 수 없는 행동
아무 전략으로도 되돌릴 수 없는 행동이 있다:
- 외부 통보 (이메일, SMS, 결제 confirm)
- 물리 장비 제어 (스마트팩토리, IoT)
- 시간 의존 결정 (옛 시각 기반 토큰 무효화)
- 외부 시스템에 영향 (제3자 trigger)
이런 행동은 에이전트에게 위임 X. 사람이 명시적으로 trigger. 우리 권한 모델에서 별도 카테고리 로 분리. (→ 에이전트가 production 권한을 가질 수 있는가)
역행 큐, snapshot, forward 보정, blast radius 축소 — production 에이전트에 권한을 줄 때는 이 4 롤백 전략 중 어느 것이 적용되는가 를 권한 부여의 조건 으로 명시해야 한다. 그래야 사고 시 수습 가능성 이 예측 가능 해진다.
지금 production 에이전트의 권한 경계 를 결정 중인 팀이라면 그 매핑부터. 전략 없이 권한 부여 = 사고 = 영구 권한 회수.
비슷한 글
기획자가 코드를 배포하면, 장애는 누가 책임질까
AI로 제품 담당자가 직접 코드를 만들고 여러 에이전트가 동시에 작업하는 조직에서, 운영에 나가는 변경을 누가 무엇으로 확인해야 하는지. NIST SSDF, SLSA provenance, Google SRE 포스트모템 문화를 근거로 작성자와 분리된 검증·승인·복구의 역할 설계를 정리했다.
백재민
에이전트 시대의 Eclipse 플러그인 — 작업 컨텍스트는 20년 전에도 문제였다
Mylyn 이 2000년대에 풀려던 문제와 지금 에이전트 컨텍스트 문제는 같습니다. 달라진 건 그 컨텍스트를 읽는 쪽에 사람만 있는 게 아니라는 점입니다.
김영상
에이전트 시대의 VS Code 확장 — 개발자는 에디터에서 무엇을 보는가
코드 작성 비용이 무너진 뒤 개발자의 시간은 판단과 승인으로 옮겨갔습니다. 그 일들이 왜 에디터 밖에 있으면 안 되는지, VS Code 확장을 만들며 내린 선택들.
이승백