HTTP2 時代のサーバサイドアーキテクチャフィードバック
@Jxck_ @tatsuhiro_t nginxの件は、バックエンド側のTTLがフロントより小さくHoLブロック耐性があるので、単に優先順位の問題だと思う。また振り分けロジックが必要な場合も多いので最初はnghttp2をフックするようなカスタムモジュールになるんじゃないかな。
2015-05-12 09:55:11@jovi0608 @tatsuhiro_t nginx-nghttp-module vs nginx-h2o-module 胸熱な流れw
2015-05-12 10:09:25アプリケーションサーバにpush可能なコンテンツを置かないだろうし、リバースプロキシは複数のTCP接続からのリクエストを単一のTCPに重畳して流すので、H2 pushはアプリケーションサーバとの間では使わない形になるかなと htn.to/rwP4Re
2015-05-12 10:48:28上流接続を、下流接続のTCPとは異なる単位でまとめないと、特にDC内をHTTPSにする場合は速度やレイテンシ的な問題が発生するでしょうね
2015-05-12 10:50:06@kazuho うーむ、そうするとServiceWorkerでのpush通知をhttp2 pushを使って実現するのはできなくなりますね。プッシュ通知したい情報はアプリが一番知っているはずですし。もしくはリバプロがもっと役割が増える形になるんですかね。
2015-05-12 11:10:53@kazuho それはアプリからの Push 指示は Link ヘッダで十分という意味でしょうか?それともアプリは Push に関与しないという意味でしょうか?
2015-05-12 11:16:55@Jxck_ Linkヘッダで十分ではないですが、アプリケーションサーバとHTTP/2接続するとしても、現状と同様、複数のクライアントからのリクエストを重畳するアプローチを取り続けるだろうし、その場合アプリサーバからH2 pushすることはできないだろう。という意味です
2015-05-12 11:20:19@kazuho アップストリームと HTTP/2 接続ができているなら Push ができないということは無いと思うのですが、そこがよくわかりません。どういう意味でしょうか?
2015-05-12 11:27:50@Jxck_ 「リバースプロキシは複数のTCP接続からのリクエストを単一のTCPに重畳して流す」ようにしないと、特に上流との接続をTLSで保護する場合、上流との接続切断のオーバーヘッドが大きくなりすぎます。一方、重畳するとpushがどのクライアントに対するものだったか判別不能に
2015-05-12 11:36:15@kazuho @Jxck_ proxyは上流と下流のストリームidの組を知っているとすると上流からのpush promiseを行き先の下流へ流せるかも
2015-05-12 11:41:31@kazuho ああ、なるほど。 HTTP2 の多重化じゃなくて、それを TCP でさらに束ねた時、複数コネクションでの一意な stream id が無いとダメということですか。それは考えてませんでした。うーん、 Google とかどうしてるんだろう。。
2015-05-12 11:42:23@Jxck_ @jovi0608 ただしngttpxにホストやパスで振り分ける機能はないですけどね今のところ
2015-05-12 11:42:45nginxのSPDY実装でもserver pushは実装されてないし、http/2サポートするようになってもやっぱりserver pushは実装されないんじやないかしら?あくまでhttp/2ターミネーションのみになる気がしてる。
2015-05-12 11:45:06@kazuho link での push って実際そこまでかなとは思うんですが、 ws over http2 とか grpc や service worker 向けみたいなものを考えると、 Push 自体をどうやって可能にするかは考えておく価値があるかなと思ってます。
2015-05-12 11:46:11Jxckさんの記事で触れられてたLinkヘッダでpushするの遅すぎる件は同感だし、そのへんはh2 httpdの設定でプッシュするコンテンツを指定する形がいいんじゃないかとは思ってます。プッシュにどれほどの意味があるかというのはさておき
2015-05-12 11:46:25@kazuho @Jxck_ アプリケーションサーバーがh2を話すと仮定してリクエストHEADERSのstream idに対してPPすると考えてました。
2015-05-12 11:46:32@Jxck_ long-polling的な用途で言うと、リバプロがクライアントとの接続断を検知した時にアプリケーションサーバに通知する方法もなかったりしますし、通知用途では別FQDNにサーバを用意するほうが現実的かなぁと
2015-05-12 11:51:31@jovi0608 @Jxck_ 低遅延のバックエンドではh1でも十分という意見もあるかも。grpcみたいなのがバックにいるとだめだけど
2015-05-12 11:53:00@kazuho Push をコンテンツ配信の一部としては考えないということですよね。まあそれはなんとなくわかります。じゃあ今度 Push クラスタみたいなものってどうやって組むんだろうという話になりそうな気もしますね。そういうのは h3 の話につながるのかもですが。
2015-05-12 11:56:32まあそういうの全て踏まえた上で「本当に HTTP2 に移行する必要あるのか?」については、まだまだちゃんと議論がいるよねというのはある。
2015-05-12 11:59:57