# 분산 시스템에서 Timeouts, Retries, Idempotency 다루기

> Clean Markdown view of GeekNews topic #20872. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20872](https://news.hada.io/topic?id=20872)
- GeekNews Markdown: [https://news.hada.io/topic/20872.md](https://news.hada.io/topic/20872.md)
- Type: news
- Author: [baeba](https://news.hada.io/@baeba)
- Published: 2025-05-13T10:02:52+09:00
- Updated: 2025-05-13T10:02:52+09:00
- Original source: [infoq.com](https://www.infoq.com/news/2025/04/resilient-distributed-systems/)
- Points: 15
- Comments: 1

## Summary

**Timeouts**, **시스템 건강**, **유연한 설정**은 분산 시스템의 안정성을 위해 필수적입니다. **Retries**에서는 **자해적 DoS**와 **네트워크 지터(jitter)** 등 부수적 위험요소를 반드시 고려해야 합니다. **Idempotency**는 **서버 책임**으로, 여러 번 요청해도 결과가 같아야 하며, **요청 ID**나 **Fingerprint** 방식으로 구현할 수 있습니다. 세 개념의 올바른 조합이 분산 시스템의 안전한 재시도를 보장합니다.

## Topic Body

Sam Newman은 분산 시스템에서 꼭 이해해야 할 3가지 핵심 개념으로 **Timeouts(타임아웃)**, **Retries(재시도)**, \*\*Idempotency(멱등성)\*\*를 강조했다.  
Paxos, Raft 같은 복잡한 분산 알고리즘보다 이 기본 개념들을 먼저 정확히 다루는 것이 중요하다고 말했다.  
  
---  
  
##### 분산 시스템의 세 가지 기본 전제  
  
1. 정보는 즉시 전달되지 않는다.  
2. 상대 시스템이 응답하지 않을 수 있다.  
3. 리소스는 유한하다.  
  
이 세 가지가 분산 시스템의 모든 복잡성을 만드는 근본 원인이다.  
  
---  
  
##### Timeouts (타임아웃)  
  
요청이 일정 시간 안에 완료되지 않으면 중단시켜야 한다.  
리소스를 오랫동안 점유하면 시스템 과부하와 사용자 불편이 발생할 수 있다.  
  
Newman은 “타임아웃은 단일 요청의 성공보다 시스템 전체의 건강을 우선하는 것”이라고 설명했다.  
  
**중요 포인트**  
  
* 평균 실행 시간과 사용자 기대치를 파악  
* 설정 값은 코드 수정 없이 유연하게 변경 가능해야 함  
  
---  
  
##### Retries (재시도)  
  
과도한 재시도는 시스템에 **자해적 DoS 공격**이 될 수 있다.  
재시도는 필요하되, \*\*클라이언트·서버 단에서의 제한과 네트워크 지터(jitter)\*\*를 함께 고려해야 한다.  
  
Newman은 **지터 추가는 좋지만, 지수적 백오프는 오히려 시스템에 부담이 될 수 있다**고 경고했다.  
  
---  
  
##### Idempotency (멱등성)  
  
요청을 여러 번 보내도 결과가 같아야 한다.  
이는 주로 서버 쪽 책임이며, **재시도가 안전하기 위한 전제 조건**이다.  
  
**실제 시나리오**  
  
* 요청이 서버에 도달하지 못한 경우: 아무 일도 없음  
* 서버가 처리했지만 응답이 끊긴 경우: 변경은 됐지만 클라이언트는 알지 못함 → **멱등성 필요**  
  
**구현 방식**  
  
1. **요청 ID 사용**: 클라이언트가 반복된 요청임을 알 수 있도록 식별자 부여  
2. **Fingerprint 방식**: 요청 본문의 해시값 등을 기준으로 중복 여부 판단 (시간 정보는 지양)  
  
---  
  
##### 결론  
  
"같은 행동을 반복하며 다른 결과를 기대하는 건 광기"라는 말을 인용하며 시작했지만,  
Newman은 분산 시스템에서는 **재시도가 오히려 합리적**일 수 있다고 말했다.  
단, **재시도는 반드시 안전하게 이루어져야 하며, 이를 위해 타임아웃과 멱등성이 함께 설계되어야 한다**고 강조했다.

## Comments



### Comment 38624

- Author: unknowncyder
- Created: 2025-05-13T23:50:57+09:00
- Points: 1

서킷브레이커~
