HTTP는 TCP/TLS 연결 비용이 크기 때문에, 매 요청마다 새 연결을 새엇ㅇ하면 latency와 CPU 부하가 커진다
그래서 Node.js에서는 keep-alive 기반의 connection pool을 사용해 연결을 재사용하는 것이 필수
보통 1개의 외부 API 서버에 대해 인스턴스당 10~100개의 커넥션 풀을 유지하는 것이 가장 안정적이며,
Node 공식 undici client는 이 pool을 기본적으로 잘 지원합니다.
HTTP 요청 1번을 하기 위해 실제로는
만약 매 요청마다 연결을 새로 만들면
그래서 한번 만든 연결을 재사용하는 keep-alive 구조가 필요함
Connection: keep-alive
TCP 커넥션 하나가 여러 HTTP 요청을 처리할 수 있다
같은 서버 (출발지 /목적지)와의 동일 TCP 연결을 재상용한다. -> 따라서 TCP handshake + TLS handshake를 다시 하지 않아도 된다.
즉, 재요청 시 매우 작은 비용으로 바로 HTTP 요청을 보낼 수 있다.
ECONNRESET, socket hang up, broken pipe 발생