среда, 9 ноября 2022 г.

HTTP 3

         Недавно открыл для себя HTTP 3. То есть узнал что HTTP over QUIC теперь называется HTTP 3. Но называть этот протокол HTTP 3 это такой же буллшит как называть JavaScript улучшенной версией Java. HTTP2 и HTTP3 это две реализации протокола HTTP2. Одна работает поверх TCP, вторая поверх QUIC. Так как HTTP3 работает не поверх TCP, то полностью HTTP/HTTP2 он не заменит примерно никогда. Потому что я склонен относить протокол TCP к вечным ценностям и при моей жизни его врят-ли кто-то вытеснит. 

       На самом деле даже использование HTTP 2 не так давно перевалило за 50%, и это спустя минимум 10 лет разработки.  И при этом спустя 5 лет активного использования выяснилось что половину его фичей broken by design:

- Server-side push - концепция замечательная в теории, работает замечательно в простых примерах - когда вариантов куда пользователь пойдет дальше не так много. В любом более сложном примере - проблема предсказания дальнейших действий пользователя - становится нетривиальной. Поэтому в Google Chrome ребята решили удалить server side push - https://www.ctrl.blog/entry/http2-push-chromium-deprecation.html   

- Resource prioritization - тоже оказалась не легким делом. То на серверной стороне баги, то на стороне браузера "особенности реализации" - https://github.com/andydavies/http2-prioritization-issues  

- Resource pre-loading - тут казалось бы что может быть проще. Но даже pre-loading в комбинации с багами приоритизации может оказаться совсем не быстрым - https://twitter.com/programmingart/status/1351557858354225159 

            Если взглянуть на историю ИТ то кажется что с "созреванием" отрасли скорость внесения изменений/оптимизаций становится все ниже. Если взглянуть на основной протокол интернета - TCP, то три четверти попыток его улучшения не прижились. Чего стоит история TCP Fast Open - https://squeeze.isobar.com/2019/04/11/the-sad-story-of-tcp-fast-open/ В общем жизнь подтверждает банальную истину - чем проще, тем лучше. Простые вещи - быстро набирают популярность и работают. Сложные академический протоколы - тяжело набирают популярность и утопают в особенностях реализации. HTTP/2, QUIC, IPv6 стек протоколов - живые тому примеры.           

Комментариев нет:

Отправить комментарий