Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- interceptor
- redis
- java
- 보안
- 백엔드기초
- 캐시
- 백엔드개발자
- devops
- CS
- SnowFalke
- Spring Boot
- http
- 세션
- 백엔드
- JPA
- 인프라
- 성능최적화
- 웹개발
- spring event
- 웹성능최적화
- 데이터베이스
- 클린코드
- DEVIEW2023
- db
- 백엔드개발
- 프론트엔드
- Spring
- AbstractAggregateRoot
- 네트워크
- 인증
Archives
- Today
- Total
이것저것 개발기록
"웹이 왜 이렇게 빨라졌지?" HTTP/1.1과 HTTP/2의 결정적 차이 본문
"이미지가 100개인 페이지, 예전보다 왜 훨씬 빨리 뜰까요?"
웹의 속도 한계를 극복하기 위해 등장한 HTTP/2. 기존 1.1 버전의 고질적인 문제들을 어떻게 해결했는지 정리했습니다.
1. HTTP/1.1의 한계: HOL Blocking
HTTP/1.1은 기본적으로 한 번에 하나의 요청만 처리할 수 있었습니다. 만약 크기가 큰 이미지를 받는 요청이 앞서 있다면, 뒤에 있는 작은 텍스트 데이터들은 앞의 요청이 끝날 때까지 기다려야 했죠. 이를 HOL(Head-of-Line) Blocking이라고 부릅니다. 이를 해결하기 위해 스프라이트 이미지(이미지 합치기) 같은 편법을 써야 했습니다.
2. HTTP/2가 가져온 혁신
- Multiplexing (멀티플렉싱): 하나의 커넥션으로 여러 개의 메시지를 동시에 주고받을 수 있습니다. 이제 응답 순서를 기다릴 필요가 없습니다.
- Header Compression (헤더 압축): 중복된 헤더 정보를 압축해서 전송량을 줄였습니다.
- Server Push: 클라이언트가 요청하지 않아도 서버가 필요할 것 같은 자원(CSS, JS 등)을 미리 보내줄 수 있습니다.
💡 실무 노트
HTTP/2가 대중화되면서 과거의 성능 최적화 기법들이 오히려 독이 되기도 합니다. 예를 들어, 여러 개의 JS 파일을 하나로 합치는 '번들링'은 HTTP/1.1에서는 필수였지만, HTTP/2에서는 파일을 작게 나누어 보내는 것이 캐싱 효율 측면에서 더 유리할 때가 많습니다.
팁: HTTP/2를 적용하려면 반드시 HTTPS(SSL/TLS)가 적용되어 있어야 합니다. 브라우저들이 보안상의 이유로 HTTPS 환경에서만 HTTP/2를 지원하기 때문이죠. 내 서비스의 속도를 높이고 싶다면 HTTPS 적용과 함께 서버 설정에서 HTTP/2가 활성화되어 있는지 꼭 확인해 보세요.
"기술의 발전은 과거의 정답을 오늘의 오답으로 만들기도 합니다. 원리를 아는 것이 중요한 이유입니다."
'IT 이야기' 카테고리의 다른 글
| "유지보수 지옥에서 탈출하기" 객체지향 설계의 5가지 원칙: SOLID (1) | 2026.01.07 |
|---|---|
| "DB 연결이 너무 느리다면?" 커넥션 풀(Connection Pool)의 원리 (0) | 2026.01.07 |
| "서버의 병목을 해결하는 해결사" 메시지 큐(Message Queue) 이해하기 (0) | 2026.01.06 |
| "왜 다들 Redis를 쓸까?" 캐시 계층 도입으로 API 속도 높이기 (0) | 2026.01.05 |
| "빨간 줄의 공포" CORS 에러 완벽 해결 가이드 (0) | 2026.01.05 |