HTTP 의 버전이 등장한 이유

은기·2023년 5월 7일
0
post-thumbnail

HTTP 의 버전이 등장한 이유

나는 웹 개발자로써 웹 클라이언트와 서버가 통신하는 프로토콜로 http 가 존재하며,

현재 http/2 를 넘어 3까지 등장했다는 정도는 이해하고 있었다.

다만 2, 3이 왜 사용되어야 하는 지에 대해서 더 효율적인 네트워크 통신 방식과 통신 선점으로 인한 병목 해결같은 간단한 내용은 이해하였지만 기존 http/1 에서 넘어가야하는 지에 대한 생각은 들지 않았다.

그러므로 차세대 http 버전에서 무엇이 더 중요한 지와 http/1.1 의 단점이 무엇이 있었던 건지 좀 더 명확히 작성해보겠다.

1.1 의 문제

HOL ( Head Of Line ) Blocking

1, 2, 3 자원에 대한 요청인 요청1, 요청2, 요청3 이 순서대로 있을 때,

요청 1에서 자원을 전달받는 시간이 오래걸릴 경우 요청 2, 요청 3 또한 요청 1에서 발생한 지연때문에 오래 걸릴 수 밖에 없는 문제를 의미한다. ( 네트워크 병목 )

우선순위 지정 불가

리소스 요청에 대한 우선순위를 지정할 수 없기 때문에 덜 중요한 리소스가 더 중요한 리소스를 차단하는 경우가 있다.

사실 가장 주요하게 다루는 문제는 HOL Blocking 이다.

이러한 문제를 해결하기 위해 HTTP/2 에서 멀티플렉싱(Multiplexing) 이라는 개념과 기능을 도입하였다.

HTTP/2 Multiplexing

멀티플렉싱이란 기존 HTTP/1 에서 하나의 요청에 대해 하나의 네트워크 통신이 생성되는 과정을 해결한 방법이며 하나의 큐에 필요한 요청들을 지정하여 한번의 통신 과정에서 모든 요청들을 처리한다.

💡 HTTP/1, HTTP/2 는 TCP 기반으로 동작한다.

더 상세한 설명이나 이미지 첨부보단 하단 링크에서 애니메이션으로 더 직관적으로 이해할 수 있다.

HTTP 1.1 vs HTTP.2 vs HTTP/2 with Push

멀티플렉싱 기능 외 HTTP/2 에서 추가적으로 더 제공되는 기능이 존재한다.

헤더 압축 기술: HPACK 알고리즘을 사용하여 요청 및 응답헤더를 압축해 전송 데이터 양을 줄인다.

우선 순위 지정: 클라이언트가 요청의 우선순위를 지정하여 더 중요한 리소스를 먼저 가져와 렌더링할 수 있다.

HTTP/3 QUIC

HTTP/3 에서는 정말 큰 변화가 있는데, 바로 TCP 방식이 아닌 UDP 방식을 채용하였다는 점이다.

이 내용은 QUIC 이 도입되었다는 내용과 관련이 있는데 약자를 풀어서 보기만해도 그렇게 느껴진다.

💡 QUIC (Quick UDP Internet Connections )

QUIC(UDP) 방식을 지원하면서 얻을 수 있는 이점은 다음과 같다.

암호화 기능의 내장: TLS 1.3(전송 계층 보안) 기능을 통합하여 TLS HandShake 없이도 안전한 연결을 보장하고 있고 따라서 지연 시간이 줄어들어 연결 설정 시간이 개선되었다.

HOL Blocking 의 감소: QUIC 은 패킷 손실을 개별 스트림에서 처리한다 즉, 단일 패킷 손실이 전체 연결을 차단하지 않으므로 HOL Blocking 문제를 줄일 수 있다.

향상된 혼잡 제어: QUIC 에서 더욱 향상된 복잡 제어 메커니즘을 제공하여 다양한 네트워크 조건에 더 잘 적응하고 전반적인 성능을 개선할 수 있다.

하지만 왜 적극적으로 적용되지 않을까?

HTTP/1.1 대비 HTTP/3 은 설명만들으면 무조건 좋다.

그렇지만 개인적으로 모든곳에서 적극적으로 적응하는하는 추세는 아닌 것 같다.

그 이유는 항상 IT 시장에서 신기술이 등장하고 도입되기 전 모두가 고민하는 부분과 유사했다.

우선 첫째로, 사파리가 아직 QUIC 을 완벽하게 지원하지 않는다.

또한 브라우저에서 HTTP/3 를 활성화하려면 별도의 설정을 지정해야하는데 일반인 대상으로 서비스 하기엔 접근성 등의 문제가 존재할 것 같다.

또 다른 이유는 아직 적용사례가 충분치 않아서 라고한다.

이러한 문제로 인해 모든 곳에서 적극적으로 도입하지 않고 있지만 예외로 CDN 서비스를 진행하는 곳에선 차츰차츰 HTTP/3 를 도입하고 관련 서비스를 제공하고 있다.

profile
T자형 학습을 진행 중인 예비 백엔드

0개의 댓글