이전에 많은 외부 api와 연동해야하는 서버를 개발해야한적이 있었다.
외부 api의 장애의 영향력을 줄이기 위한 가장 기본적인 행동 중 하나로 timeout 시간을 설정하고자했다.
기본 timeout은 30초로 잡혀있었고 이를 3~5초 정도로 설정했다.
다만.. 아쉬운점은 이 시간을 설정하는데에있어 명확한 근거가 있다기보단
최범균님 영상에서 언급된 일반적인 설정시간을 따라했다.
2. 그럼 무엇을 고려하여 timeout을 설정해야할까?
우선 분명한 기준자체는 당연히 없다.
각 상황에 따라 판단이 필요하다.
- 팀 혹은 조직의 판단
- 하나의 조직에서 기준으로 잡는 시간( = 장애라고 판단하는 임계치)이 존재할 수 있다.
- 각 외부 api 예상 응답 시간
- 각각의 외부 api마다 어느 정도의 예상 혹은 기대하는 응답 시간이 존재할 것
- 이를 고려 할 필요가 있다.
- workloads
- 무거운 데이터를 주고 받는 경우 시간을 좀 더 부여할수도있다.
3. 지나치게 짧은 / 긴 timeout의 문제점
- 지나치게 짧다면 외부 api에 문제가 없음에도 이를 장애라고 판단해버릴 수 있다
- 지나치게 길다면 우리의 서비스는 필요 이상으로 외부 api 응답을 기다리고
이로인해 서비스의 응답시간 자체가 길어진다.
서비스의 응답 시간을 잡아먹는 요소는 집계, 외부 서비스 연동, db가 있을 수 있다.
다만.. 아쉬운점은 이 시간을 설정하는데에있어 명확한 근거가 있다기보단 최범균님 영상에서 언급된 일반적인 설정시간을 따라했다.
우선 분명한 기준자체는 당연히 없다. 각 상황에 따라 판단이 필요하다.