네트워크Medium#159
HTTP/2의 멀티플렉싱은 어떤 문제를 개선하나요?
#네트워크#HTTP2#멀티플렉싱#성능
답변 포인트
하나의 연결에서 여러 요청을 처리하는 방식를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.
정답 및 해설
빠른 요약
HTTP/2는 하나의 TCP 연결 안에서 여러 스트림을 동시에 처리해 HTTP/1.1의 연결 관리와 요청 대기 비용을 줄입니다. 다만 TCP 레벨 HOL blocking은 남아 있습니다.
HTTP/2의 멀티플렉싱은 하나의 TCP 연결 위에서 여러 요청과 응답을 동시에 주고받을 수 있게 하여 HTTP/1.1의 연결 수 제한과 요청 대기 문제를 개선합니다. 특히 많은 CSS, JS, 이미지 리소스를 로딩할 때 체감 성능에 영향을 줍니다.
핵심 개념
- HTTP/1.1은 한 연결에서 응답 순서에 묶이거나 여러 연결을 열어야 했습니다.
- HTTP/2는 데이터를 작은 frame으로 나누고 stream ID를 붙여 interleaving합니다.
- 헤더 압축(HPACK)과 서버 푸시 같은 기능도 포함되지만, 핵심 개선은 하나의 연결을 효율적으로 공유하는 것입니다.
동작 방식 또는 판단 기준
이 주제를 이해할 때는 다음 순서로 보면 실무 적용이 쉬워집니다.
- 무엇을 해결하려는가: 성능, 표현력, 안정성, 접근성 중 어떤 문제를 줄이려는지 확인합니다.
- 전제 조건은 무엇인가: 정렬 여부, 브라우저 지원, 네트워크 특성, 동시성 조건처럼 성립해야 하는 조건을 점검합니다.
- 비용은 어디서 발생하는가: 시간 복잡도, 메모리, 캐시, 재시도, 렌더링 비용처럼 병목 지점을 나눠 봅니다.
- 실패 시 어떤 문제가 생기는가: 잘못 적용했을 때의 버그나 운영 리스크를 함께 고려합니다.
실제 예시
Text
HTTP/1.1
conn1: /main.css ------>
conn2: /app.js ------------>
conn3: /logo.png ---->
연결 수 제한에 도달하면 뒤 요청 대기
HTTP/2
single conn:
stream 1: /main.css frames
stream 3: /app.js frames
stream 5: /logo.png frames
프레임이 섞여 전송되고 클라이언트가 stream별로 조립실무에서 주의할 점
- HTTP/2도 TCP 위에서 동작하므로 패킷 손실 시 TCP 레벨 head-of-line blocking은 남아 있습니다. 이 문제를 더 줄인 것이 QUIC 기반 HTTP/3입니다.
- 무조건 파일을 잘게 쪼개는 것이 좋은 것은 아닙니다. 캐싱, 우선순위, 번들 전략을 함께 봐야 합니다.
- 서버나 CDN 설정이 잘못되면 HTTP/2가 활성화되지 않을 수 있습니다.
실무 적용 가이드
- TLS와 함께 HTTP/2를 활성화하고 실제 응답 프로토콜을 브라우저 DevTools에서 확인합니다.
- 리소스 우선순위, preload, lazy loading을 함께 조정합니다.
- 대용량 다운로드와 API 호출이 서로 영향을 주는지 모니터링합니다.
함께 연결해서 보면 좋은 키워드
HTTP/2, Multiplexing, Stream, Frame, Web Performance
정리
HTTP/2의 멀티플렉싱은 하나의 TCP 연결 위에서 여러 요청과 응답을 동시에 주고받을 수 있게 하여 HTTP/1입니다. 다만 개념 자체보다 중요한 것은 적용 조건과 한계를 함께 이해하는 것입니다. 작은 예제에서는 단순해 보여도 실제 서비스에서는 성능, 보안, 유지보수성, 접근성 요구사항이 함께 얽히므로, 문제의 성격을 먼저 파악한 뒤 적절한 도구로 선택하는 것이 좋습니다.