호출 시간 제한은 무엇을 기준으로 정하는가?
답변 연습
내 답변 적어보기접힘
모범답안 확인하기내 답변 뒤에 열어보세요
사용자 요청 전체의 마감 시각에서 시작한다. 서비스마다 새 타이머를 주는 대신 남은 시간을 아래 호출로 전달해야 이미 끝난 요청에 자원을 계속 쓰지 않는다.
클라이언트→게이트웨이
요청의 절대 마감 시각을 정한다
게이트웨이→주문
네트워크와 후처리 여유를 빼고 남은 시간을 전달한다
주문→결제
다시 타이머를 초기화하지 않고 남은 시간을 전달한다
주문→결제
상위 요청이 끝나면 취소 신호도 전파한다
값은 평균 지연 시간 하나로 정하지 않는다. 정상·혼잡·콜드 스타트에서의 지연 분포와 허용할 거짓 타임아웃 비율을 본다. 큰 요청처럼 지연 특성이 다른 작업은 별도 정책을 둔다.
너무 짧으면 성공할 요청을 끊고 재시도로 부하를 늘린다. 너무 길면 실패한 호출이 스레드와 커넥션을 붙잡는다.
연결 수립 제한과 요청 전체의 deadline도 구분한다. DNS·TCP·TLS 연결에 쓸 상한과 응답 완료까지의 상한은 막는 구간이 다르다. 사용하는 라이브러리의 timeout이 어느 구간을 재는지 확인해야 한다.
재시도 횟수, 각 시도의 제한 시간, backoff는 모두 하나의 전체 예산 안에 들어가야 한다. 여러 계층이 각자 재시도하면 시도 횟수가 곱으로 늘어난다. 재시도할 한 계층을 정하고 남은 시간에 다음 시도가 끝날 수 있을 때만 보낸다.
deadline이 지났다고 이미 시작한 일이 저절로 취소되지는 않는다. 취소 신호를 호출 사슬에 전파하고 각 단계가 새 작업 전에 남은 시간을 확인한다. 결제처럼 외부 효과가 시작된 작업은 취소만 믿지 않고 멱등 키와 결과 조회로 최종 상태를 확인한다.
추천 꼬리질문
관련 질문
- 서킷 브레이커는 무엇을 막아주는가?아키텍처 · 분산시스템서킷 브레이커는 호출 시간 제한(Timeout)이 발생했을 때 장애를 감지하고 차단하는 메커니즘으로, 두 개념 모두 서비스 간 호출의 안정성을 다룬다.
- 단계마다 타임아웃을 5초씩 주면 무엇이 잘못되는가?아키텍처 · 분산시스템타임아웃 값을 정하는 기준이라는 같은 물음 — 단계마다 같은 값이 왜 함정인지로 이어진다.
- 재시도가 있는 시스템에서 멱등성이 필요한 이유는?아키텍처 · 분산시스템호출 시간 제한으로 인한 재시도 요청이 발생할 때, 시스템 안정성을 위해 멱등성 보장이 필수적이다.
- 누가 무엇을 할 수 있는지 어떻게 정하는가?인프라 · 보안
- 프로세스 스케줄링 방식은 무엇으로 결정하는가?운영체제