June

[Review] learning http/2

요즘 블로그 개편 후 거의 매일 포스팅을 만들고 있는데요! 한빛미디어에서 진행하는 세번째 IT관련 도서 리뷰! [Learning HTTP/2] 도서에 대한 리뷰를 진행하겠습니다. 예전에 HTTP/1.1까지 구매했었는데 (대략 1000페이지가 넘는...) HTTP/2에 대한 도서를 바로 리뷰할 수 있게되어 신청하게 되었습니다. 책에 대한 설명, 시작하겠습니다.


사실 HTTP라는 것은 구현체가 아닌 약속(Protocol)이기 때문에 그냥 보는 것으로는 지루할 수 밖에 없습니다. 하지만 웹을 개발하는 입장에서 절대 빼놓고 갈 순 없죠. https에 대한 관심이 사실 억지로라도(점유율이 가장 높은 브라우저인 크롬에서 http 페이지에 대해서 안전하지 않음 메세지를 띄워줍니다.) 가질 수밖에 없는 상황에서 한번 중요한 부분은 짚어보겠습니다.

Chap. 1 HTTP의 진화

HTTP 자체의 역사입니다. HTTP/2가 어떻게 생기게 되었는지 알 수 있습니다.

Chap. 2 HTTP/2 맛보기

https는 기본적으로 인증서를 거쳐서 통신을 하게 됩니다. 실제 웹 서비스에서 사영하려는 인증서에 대한 사용법과 설명에 대해 간단히 알려줍니다.

Chap. 3 웹을 파헤치는 이유와 방법

이 장에서는 http에서의 이슈와 그를 https에서 어떻게 해결하려고 HTTP/2를 정의했는지에 대해 알려줍니다. 가장 신경이 쓰였던 것은 HTTP/1.1에서는 이미지로 인한 connection의 시간을 줄이기 위해 이미지 스프라이팅을 했었는데, Request에 대한 병렬 처리가 가능해졌기 때문에 (현재 브라우저 단에서 받아들일 수 있는 최대 병렬처리 개수는 6개) https에서 이 기능은 안티패턴이 되었습니다!!! 이 뿐만 아니라 안티패턴이 된 추가적인 요소들이 있어서 https를 사용하는 입장에서 확실히 알고넘어가야 겠더군요.

Chap. 4 HTTP/2로의 전환

http를 넘어서 https 적용 시, 알고가야 할 설정이나, 인증서에 대한 설명이 있습니다.

Chap. 5 HTTP/2 프로토콜

네트워크 레벨의 이야이가 나옵니다. Request, Response의 헤더를 집중적으로 분석해주고, http와 https일때의 차이를 설명해줍니다. 그리고 HTTP/2의 가장 메인 기능이라고 할 수 있는 서버 푸시에 대한 설명이 나옵니다. 기존 폴링방식(Client -> Server)이었던 데이터 교환이 반대로 된다는 얘긴데 사실상 현 웹 체계에서는 힘듭니다. 꼼수로 timeout이나 특정 함수, iframe 같은 곳에서 서버에 사용자가 인지하지 못한 시간에 Request를 해서 자동으로 Response가 오는 듯한 효과를 줄 수만 있었죠. 앞으로의 업데이트에서 이 부분이 어떻게 구체적으로 정의되는지 저는 가장 흥미롭게 보고있습니다.

Chap. 6 HTTP/2 성능

생각보다 깜짝 놀란 부분인데 https가 대부분 브라우저에서 http에 비해 전혀 느려지지 않더군요 (...왜 내가하는건...) http, https 모두 지원하는 상황에서의 최적화 또한 고려해 볼 문제입니다. 앞서 말한 안티패턴과 서버 푸시에 대해 다시한 번 나오는데 이전보다는 구체적인 해결방법을 알려줍니다.

Chap. 7 HTTP/2 구현

...HTTP/2를 직접 구현해주실 갓을 위한 내용이네요;;; 계속 나오지만 RFC7540 버전에 대한 얘기가 계속 나옵니다. 이 버전의 규약에 대해 깊이 공부해 볼 필요가 있습니다.

Chap. 8 HTTP/2 디버깅하기, Chap. 9 다음은 무엇인가

...


기본적으로 https에서 강화된 보안때문에 속도가 상당히 느려지는 케이스가 있었는데, 이러한 경우들 모두 최적화에 대한 신경을 쓰지 않아 발생했던 이슈들이었다는 것을 책을 보며 깨달았습니다. 또한 HTTP/1.1에서는 권장 사항으로 여겨지턴 패턴이 HTTP/2에서는 안티패턴이 된 것들이 더러 있어 HTTP 메이저 버전 업데이트에 얼마나 많은 노력이 들어갔는지 (20년 만의 업데이트...) 다시한 번 놀라울 따름이네요.