모회사 CTO 분께 서버 스케일 아웃 조건에 대해서 물어본 적이 있다.
솔루션을 빨리 찾고 싶은 마음에서 그랬나보다.
어쨌든 돌아온 답변은 "회사 상황에 맞게 찾아가야 한다" 였다.
우문현답이었다.
timeout이 명시되어 있지 않은 상태에서 개선되고 있었다.
참고로 timeout 설정을 하지 않거나 timeout=None
설정 시,
리모트 서버에서 응답이 올 때까지 무한정 대기를 해버린다.
# 1차 개선
requests.post(url, headers=headers, data=data, timeout=2)
그러다 간헐적으로 유저마다 메시지가 발송되지 않는 에러가 발생하고 있었다.
특히, 비즈엠이란 서비스에 우리쪽에서 요청한 이력이 없다고 한다.
분명 발송하는 프로세스가 교착상태에 빠졌던가, 뭔가 다른 이유가 있을 거 같은데
확실한 건 우리 쪽 문제라는 점이다.
일단 timeout 시간을 늘렸다.
# 2차 개선
requests.post(url, headers=headers, data=data, timeout=2)
유저 및 다른 부서 입장에서는 이 문제가 실패로 보일 수도 있다.
비즈니스 로직은 성공했지만, 알림톡이 발송되지 않았다.
하지만 독립적으로 실패했다는 점에서 개발 관점에서는 선방했다.
알림톡 발송 실패로 비즈니스 로직도 실패처리 한다? 최악이 아닐 수 없다.
아무튼 개선은 해야 한다.
자료를 찾아보자..