세 타임아웃을 "비슷한 거 아니냐"로 묶는지, 아니면 단계별로 어디서 끊기고 운영 관점에서 왜 따로 잡는지를 풀 수 있는지를 가른다.
Connection Timeout은 TCP 연결(handshake)을 맺는 단계가 제한 시간 안에 끝나지 않을 때 끊는다. Read Timeout은 연결이 맺어진 뒤 응답 데이터를 기다리는 한계로, 라이브러리마다 "전체 응답 완료까지" 또는 "다음 바이트가 도착하기까지"로 다르게 해석한다. Socket Timeout은 자바 SO_TIMEOUT처럼 소켓 단위의 두 read 사이 유휴 시간을 끊는 개념으로, 실질적으로 Read Timeout과 같은 자리에 쓰인다. 세 값은 연결 전·연결 후 응답 대기라는 서로 다른 단계를 끊기 때문에, 외부 의존성 보호용으로 각각 따로 설정해야 한다.
외부 API 지연이 우리 시스템 자원을 점유한 사고를 추적하다 Connection/Read 타임아웃을 다시 잡아 본 경험이 있다면 "세 단계가 다르다"는 점을 사례로 풀어낼 수 있다
p99·p999 지연 지표를 보고 Read Timeout을 조정한 경험이 있다면 "좋은 기본값이 아니라 우리 SLA에 맞춘다"는 관점으로 이어갈 수 있다
Circuit Breaker·재시도 정책과 타임아웃을 함께 설계해 본 경험이 있다면 안전망의 큰 그림으로 일반화할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.