2P by GN⁺ 15일전 | ★ favorite | 댓글 1개
  • HTTP/3는 2016년부터 개발되었고, 기반 프로토콜인 QUIC은 2013년에 Google에서 처음 도입됨
  • 현재 표준화되어 있고 다음과 같은 폭넓은 지원을 받음
    • 95%의 브라우저에서 지원됨
    • Cloudflare의 HTTP 요청 중 32%가 HTTP/3 사용
    • 웹사이트의 35%에서 HTTP/3 지원이 표시됨 (alt-svc 또는 DNS를 통해)
  • 그러나 주요 언어의 표준 라이브러리에서는 QUIC 및 HTTP/3 지원이 부족함
    • Node.js, Go, Rust, Python, Ruby 등에서 표준 라이브러리에 포함되지 않음
    • Curl은 최근 HTTP/3 지원을 추가했으나 실험적 상태이며 기본적으로 비활성화됨
    • 인기 있는 서버인 Nginx는 실험적 지원 상태이며 기본적으로 비활성화됨
    • Apache는 HTTP/3 지원 계획이 없음
    • Kubernetes의 Ingress-Nginx는 HTTP/3 지원 계획을 포기함

HTTP/1.1 이후의 필요성

  • HTTP/3는 높은 대기 시간의 웹 브라우저 및 CDN 트래픽에 유용함
  • HTTP/2와 HTTP/3가 제공하는 주요 이점:
    • 멀티플렉싱으로 응답 대기 시간 감소
    • HTTP 헤더 압축으로 트래픽 감소 (HPACK, QPACK 사용)
    • 양방향 스트리밍으로 클라이언트와 서버 간의 실시간 데이터 교환 가능
    • 우선순위 지정을 통해 중요한 요청을 먼저 처리 가능
  • HTTP/3의 추가 이점:
    • 독립적인 스트림 처리로 패킷 손실이 다른 스트림에 영향을 주지 않음
    • 0-RTT TLS 핸드셰이크로 연결 초기화 속도 개선
    • 연결 마이그레이션으로 IP 주소 변경 시 연결 유지 가능
    • 혼잡 제어 개선으로 성능 및 안정성 향상

HTTP/3의 성능 향상 효과

  • RequestMetric 벤치마크 결과:
    • HTTP/3가 HTTP/1.1 및 HTTP/2보다 빠른 응답 속도 제공
  • Fastly의 실제 사례:
    • HTTP/3에서 첫 바이트까지의 시간이 18% 단축

HTTP/3의 지원 부족 문제

  • HTTP/3는 브라우저 및 CDN에서 폭넓게 지원되지만 일반 개발자가 사용하기 어려움
  • 현재 웹 트래픽의 두 가지 유형:
    • 하이퍼스케일 웹: 주요 브라우저와 대형 서버 기반 (Google, Meta, Amazon 등)
    • 롱테일 웹: 중소형 서버 및 클라이언트 기반 (백엔드 API, 모바일 앱, IoT 등)
  • 주요 차이점:
    • 롱테일 트래픽이 전체 트래픽의 67% 차지
    • 하이퍼스케일은 빠른 개발 및 적용 가능, 롱테일은 자원 부족 및 안정성 우선
    • 오픈소스 도구에 대한 의존도가 높음

OpenSSL과 QUIC 문제

  • OpenSSL은 대부분의 오픈소스 네트워킹 도구의 기반임
  • BoringSSL은 QUIC 지원 API를 2018년에 출시했지만 OpenSSL은 독자적인 QUIC API를 도입함
  • 주요 문제:
    • 기존 BoringSSL 기반 구현과 호환되지 않음
    • Curl 및 주요 언어는 OpenSSL 의존성을 변경하기 어려움
    • Node.js는 OpenSSL 대신 BoringSSL 사용을 검토했지만 실현되지 않음

앞으로의 전망

  • 하이퍼스케일 웹이 HTTP/3를 도입하면서 롱테일 웹과 성능 격차 발생 가능성
  • HTTP/3 지원 부족으로 다음과 같은 문제 발생 가능:
    • 하이퍼스케일 사이트의 속도와 안정성 우위 강화
    • HTTP/3 기반 프레임워크가 보편화되면 롱테일 웹은 접근 어려움
    • HTTP/3 미지원이 클라이언트 차단 기준으로 사용될 가능성
  • 해결 방안:
    • OpenSSL의 QUIC API 문제 해결 필요
    • 기존 QUIC 및 HTTP/3 구현과 호환성을 높이는 도구 및 어댑터 개발 필요
    • 오픈소스 도구의 HTTP/3 지원 확대 노력 필요

결론

  • HTTP/3는 분명한 성능 및 안정성 이점을 제공하지만, 현재 하이퍼스케일 기업만이 쉽게 사용할 수 있는 상태임
  • 롱테일 웹에서도 HTTP/3를 쉽게 사용할 수 있도록 도구와 표준 개선이 필요함
Hacker News 의견
  • HTTP/3를 완전히 지원하는 인기 있는 오픈 소스 도구를 찾기 어렵다는 의견이 있음

    • IT 관리자와 DevOps 엔지니어들은 주로 로드 밸런서에서 HTTP/3 연결을 종료하고, SSL을 종료한 후 HTTP 1.1을 백엔드 서비스로 전달함
    • HTTP/3와 IPv6는 모바일 중심 기술로, 데이터 센터보다는 일시적이고 불안정한 연결에서 더 유용함
  • 주요 언어의 표준 라이브러리에 QUIC나 HTTP/3가 포함되어 있지 않음

    • .NET은 HTTP/3에 대한 괜찮은 지원을 제공하고 있음
    • 대부분의 개발 팀은 네트워킹 중심 제품을 구축하지 않기 때문에 HTTP/3는 우선순위가 낮음
  • HTTP/3의 대규모 배포에서 가장 큰 문제는 잠재적으로 취약한 코드의 표면적이 증가한다는 점임

    • 운영 체제가 안전한 소켓 레이어와 동적으로 연결된 SSL 라이브러리를 제공하는 것이 더 바람직함
    • 대부분의 클라이언트 애플리케이션에서는 요청의 몇 밀리초의 지연이 큰 문제가 되지 않음
  • QUIC의 느린 채택은 OpenSSL이 기존 QUIC 구현에 필요한 기본 요소를 제공하지 않았기 때문임

    • 최근 OpenSSL 3.5가 제3자 QUIC 스택을 위한 API를 제공하게 됨
  • HTTP/2와 HTTP/3는 더 이상 애플리케이션 레이어 프로토콜이 아니라 TCP와 TLS 수준으로 인식됨

    • 개발자들은 여전히 "평문 HTTP 1.1" 세계에 살고 있음
  • nginx는 아직도 프로덕션 준비가 된 HTTP/3 지원을 제공하지 않음

  • Python에서 niquests를 사용 중이며, HTTP/3를 지원함

    • Python 생태계는 inertia로 인해 requests 패키지에 머물러 있었음
  • Node.js는 QUIC의 상태에 대한 업데이트를 게시했으며, OpenSSL의 느린 API 지원으로 어려움을 겪고 있음

  • 퍼블릭 클라우드 제공업체의 로드 밸런서를 사용하는 경우 기본적으로 HTTP/3를 사용함

    • 자체 서버를 사용하는 사이트는 HTTP/3의 이점을 누리지 못하고 있음
  • 모든 프로젝트는 어느 정도 오픈 소스 및 커뮤니티 주도로 이루어짐

    • HTTP/3를 빠르게 지원할 필요성을 느끼지 못함