nodeconf.eu 2日目 (node.js in production, jschan, debugging)
さてさて二日目。
ひょんなことから円卓で座って会話したらイギリス英語とアメリカ英語の話になって、
「なんでナスってアメリカだとeggplantなんだよ、卵って紫じゃないだろw」
「イギリスのaubergine ってなんだよ、覚えられないよw」
みたいな会話に巻き込まれて、
「いやいや、そんな野菜よりも色のgreyとgrayの差のほうが深刻で、間違えやすいよ、CSSとかでどうしてるの?」
って言ったら
「ウェブの標準はアメリカ英語だから」
っていうマジレスを受けました。
二日目のセッションも色々と聞いてきてすげー面白かったので、まとめていきます。
node.js in production
ab testing in netflix
netflixでやってるAB testingの話。テンプレートをどうやって管理してるのかっていう話とかがあって面白かった。
Building high quality services at Uber
Uberがやってる高品質なサービスを本番で運用するための方法
1. logを取ろう。
2. モニタリングをしよう、できればリアルタイムに。
3. configをちゃんと管理しよう、configの変更履歴は取れるようにしよう。
4. キャッチされない例外はログを記録した後にプロセスを殺そう。
5. perf-logが取れるようにしよう。
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
6. nagiosでヘルスチェックしよう。nagiosがアラート受け取ったらpager dutyを起こそう。
7. CIをちゃんと回そう、potter?ってのを使うと良い。
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
Fullstack microservices framework by mcollina
GraftJSって呼ばれるmicroservicesを作るためのフレームワークを作っているという話。
中でjschanっていうlibchanのjs実装を作っていてすごく面白かった。
jschan https://t.co/UC7zYN5Fyj #nodeconfeu
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
これやな。 / “graft” http://t.co/fjmEbS7d3I #microservices
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
graftとjschanを使って作ったwhiteboard共有アプリ。microserviceとして作られてるとか / “AetherBoard/aetherboard · GitHub” http://t.co/RMCqILOvnr #graft #jschan
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
dtrace workshop by max burning
これが結構ネットワークが不安定でWorkShopとして機能してなくて厳しかった。
ただ、かなりdtrace, mdb, lldbが強力だということがわかったので積極的に使っていきたいと思う。
mdbを使ったnode.jsデバッグの話 / “MDB and Node.js - Blog - Joyent” http://t.co/7lGNNdQznB
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
#nodeconfeu / “tjfontaine/lldb-v8 · GitHub” http://t.co/9EOxdU25rU
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
dtraceめっちゃ強力だという事がわかったんだけど、使いこなせる気がしない。とりあえず、streamでうまく行かなかくて、にっちもさっちもいかないなら使ってみたいと思う。ただ手を出すときはもうほぼ詰んでる時だけだ、、、
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
懇親会にて
Fedor Indutny (node.js core team) へのインタビュー
Q. やっとIndutny見つけた!v0.12をリリースしてない一番の障害って何?
A. async listenerの決着がついてないことだね。その辺りもうすこし改善しないといけないと思ってる。
Q. ちなみにTJは性能が安定してないって言ってたけど
A. それもあるよね。性能改善はこっちも重要な要素だと思ってる。
Q. じゃあ性能が改善されてasync listenerに決着がついたらv0.12出せそう?
A. 僕はそう思ってるよ。詳しくはTJに聞いて欲しいけど、僕はそう思う。
Q. ちなみに私的な質問なんだけど、年齢はいくつ?
A. 24歳だよ。
(一緒に写真撮り忘れた)
@indutny tallying TLS at #NodeConfeu #nodejs pic.twitter.com/aMOn96tjWA
— Cian Ó Maidín (@Cianomaidin) 2014, 9月 9
matteo collina (mosca, jschan, graft committer)へのインタビュー
Q. jschanの話おもしろかった。jschanってwsとspdy両方サポートしてるけどなんでなの?
A. websocketはブラウザで使う目的だね、spdyはブラウザというよりもサーバー間の連携で使うようにするために作ったんだよ。基本的に双方向性はjschanでは不要だったから(request-response形式である必要がないから)spdyのサーバーpushで一方的に送れる方が良かったんだよね。
Q. graftってmicroservicesフレームワークってことだけど、どういう所で使われることを想定してるの?
A. webアプリとかでも良いだろうし、可能性はたくさんあると思ってる。ゲームとかでも使えるんじゃないかな。
Q. microservicesってSingle Point Of Failure を作らないことが重要だって言ってたけど、エンドポイントのところをどうやってケアしようとしてるの?
A. 協調アルゴリズムにRaftを使ってRaftで自分の情報を多重化して持つような仕組みを考えてる。もう少ししたらnode.jsでRaftみたいなgossip protocolをしゃべるモジュール作ろうかなと思ってる。それよりもまずはgraftのService Discovery protocolのほうが先かなー。
Q. mosca日本で流行りはじめてるよ。ただ僕も含めてまだ知らないユーザーが多いから、日本に来れたらmosca meetup 開くよ!
A. おお!やったー!!!それはいいね。日本に行きたいけど、11月は無理そうだから調整しよう!
Moscaを作ってるmcollinaと熱いMQTTの話してパチリ! pic.twitter.com/oGP0mkQBT7
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
Raynos (mercury, uber)へのインタビュー
Q. 発表めっちゃ良かった。ちなみにpotterってオープンソースなの?
A. まだオープンソースにしてない。近いうちにオープンソースにするよ。
Q. 日本の開発者がvirtual DOMに目覚めはじめてる、mercuryって今後のRoadmapどうしていくの?
A. プロファイルできるようにしたいと思ってる、もう少しメモリ管理周りをちゃんとしたいと思ってる。
Q. 初歩的な質問なんだけど、 mercuryってサーバーでもクライアントでも使えるの?
A. もちろんだよ。そう設計してあるよ。
Mercuryを作ってるraynosと一緒にパチリ pic.twitter.com/BPY12HyBn3
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
Domenic (traceur-compiler)へのインタビュー
Q. めっちゃしゃべってみたかったdomenicだ!!握手しよう!
A. sure!!
Q. traceur-compiler使ってるよ、あれ使うとES6でかけるしイケてるよね。ところで他にもes6-shimsってたくさんあるけど、domenic的にはどれが一番いいと思うの?
A. もちろんtraceur-compilerだね。一番機能が多いし。
Q. 機能多いけど、生成されるjavascriptが読みにくいよね。
A. そうだねー、生成されるJavaScriptは読みにくいよね。まぁ一応ソースマップはあるからデバッグはそこまで難しくないだろうけど、スタックトレースとかは厳しいよね。
Q. es-nextとかes6nowとかだと読みやすいコードで出してくれるからああいうの使いたいと思う事多いんだけど。
A. そうだけど、彼らのES6機能はフルセットではサポートしてないよね。まぁ問題としては認識してるよ。
Q. traceur-compilerの性能はどうなの?
A. あんまり問題ないよ。普通に使う分には問題にはならないかなぁ。
Q. letとか使うと性能落ちるよね。
A. そうだね、中でtry-catch してるから。僕が送ったp-rではもう少し改善されてるはず。そのうち改善されるんじゃないかな。
Q. traceur-compilerにTypesとかAnnotationってあるよね。あれってES6に入らないの?
A. ちょっとむずかしそうだね、ES6はもうバージョンがこれ以上上がらないことが言われてるから。ES7とかは分からないけど、今のところほしいっていう人そんなにいないんだよね。もしもangularがTypesとAnnotationが標準で欲しくなったら誰か提案するんじゃないかな。僕もそこまで必要だと思ってない。
Q. 日本ではTypeScriptをやってる人が割と多くて彼らはJavaScriptに型が欲しいって言ってるんだ。その辺どう思う?
A. TypeScriptはいいと思うよ。僕はgoogleに勤めてるけど、Microsoft 製品すごく好きなんだ(Windows Phoneを見せながら)。まぁTypesが必要なシチュエーションが多くなったら僕とかES6決めてるメンバーにフィードバックがほしいなぁ。
Q. 型があったらIDEとかでリファクタリングしやすいと思うんだけど、リファクタリングってどうしてるの?
A. あんまりIDE使ってなくて、僕はsublimeよく使ってるよ。リファクタリングはしたくなった時にしてるかな。テストは型の有無にかかわらず必要なわけだし、型があるからテスト書かなくてよいというわけではないからね。(なんかあんまり噛み合わなかった)
Q. あーじゃああんまりIDEでのリファクタリングの恩恵を受けてないのか。
A. そうだねー。
Q. closure compilerってあるじゃん、あれって型をコメントに書くとチェックしてくれるよね?あの機能ってtraceur-compilerに作らないの?
A. 今のところ予定はないけど、良いアイデアだよね。
Q. closure compilerでES6からES3とかES4とかにトランスパイルする仕組みがあるって噂聞いたんだけどGoogleでは何か動きある?
A. え?そうなの?知らなかった。あんまりclosure compiler詳しくない。
Q. ChromeのES6の対応状況を知りたい。classって3.29に入りそうだよね。
A. まだ入ってないけど多分入るだろうね。
Q. generators/yieldってharmonyオプションはずさないの?
A. あとちょっとで外せるけどまだだね。もうちょっと待ってほしい。
Q. letは?letが一番ES6で使いたい!
A. letも入れたいよねー。今のところ一番よい実装ってIE11なんだよね。Firefoxもあるけどbuggyだし。まぁこれももうちょっとまってよ!
Q. 話せてよかった!今度日本に来る時あったらES6 meetup開くから教えて!!
A. sure!!
es6を決めてるドメニクとtraceur-compilerについて超話してきた!! pic.twitter.com/qAWfxTU2RO
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9
dglogic (micorservices in IBM)
Q. microservicesって今後ソフトウェア開発の主流になるかな?
A. 僕らはそう思ってる。あれは、結構基本的な考え方になるんじゃないかな。
Q. microservicesとSOAの違いって分かりにくいよね。
A. SOAってもっと野心的な考え方だけど、microservicesってそんなに大きなことを語っていなくて、単なる大きなサービスを個々のコンポーネントに分割して表現しようって言ってるだけだよね。そこが一番の違いだと思ってる。SOAはどっちかというとユーザー志向でユーザーにとって意味のあるサービスを作る必要があるけど、microservicesって別にそんなに大きなことを語っていなくて、単なる設計手法っていう位置づけだと思ってる。
Q. webアプリケーションとかでも使えるかな?
A. ある程度の規模(7個以上(?)の独立した機能があるサービス)を超えたら使えると思うよ。
Microservicesの今後についてIBMのdglozicとトーク。SOAとの違いについて話した pic.twitter.com/Qexk9Yeya2
— Yosuke FURUKAWA (@yosuke_furukawa) 2014, 9月 9