Go 1.27, HTTP/1 연결 재사용 5배 빨라져

원제: Better HTTP/1 connection reuse in Go 1.27

왜 중요한가

서버 간 대량 HTTP 요청이 빈번한 마이크로서비스 환경에서 연결 재사용 개선은 지연 및 인프라 비용 절감에 직접적인 영향을 미친다.

Go 팀의 Nicholas Husin과 Damien Neil이 2026년 10월 14일 공개한 Go 1.27에서 HTTP/1 연결 재사용 성능이 대폭 개선됐다. 동일 URL에 100회 GET 요청 시 Go 1.26 대비 약 710ms에서 150ms로, 약 4.7배 속도가 향상됐다고 공식 블로그를 통해 밝혔다.

Go 1.27은 net/http 패키지의 HTTP/1 연결 재사용 방식을 개선해 응답 속도를 크게 높였다. Go 공식 블로그에 따르면, index.golang.org에 HTTP/1(GODEBUG=http2client=0)로 100회 연속 GET 요청을 보낼 때 Go 1.26에서는 약 710ms가 걸렸지만, Go 1.27에서는 약 150ms로 줄었다.

이번 개선의 핵심은 TCP·TLS 핸드셰이크 비용 절감이다. HTTP 요청 하나를 새 연결로 처리할 경우, TCP 핸드셰이크에 1 RTT, TLS 1.2 핸드셰이크에 2 RTT가 추가돼 총 3 RTT 이후에야 실제 요청을 전송할 수 있다. 크로스 리전 환경에서는 편도 지연이 50ms를 넘는 경우도 많아, 연결 설정에만 300ms 이상이 소요될 수 있다.

HTTP/1.0은 공식 스펙에 연결 재사용이 없고, HTTP/1.1은 keep-alive를 통해 재사용이 가능하지만 클라이언트 측 구현에서 실제 재사용이 이루어지지 않는 경우가 많았다. Go 1.27은 이 부분을 개선해 기존 연결을 더 적극적으로 재활용한다. TLS 1.3이 적용된 index.golang.org처럼 지연이 낮은 환경에서도 성능 차이가 뚜렷하게 나타났다는 점에서, 실제 서비스 환경에서의 효과는 더욱 클 것으로 보인다.

출처

go.dev — 원문 읽기 →