피드로 돌아가기
Why Retry Is One Of The Most Dangerous Keywords In Software
Dev.toDev.to
Backend

Retry 기반의 시스템 붕괴 방지를 위한 Idempotency 설계 전략

Why Retry Is One Of The Most Dangerous Keywords In Software

Amrishkhan Sheik Abdullah2026년 6월 13일6intermediate

Context

분산 시스템에서 네트워크 일시 오류 해결을 위해 Retry 로직을 단순 도입하는 경향 분석. 응답 유실 시 실행 여부를 알 수 없는 상태에서 발생하는 중복 실행 문제와 시스템 부하 증폭의 한계점 식별.

Technical Solution

  • Idempotency 보장을 통해 Retry 실행 시에도 동일한 결과가 유지되는 상태 설계
  • Transient Failure와 Permanent Failure를 구분하여 불필요한 Retry 시도 제거
  • Exponential Backoff 적용을 통한 대상 서비스의 복구 시간 확보 및 부하 분산
  • Side Effect가 발생하는 작업(결제, 메일 전송 등)에 대한 중복 실행 방지 메커니즘 구축
  • Thundering Herd Problem 방지를 위한 요청 빈도 제어 및 지수적 대기 시간 도입
  • 단순 재시도 로직을 신뢰성 기능이 아닌 분산 시스템의 상태 관리 문제로 접근하는 관점 전환

- [ ] Retry 도입 전 해당 API가 Idempotent하게 설계되었는지 검토 - [ ] HTTP 400, 401 등 Permanent Failure에 대해 Retry 제외 로직 적용 - [ ] 즉시 재시도 대신 Exponential Backoff 알고리즘 구현 여부 확인 - [ ] 중복 결제나 중복 발송 같은 Side Effect 발생 가능성 시나리오 테스트

원문 읽기