フライト・レコーダ を Nodejs で作るとどうなるか

11 月にNodeFest Tokyo 2014 で話してきました。タイトルは A Profiling and Monitoring Method for Nodejs Applications というのですが、Lightening Talk ということもあり、そこでカバーできなかったこと、その後加わった便利な機能、経験に基づく Best Practicesなど、皆さんのお役に立ちそうなことを、会場で伺ったご意見を考慮して、何回かに分けて書いてみようと思います。

ちなみに、これは npm と githubソースコードを公開している 「Concurix profiling and monitoring ツール」 についてです。もちろん、無料で使えます。NodeFest Tokyo 2014 に参加されなかった方のためにマニュアルへのリンクをあげておきますと、npmjs.org にある cx-helloworld-readme-ja というパッケージになります。

 


 

ご存知のようにフライト・レコーダというのはブラックボックスともいい、Wikipedia によると、「飛行中のコックピット内で操縦士たちが交わした会話や航空交通管制機関との交信内容、機体の飛行状況を記録し続けることにより、事故原因究明のための手掛かりとするべく旅客機に搭載されている。すべてを記録すると記録量が膨大になるため、古いデータを消しながら直近の出来事をエンドレスに(記録を書き換えながら)記録する。このため、一定時間以前のデータは記録に残らない。」とあります。

今日のブログのタイトルを、当初、「Nodejs アプリにフライト・レコーダ を設置した話」としたのですが、フライト・レコーダの定義は、上記のようですから、「Nodejs アプリに設置した」は真実とは考え難い。そこで、いろいろとお知恵を拝借し、 Nodejs とフライト・レコーダを入れ替えて、「もし仮に」というニュアンスを含むフライト・レコーダ を Nodejsで作るとどうなるか」というタイトルに落ち着きました。

もう少し想像力を働かせていただきます。そのブラックボックスに時々刻々、記録されている様々なメトリクスを、リアルタイムで、世界中どこからでもブラウザを使ってモニタすることもできるのです。最後に、そのフライト・レコーダを設置するのは旅客機ではなく、貴方が運営されている Web サービスのプロダクション・システムだと考えていただきたい。

それが、Concurix を使ったオフライン解析、と言うと、言い得て妙です。詳細はnpmjs.org にある cx-helloworld-readme-ja というパッケージをご覧ください。

次回は、Flame Graph に関して書いてみたいと思っています。