무한 재시도 루프로 인한 자가 DDoS 사고 해결법
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

무한 재시도 루프로 인한 자가 DDoS 사고

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • 백엔드 개발자, 시스템 아키텍트, DevOps 엔지니어
  • 중간~고급 수준의 실무 경험자 (재시도 로직 설계, 서비스 확장성 고려사항 이해 필요)

핵심 요약

  • 무한 재시도 루프로 인해 자가 DDoS 발생
  • for _ in range(3) 대신 지수적 백오프(Exponential Backoff) 적용 필요
  • 내부 요청에도 제한(Rate Limit) 필수
  • no more than 10% of total requests can be retries
  • 재시도 로그 명시재시도율 모니터링으로 문제 조기에 탐지
  • log retries explicitly + monitor retry rates

섹션별 세부 요약

1. 사고 발생 배경

  • 마이크로서비스 A에서 서비스 B에 대한 요청에 재시도 로직 추가
  • for _ in range(3): try: call_service_b() except: time.sleep(1)
  • 서비스 B 자체 오류로 인한 재시도 폭증
  • 5K RPS 3 retries 6 인스턴스 = 90초 내 자가 DDoS

2. 핵심 오류 요인

  • 지수적 백오프 누락
  • 단순 time.sleep(1) 대신 2^N 초 간격 적용 필요
  • 제한 없음
  • 내부 요청에도 rate limit 설정 미비
  • 모니터링 부재
  • 재시도율 급증 시 깊은 문제 탐지 실패

3. 해결 방안

  • 지수적 백오프 + 제한 적용
  • exponential backoff + error rate logging
  • 재시도 예산(Retry Budget)
  • 총 요청의 10% 이하로 재시도 제한
  • 회로 차단기(Circuit Breaker) 추가
  • 시스템 실패 시 자동 복구 방안

결론

  • 재시도 로직 설계 시 반드시 지수적 백오프, 제한, 회로 차단기, 재시도율 모니터링 적용
  • 내부 요청에도 rate limit 필수
  • 예: retry budget = 10% of total requests
  • 로그 명시모니터링 도구 연동으로 사전 예방 가능