聴いたやつは以下。
- server_perf
- server_arch
- webrtc
- http2
- front_arch
フロントエンドエンジニアやってますがクライアントまわりは身の回りに聴いてる人いっぱいいそうなので、最後以外はサーバーサイドに寄ってみた。
資料があるわけじゃないので箇条書きまとめ。
server_perf
はじめに
- ページ返してた時代からAPI時代へ
- 処理は軽くなったが量が増えた
- 3-4万リクエストを1台でさばけるように
パフォーマンスのあげかた
- どーしてもパフォーマンスが上げられない処理は、仕様から変えるのもあり
- キャッシュは効くけど運用がつらくなる
- メモリ負荷も上がるので、表示頻度との兼ね合いで
- ユーザー単位でキャッシュ作るのも一例として
- ABテストはしづらくなる
周辺技術
- Edge Side Includes / http://www.slideshare.net/xcir/varnishesi
- nginScriptはまだ実用的には使えない
- Varnishはhttp2をサポートするらしい(TLSは最小限で
ネットワークの安定しない海外アクセス
server_arch
grpc-gateway
- gRPCは良いもの / https://github.com/grpc/grpc
- 従来型のRESTのAPIとgRPCを仲立ちするgateway
- やってることは内部で効率よく処理することもできる内容だが、これは外部通信向けに作ったもの
- 10年メンテしないといけないプロジェクトではgRPCには手を出せない(SIer視点
- gRPCでもSOAPの用途の80%はカバーできると思う
- ただトランザクション系はgRPCだとつらそう
- コネクションをプールできる実装
- DBとそれができるのは現在Javaしかない?
- http2がベースになれば、その上でカスタムプロトコルを展開できる
- Thriftとはなんだったのか
- RMI(Remote Method Invocation)
Reactive Streams
- http://takezoe.hatenablog.com/entry/20150217/p1
- gRPCにはいわゆるBackpressureみたいな機能はない
- Rubyは送られすぎると死んじゃう
- ハードで解決できないくらいスケールしないといけない時代のReactive
- ネットワークに限界を感じたらGCP
- それでも厳しいと感じたら海底ケーブルを自前で・・
- 並行処理プログラミングは簡単じゃない
- Goはそのへん楽にしてくれる(けどやりすぎ注意
- Scalaもそのへん頑張ってる
- ErlangもElixirも隣の芝生は青い(と思う
Microservices
- 内部通信と外部通信を分けたうえで、内部に使いたい
- 非同期が必要なのもこれのため
- なんちゃってなものは巷に多い(http叩いてるだけとか
- 非機能要件(デプロイ・モニタリング)も互換性が必要
- Docker用のDockerビルダーも欲しくなってくる
- サービス間通信に比重がよる
webrtc
はじめに
- 現状は割とつらい
- プラットフォーム(SkyWayとか)も頑張ってるけどつらい
- ブラウザ別対応するのもつらいけど、ブラウザの自動アップデートもつらい
- バージョンアップ後、自動的に動かなくなる事案が発生する
- つらい
運用のつらい話
組み込みRTC
- クライアントは固定したい
- Electronは固定できていい
- RaspberryPIでも割と動く
- ただ録画はやめとこ
ORTC
これからやるにも
http2
はじめに
- 無事に仕様としては固まった
- 主要なブラウザはHTTP/2に対応完了!
ほんとに速いのか
サーバーPush
- 1RTT削るだけ
- 日本だとRTTがボトルネックにはならないので、そこまで恩恵がないかも
- キャッシュ用途に使うとか?
HTTP/3・・?
front_arch
はじめに
Router
- Angularはng-routerよりはui-router
- React-routerは宣言的!に書ける
- 結局HistoryAPIのラッパなので、FWが用意する必然性はない
記法まわり
- ReactはJSX x Babelで書いていく
- AngularはTypeScriptやBabel
- PolymerもES6で書ける
速さ
- Angularは1.4時点でもReactと同じくらい速い
- 速さを求めてReactは選ばない
- DOMが遅い!ってなるのはゲームくらい
アーキテクチャ
- 全て揃ってる = 足かせになることもある
- Angular2はFluxっぽい
- ReactはHot reloadとかできる
- ComponentにStateをもたせるべきか
- データはどこにあっても良いのでは
イベントの管理
- Streamの概念はこれから
- まずはPromise
- ES-Observableとかも期待
これから
- フロントエンドフロントエンドとフロントエンドバックエンド(二槽式!)
- コンポーネント・リクエスト・イベントから成るのがフロントエンド
- jsじゃなくても別にいいし、ServiceWorkerでやったりとか(二槽式!)
- 仕様があるから比較ができ議論ができる
なんかいろいろあるみたいですけど、誰が喋ってもあの話の流れではああなると思います。