[서평] HTTP/2의 깊은 이해를 위한 필독서 <러닝 HTTP/2>

By | 2018/02/20
러닝 HTTP/2

http://www.hanbit.co.kr/media/books/book_view.html?p_code=B1303249964

학부와 석사과정을 컴퓨터 관련 전공으로 마쳤고, 지금은 컴퓨터관련 전공의 박사과정에 재학중이다. 계속해서 학계에 있어온 터라 웹 개발을 전문적으로 하지는 않았지만, 웹서버 기반으로 동적으로 동작하는 연구목적 또는 취미로 간단한 웹사이트들을 만든 경험이 있다. 특히 Flask 프레임워크에 제일 친숙하고, 최근에는 ReactJS를 이용하여 간단한 사진 브라우징 웹서비스를 만들어봤다.

웹개발에 관심이 있는 사람이라면 HTTP가 무엇인지는 누구나 알고있다. 하지만 HTTP/1.1과 HTTP/2에 대해서는? 막연하게 HTTP/2가 HTTP/1.1을 개선하기 위해 나온 것이며, 속도가 더 빠르거 보안이 좋다 정도로만 알고 있었지, 정확하게 HTTP/2가 무엇인지는 모르고 있었다. 최근에 HTTPS로 웹서비스를 제공하면서 조금 관심이 가긴 했었는데, 그래도 HTTPS와 HTTP/2가 정확히 어떻게 다른지도 몰랐다. HTTPS를 적용하였으니 이제 내 웹서비스는 HTTP/2를 지원하는 것인가 라고 생각했을 정도다.

최근 한빛미디어에서 O'RELLY의 Learning HTTP/2 라는 책을 번역/출간했다는 소식을 듣고, 나중에 시간날 때 사보려고 온라인서점 장바구니에 넣어뒀는데, 운좋게 한빛미디어의 나는리뷰어다 이벤트를 통해 <러닝 HTTP/2>를 지원받았다. 나는 150 페이지 분량의 이 책을 통해 HTTP/2가 무엇인지, 어떻게 동작하는지, 그리고 내가 궁금했던 HTTPS와 HTTP/2는 어떻게 다른 것인지 명쾌하게 이해할 수 있었다.

1. HTTP 발전 과정과 HTTP/2의 이점
2. HTTP/2로 전환하기 전 고려해야 할 항목
3. 웹 성능 향상을 위한 모범 사례 및 안티패턴
4. 브라우저, 서버, 프락시, 콘텐츠 전송 네트워크에 대한 HTTP/2의 지원
5. HTTP/2 vs HTTP/1.1 성능 비교
6. 지연 시간, 패킷 손실, TTFB 등에 대한 HTTP/2의 영향
7. 다양한 웹 브라우저 개발자 도구로 디버깅하는 방법
8. QUIC, TLS 1.3 등 HTTP/2 이후를 대비하며 살펴볼 기술

위와 같이, 이 책은 기존의 HTTP/1.1는 무엇이며, 문제가 무엇인지, 이를 개선하기 위해 어떻게 HTTP가 발전되어 HTTP/2까지 이르렀는지 아주 명쾌하게 설명되어있다. 뿐만아니라 상세 내부 동작 원리에 대해 적절한 예제와 함께 알기쉽게 설명하고 있다 (간간히 나도 생소한 내용이 나오긴했는데, 전체적으로 HTTP/2의 개념을 이해하는데는 크게 지장이 없었다).

사실 나처럼 연구 목적이나 취미 목적의 간단한 웹서비스를 만드는 사람은 HTTP/2를 당장 도입하지 않아도 크게 지장이 없다. 하지만 일정 규모 이상의 서비스를 개발할 때는 HTTP/2에 대한 이해와 구현이 필수다. 이미 대부분의 알려진 브라우저, 웹서버들은 HTTP/2를 지원하고 있으니, 구현하는데 큰 어려움이 들지 않을 것 같다. 이 책에서는 HTTP/2 구현이 신경써야 할 점들에 대해서도 자세히 설명하고 있기 때문에 크게 도움이 될 것 같다.

나는 이 책을 읽고 나서야 정확히 이해했다. HTTPS는 HTTP/2구현의 필요조건일 뿐이라는 것을. HTTPS만 적용한다고해서 자동으로 HTTP/2가 적용되는 것은 아니었다. 특히 최근에 HTTPS를 도입한 내 웹서비스는 Flask 웹프레임워크 기반으로 만들면서, 따로 Apache나 Nginx를 연동하지 않았던터라 HTTP/2를 지원하지 않았다. 이 책을 보고나니 Apache와 연동해서 HTTP/2로 동작하는 모습을 보고어서 추가적인 작업을 하려고 계획중이다. 에서는 HTTP/2 디버깅도 방법에 대해서도 설명하고 있어서 따라하기 좋다. (간단한 웹사이트라 HTTP/2를 지원한다고해서 큰 속도향상이 있을 것 같지는 않지만...)

웹개발 입문자라면(Header, TCP등에 대한 지식이 없다면) 인사이트의 O'RELLY 번역책인 HTTP 완벽가이드(http://www.insightbook.co.kr/book/programming-insight/http-the-definitive-guide)를 먼저 읽고, 이 책을 읽기를 추천한다. 그런 기본 지식이 없으면 이 책을 전혀 이해할 수 없다 (나도 이 책의 몇몇 부분에서는 전문적 지식이 부족하여 이해하지 못하고 그냥 넘긴 부분이 몇몇있다). 하지만 HTTP에 대한 기본적인 이해가 있고, 웹개발에 관심이 있는 사람이라면 바로 이 책을 봐도 좋을 것 같다. HTTP에 대한 깊은 이해의 지름길이자 바른길, <러닝 HTTP/2>를 강력 추천한다 (심지어 가격도 싸다. 약 15,000원!).

이 책을 읽으면서, HTTP/2에 대한 관심이 더 커서 여기저기 자료들을 찾아보던 중, HTTP/2에 대해 잘 설명하고 있는 자료들을 찾아 아래에 정리하였다. 아래 자료들을 보고 <러닝 HTTP/2>를 읽는다면 훨씬 이해하기가 쉬울 것이다.

블로그 포스트
http://www.popit.kr/나만-모르고-있던-http2/
http://americanopeople.tistory.com/115
http://d2.naver.com/helloworld/140351

2014년 10월 17일, 한국 웹 20주년 컨퍼런스, "더 빠른 웹을 위해: HTTP/2" 발표자료, 발표자: 네이버랩스 이응준
https://www.slideshare.net/eungjun/http2-40582114

기술문서
https://developer.mozilla.org/ko/docs/Web/HTTP