skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

외부 api 연동과 timeout 시간 설정 기준 #147

Open skarltjr opened 1 year ago

skarltjr commented 1 year ago
  1. 개요
    
    이전에 많은 외부 api와 연동해야하는 서버를 개발해야한적이 있었다.
    외부 api의 장애의 영향력을 줄이기 위한 가장 기본적인 행동 중 하나로 timeout 시간을 설정하고자했다.
    기본 timeout은 30초로 잡혀있었고 이를 3~5초 정도로 설정했다.

다만.. 아쉬운점은 이 시간을 설정하는데에있어 명확한 근거가 있다기보단 최범균님 영상에서 언급된 일반적인 설정시간을 따라했다.

2. 그럼 무엇을 고려하여 timeout을 설정해야할까?

우선 분명한 기준자체는 당연히 없다. 각 상황에 따라 판단이 필요하다.


- 팀 혹은 조직의 판단
  - 하나의 조직에서 기준으로 잡는 시간( = 장애라고 판단하는 임계치)이 존재할 수 있다.
- 각 외부 api 예상 응답 시간
  - 각각의 외부 api마다 어느 정도의 예상 혹은 기대하는 응답 시간이 존재할 것
  - 이를 고려 할 필요가 있다.
- workloads
  - 무거운 데이터를 주고 받는 경우 시간을 좀 더 부여할수도있다.

3. 지나치게 짧은 / 긴 timeout의 문제점
- 지나치게 짧다면 외부 api에 문제가 없음에도 이를 장애라고 판단해버릴 수 있다
- 지나치게 길다면 우리의 서비스는 필요 이상으로 외부 api 응답을 기다리고 
  이로인해 서비스의 응답시간 자체가 길어진다.
  서비스의 응답 시간을 잡아먹는 요소는 집계, 외부 서비스 연동, db가 있을 수 있다.