사실 HTTP라는 것은 구현체가 아닌 약속(Protocol)이기 때문에 그냥 보는 것으로는
지루할 수 밖에 없습니다. 하지만 웹을 개발하는 입장에서 절대 빼놓고 갈 순 없죠. https에 대한
관심이 사실 억지로라도(점유율이 가장 높은 브라우저인 크롬에서 http 페이지에 대해서 안전하지
않음 메세지를 띄워줍니다.) 가질 수밖에 없는 상황에서 한번 중요한 부분은 짚어보겠습니다.
Chap. 1 HTTP의 진화
HTTP 자체의 역사입니다. HTTP/2가 어떻게 생기게 되었는지 알 수 있습니다.
Chap. 2 HTTP/2 맛보기
https는 기본적으로 인증서를 거쳐서 통신을 하게 됩니다. 실제 웹 서비스에서 사영하려는 인증서에
대한 사용법과 설명에 대해 간단히 알려줍니다.
Chap. 3 웹을 파헤치는 이유와 방법
이 장에서는 http에서의 이슈와 그를 https에서 어떻게 해결하려고 HTTP2를 정의했는지에 대해
알려줍니다. 가장 신경이 쓰였던 것은 HTTP1.1에서는 이미지로 인한 connection의 시간을 줄이기
위해 이미지 스프라이팅을 했었는데, Request에 대한 병렬 처리가 가능해졌기 때문에
(현재 브라우저 단에서 받아들일 수 있는 최대 병렬처리 개수는 6개) https에서 이 기능은
`안티패턴`이 되었습니다!!! 이 뿐만 아니라 안티패턴이 된 추가적인 요소들이 있어서 https를
사용하는 입장에서 확실히 알고넘어가야 겠더군요.
Chap. 4 HTTP/2로의 전환
http를 넘어서 https 적용 시, 알고가야 할 설정이나, 인증서에 대한 설명이 있습니다.
Chap. 5 HTTP/2 프로토콜
네트워크 레벨의 이야이가 나옵니다. Request, Response의 헤더를 집중적으로 분석해주고,
http와 https일때의 차이를 설명해줍니다. 그리고 HTTP2의 가장 메인 기능이라고 할 수 있는
`서버 푸시`에 대한 설명이 나옵니다. 기존 폴링방식(Client -> Server)이었던 데이터 교환이
반대로 된다는 얘긴데 사실상 현 웹 체계에서는 힘듭니다. 꼼수로 timeout이나 특정 함수,
iframe 같은 곳에서 서버에 사용자가 인지하지 못한 시간에 Request를 해서 자동으로 Response가
오는 듯한 효과를 줄 수만 있었죠. 앞으로의 업데이트에서 이 부분이 어떻게 구체적으로 정의되는지
저는 가장 흥미롭게 보고있습니다.
Chap. 6 HTTP/2 성능
생각보다 깜짝 놀란 부분인데 https가 대부분 브라우저에서 http에 비해 전혀 느려지지 않더군요
(...왜 내가하는건...) http, https 모두 지원하는 상황에서의 최적화 또한 고려해 볼 문제입니다.
앞서 말한 안티패턴과 서버 푸시에 대해 다시한 번 나오는데 이전보다는 구체적인 해결방법을 알려줍니다.
Chap. 7 HTTP/2 구현
...HTTP2를 직접 구현해주실 갓을 위한 내용이네요;;; 계속 나오지만 `RFC7540` 버전에 대한
얘기가 계속 나옵니다. 이 버전의 규약에 대해 깊이 공부해 볼 필요가 있습니다.
Chap. 8 HTTP/2 디버깅하기, Chap. 9 다음은 무엇인가
...
기본적으로 https에서 강화된 보안때문에 속도가 상당히 느려지는 케이스가 있었는데,
이러한 경우들 모두 최적화에 대한 신경을 쓰지 않아 발생했던 이슈들이었다는 것을
책을 보며 깨달았습니다. 또한 HTTP1.1에서는 권장 사항으로 여겨지턴 패턴이 HTTP2에서는
안티패턴이 된 것들이 더러 있어 HTTP 메이저 버전 업데이트에 얼마나 많은 노력이 들어갔는지
(20년 만의 업데이트...) 다시한 번 놀라울 따름이네요.