타임아웃과 재시도, 서킷 브레이커까지
·
IT
외부 API를 호출하는 코드에 타임아웃을 안 걸어두면, 상대가 느려지는 순간 내 서비스가 함께 멈춘다. 재시도를 잘못 넣으면 이미 힘든 상대를 더 때려서 장애를 키운다. 이 글은 타임아웃, 재시도, 서킷 브레이커 세 가지를 어떤 순서로 어떻게 설정해야 하는지 정리한다.타임아웃이 없으면 스레드가 말라붙는다가장 먼저 할 일은 타임아웃 설정이다. 이게 없으면 나머지는 의미가 없다.외부 API가 응답하지 않으면 내 서버의 요청 처리 스레드(또는 커넥션)가 그 자리에서 기다린다. 요청이 계속 들어오면 대기하는 스레드가 쌓이고, 결국 풀이 고갈된다. 그러면 그 외부 API와 무관한 요청까지 처리하지 못한다. 장애가 전파되는 전형적인 경로다.타임아웃은 두 종류를 따로 잡아야 한다. 연결 타임아웃은 TCP 연결을 맺는..