2025-04-15-TIL
Today I Learned
오늘은 국립중앙도서관에 방문해보았다. 동네의 도서관에 비해서는 확실히 규모가 컸다. 간만에 대학도서관의 느낌이 살짝 떠올랐다. 대학도서관의 매캐하고 습한 오래된 책 냄새, 낡은 책상, 책에 남겨진 선배들의 공부흔적 같은것들이 그립기도 하다.
Today I Interview
HTTP/1.1과 HTTP/2.0에 대해서 설명해주세요.
HTTP/1.1에 대해서 설명해주세요.
HTTP는 웹상에서 클라이언트와 서버 간 통신을 위한 프로토콜입니다. HTTP/1.0의 경우에는 한 개의 요청과 응답마다 TCP 커넥션을 생성하여 사용됐습니다. 하지만, 이러한 방식은 매 요청마다 연결을 생성하는 오버헤드가 발생합니다. HTTP/1.1은 이러한 문제를 지속 커넥션(Persistent Connection) 이라는 지정한 타임아웃만큼 커넥션을 종료하지 않는 방식으로 해결합니다.
또한 파이프라이닝(Pipelining) 을 지원하여 요청의 응답 지연을 감소합니다. 파이프라이닝에서 HTTP 요청은 연속적이며, 순차적으로 전달됩니다. 기존에는 요청한 이후에 응답을 기다리고 그 다음 요청을 보냈는데요. 파이프라이닝에서는 필요한 모든 자원에 대한 요청을 순차적으로 서버로 전송한 다음 모든 요청에 대한 응답을 한 번에 기다리게 됩니다.
HTTP/1.1은 1.0 버전에 비해 상당히 개선됐지만 여전히 문제가 존재하는데요. 대표적으로 Head-of-Line Blocking(HOL Blocking) 문제가 있습니다. 만약 3개의 요청을 파이프라인을 통해 전송을 한다고 했을 때, 서버는 모든 요청을 순서에 맞춰서 응답해야 합니다. 이때 첫 번째 요청이 오래 걸린다고 하면, 나머지 요청은 첫 번째 요청의 처리를 기다려야 합니다. 또한, 1.1 버전은 매 요청마다 동일한 헤더를 반복하여 전송한다는 문제점도 존재합니다.
HTTP/2.0에 대해서 설명해주세요. HTTT/1.1는 메시지를 일반 텍스트 형식으로 전송했습니다. 2.0부터는 기존 HTTP 메시지를 프레임이라는 단위로 분할하고 이를 바이너리 형태로 만들어서 전송합니다. 따라서, 기존 1.1 버전에 비해 파싱 및 전송 속도가 향상되었습니다.
또한, HTTP/2.0 부터는 멀티플렉싱(Multiplexing) 을 지원합니다. 이는 하나의 커넥션을 사용하여 요청과 응답을 병렬로 처리할 수 있는 방식입니다. 클라이언트가 서버로 여러 요청을 동시에 보내도 각 요청이 독립적으로 처리되기 때문에 애플리케이션 레이어의 HOL Blocking 문제를 해결합니다. 또한 HPACK 헤더 압축 방식을 사용해 반복되는 헤더를 효율적으로 관리하여 대역폭 사용이 최적화되었습니다.
추가 학습 자료
- 웹 개발자라면 알고 있어야 할 HTTP의 진화 과정
- gRPC 를 도입하는 이유에 대해서 알아보자 (feat. HTTP 1.0 vs HTTP 1.1 vs HTTP 2.0)
- [10분 테코톡] 🧃쿨라임의 HTTP/1.1, HTTP/2, 그리고 QUIC
- HTTP3까지 버전별 변천사와 동작원리
출처: Copyright © 2025, 매일메일. All rights reserved.
Today I Read
- 책 제목 / 저자: 스프링 부트 JPA 모범 사례 / 안겔 레오나르드
- 읽은 기간: 2025. 4. 15 ~
- 배운 점 / 느낀 점: JPA를 실무에서 사용하면서 직면할 수 있는 웬만한 문제의 해결방법을 모두 제시해준다. 실제로 실무에서 경험했던 모든 해결방법들을 이 책에서 확인할 수 있었다. 다만, 번역에 있어서 일부 내용이 흔히 쓰는 용어가 아니라서 살짝 헷갈렸다.
- 별점 (1~5): ⭐️⭐️⭐️⭐️
- 다시 읽고 싶은가? (O/X): O -> 두꺼운 책이다보니 몰입해서 읽고, 전자책으로 별도 구매해서 두고두고 참고하고 싶은 책