次世代 Web カンファレンス #nextwebconf に参加してきた
2015年10月18日に開催された「次世代 Web カンファレンス #nextwebconf」に参加してきました。
server_perf
以下自分のつぶやきと参考になったツイート
「パフォーマンスを上げるには仕様を変えるのが一番よかったりする」
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
cookpadではアプリから叩くAPIのリクエストが支配的になっていて、Webの比率は下がってきている #nextwebconf405
— でめ (@deme0607) 2015, 10月 18
webよりapiが増えている。勘所が違う。やることが単純に。ただし単体の処理性能は求められる #nextwebconf #nextwebconf405
— Hiraku (@Hiraku) 2015, 10月 18
IoDrive使ったりする(札束で殴る) #nextwebconf405
— 再利用性 (@reizist) 2015, 10月 18
全部キャッシュするとメモリが溢れる。効果が抜群なところ、ユーザーごとに共通なもの、ランキング上位でよく見られるところ、そう言った特性を活かす #nextwebconf #nextwebconf405
— Hiraku (@Hiraku) 2015, 10月 18
「キャッシュがあるとABテストしにくい」「不具合がキャッシュのせいか判別するコミュニケーションコストある」 #nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
CPU1個あたりの性能は結構前から頭打ちになっているのでコアを増やして性能を出すようになっている、複数のCPUを扱いやすいような言語としてCやGoなど使ってるらしい #nextwebconf405
— 再利用性 (@reizist) 2015, 10月 18
us-east においておけばまんべんなく遅い (日本においておくよりはいい) #nextwebconf405
— Takumi Kanzaki (@tknzk) 2015, 10月 18
昔に比べてCDNに求められていることは増えていて、今まではstaticなコンテンツ配信のみだったけど今後はapiへのリクエスト等もCDNを通してレイテンシを抑えるという会社も増えてきたとのこと、へえ #nextwebconf405
— 再利用性 (@reizist) 2015, 10月 18
「Opera miniは画像のリサイズをプロキシ側でしてくれたり、JSをサーバサイドでレンダリングしてくれたりする」 #nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
server_arch
server_archでは開始早々、@yuguiさんが開発したJSON APIへの変換プロキシ生成機"grpc-gateway"の話となった。
そもそもgRPCとは、HTTP/2の利点である双方向ストリーミングや多重リクエストを扱えるRPCフレームワークであり、C、C++、Java、Go、Node.js、Python、Rubyなどの言語をサポートしている。
新しいオープン ソース HTTP/2 RPC フレームワーク、gRPC のご紹介 - Google Developer Japan Blog
ただ、gRPCはすべての言語をサポートしているわけではなく、かつHTTP/2が必須なため、これを今までのJSON API、HTTP 1.1でも動かせるようにするためのものが"grpc-gateway"とのこと。
以下自分のつぶやきと参考になったツイート
HTTP2をカスタムプロトコルの土台にするユースケースがGRPCだと。 #nextwebconf405
— 0x1F歳になったじょーかー (@joker1007) 2015, 10月 18
言語として db とのコネクションプールをサポートしているのは java だけ、そういう視点なかったな、おもしろい #nextwebconf405
— Tetsuya Morimoto (@t2y) 2015, 10月 18
JDK9にReactive StreamsのDoug Leaさんの話題。JSR前のJEPはこれですね。http://t.co/FUZOtbE8Ti #nextwebconf #nextwebconf405
— guyon (@gu4) 2015, 10月 18
これか。 http://t.co/J2rXQMV8g8 #nextwebconf405
— Shinpei Ohtani (@shot6) 2015, 10月 18
「Googleは海底ケーブル引くセクションを持ってる」
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
「ちゃんと自前で海底ケーブル引いてる会社のとこ使えばいいんじゃないですか」「たとえば Google にはそういうセクションがありますよね」 #nextwebconf405
— そらは (@sora_h) 2015, 10月 18
「内部通信はマイクロサービスでのコンテキストと呼んでいる。前提としてマイクロサービスがあって非同期な話が出てくる。」 #nextwebconf #nextwebconf405
— guyon (@gu4) 2015, 10月 18
非同期あってのMicroServices、ってところが落とし所っぽいな
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
普通にMicroservicesはデフォルト非同期・ノンブロッキングじゃないと、粗にできないから、難しいと思いますよ。 #nextwebconf405
— Shinpei Ohtani (@shot6) 2015, 10月 18
standardization
(昼飯で抜けてたので途中からしか聞いていない)
以下自分のつぶやきと参考になったツイート
ES6の仕様策定は6年かかってる
#nextwebconf #nextwebconf406
— ぺら (@Peranikov) 2015, 10月 18
ES6 の仕様策定には 6年かかったが、最後には凄くスピードが上がった。それは Babel の存在が大きい。実際に開発者に使ってもらいフィードバックを得ることで標準化の速度を加速する。 ES.next の仕様の議論にも Babel の名前が出てくる #nextwebconf406
— Takuto Wada (@t_wada) 2015, 10月 18
extensible webで低レイヤなものを作るともう一回POSIX作るみたいな事になりがち、OSでやってることもう一回やるんですか?!皆さん?! #nextwebconf #nextwebconf406
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
Webっていうのが複雑になりすぎてて、vivaldiみたいな小さいブラウザが標準に沿おうとしてもかなり小さいベンダーだけでは難しくなっている。 #nextwebconf #nextwebconf406
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
http2
以下自分のつぶやきと参考になったツイート
http2の現状
- 仕様は去年の11月でほぼ固まっている
- クライアントブラウザ側はほぼ対応済み
- nginx/Apacheもモジュールがある
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
http2は本当に速くなってるのか?1より遅い部分もあるのでは?
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
- http1では同時接続が6本、http2では100本
- http1では先にHTML、後からJSや画像が来る。http2ではすべて同時に来る。
- つまり最初のレンダリングが遅くなるケースがある
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
http2で遅くなるケース:
http1だったら6本でファイルをDLできたけど、http2だと同時に何本も取れるようになる、htmlに書いてある全部のリクエスト同時に送る、そうすると画像もcssもjsも混ぜこぜに来るので初期レイアウトを見るのがhttp1よりも遅くなるケースが有る
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
多重でロードできるが、「CSSや画像を先にくれ」という優先度をつける仕組みをきちんと実装できているのは現時点firefoxしかない
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
Chromeはpriorityの実装を進めようとしてるがIEはすでに諦めてる #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
http2を使いこなすために
- ブラウザ側で指定しないのであればサーバ側で優先度つけてあげる
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
大津さん「priority自体が万能な銀の弾丸とは思っていない、いくらpriorityが高くても手元にリソースがないと送れない、この手元にちゃんとリソースがある状況がそんなに沢山ないのではないか。」 #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
priorityは万能ではない
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
大津さん「CDNしかり、ファイルからまだ読み込めてない状況もあるし、コンテンツのシチュエーション次第では指定しても無駄になるケースが有る」 #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
http2は1に比べ遅延の影響を受けにくいのがメリット
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
日本でのRTTは数十msec程度。1つのWebページ表示するのに10~20RTT。ServerPushで1RTT減ったところで大したインパクトはない。
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
「ServerPushは高速化にメリットは無いのでは」
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
『Server Pushいらないんじゃない?』っていう話も仕様の際には出てた。キャッシュ用途に使うというのはキャッシュがあるかどうかを判別するのが難しい。 #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
server pushが意外と難しい問題はこの辺もご参考に / ES6 ModulesはHTTP/2によってconcat無しで使えるようになるのか - teppeis blog http://t.co/v1hJIkcSex #nextwebconf405
— teppeis (@teppeis) 2015, 10月 18
http2は速さ以外のメリットがあるか?
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
http2のメリットとしてサーバ側からクライアントへのPushがやりやすくなる。
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
http2は"基本的に"速くなると思っている。1つのコネクションで複数リクエストに対応できるので結果的にサーバ側の負荷が下がる。
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
TCPの接続を毎回切断しないのでサーバーの負荷を下げるっていう速度以外の効果もある。Googleみたいな大規模になればなるほどその効果が上がる #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
http2 はハイパージャイアントだけのものなのか?小さいベンダーで使う意味があるのか?身の丈に合うのか?? #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
WebSocketはhttp2では使えなくなった
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
いつ http2 only のサイトを作るか、 mobileで言えば iOS10 が来年出る、そうするとSafariはクライアントがhttp2を対応してる、そういうタイミングだったらhttp2オンリーでもいいのではないか #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
セマンティクスとして一番足りないものは何かというと、HTTPはreq/resで双方向でデータやりとりする仕組みが足りない、GRPCは複数の接続を貼って実現してる、そういうのができるような動きが増えると良い #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
Google QUIC
https://t.co/VTCCn2Qozp
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
HTTP/2, QUIC入門
http://t.co/L5IdMt0w1J
#nextwebconf405
大津さんの資料がわかりやすいです
— ゆき (@flano_yuki) 2015, 10月 18
QUICの場合はUDPでデータを暗号化していっぺんに送れる、0-RTTでできる、レイヤをまたぐことでレイヤごとにやってる無駄な処理を省くという効果がある #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
丁度雑談で、「HTTP/2はハイパージャイアントのためだけのものだと思ってたけど、特定用途のカスタムプロトコルの基盤としてなら多重化もプライオリティも重要だしライブラリが自動で対応してくれる余地がある」という話をした。 #nextwebconf
— Yuki Yugui Sonoda (@yugui) 2015, 10月 18
QUICの標準化で興味が有るのはwire formatがリトルエンディアンで実装されてる、そういう仕様ってあんまりない、ほとんどのサーバはリトルエンディアンなので、ビッグからリトルの変換がない分無駄な処理が減る #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
kazuhoさん「QUICの期待:ゲーム系ではUDPが普通だし、それによってリアルタイムなものが増えてくる、そういう意味でもhttp2ではなくQUICの重要性は高い」 #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
「将来的にはhttp1.1とhttp5だけ、みたいな世界になるのでは」
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
「Webはエコシステムで成り立っていると思っている。エコシステムの中心が移っていった時、http1は取り残されたもの、という恐怖がある」
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
Jxck「エコシステムの中心はhttp1.1じゃなくて先に行ってしまうのではないか、そういうエコシステムが先に先に行くことでhttp1.1の人たちは取り残される懸念がある」 #nextwebconf #nextwebconf405
— Yosuke FURUKAWA (@yosuke_furukawa) 2015, 10月 18
front_arch
以下自分のつぶやきと参考になったツイート
ルーティングどのようにしているか
- ReactではReact Routerを素直に使っている
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
ルーティングどのようにしているか
- Angularはルーターが強い
- ngRouteという標準APIがある
- サードパーティuiRouterを公式が勧めるほど強力
- Angular2でもルーターはサポート
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
Angularは1.4でReactと同等のパフォーマンス!
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
Angular2のアーキテクチャ
- MV?と言っていない
- データフローを特に提示していない
- コンポーネントをツリーにするのでFluxライクである
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
イベント管理どうしてますか?
- Reactでは担当するコンポーネント作ってそのコンポーネントに任せてる
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
イベント管理どうしてますか?
- イベント扱うのにStreamは良い
- Promiseが発達することが条件
#nextwebconf #nextwebconf405
— ぺら (@Peranikov) 2015, 10月 18
さいごに
主催してくださったJxckさんを始め、登壇された方々ありがとうございました。とても濃密でWebの未来について感じることができた1日となりました。