GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Werner Schuster , 翻訳者 徳武 聡 投稿日 2009年10月21日
NewRelic RPMはとても人気のあるRuby on Rails向けのパフォーマンス監視ソリューションだ。最新のリリースであるRPM 2は、Javaアプリケーションの監視もできるようになった。
InfoQは同社のLew Cirne氏にこの新しいリリースについて話を聞いた。
InfoQ: NewRelic RPMのJavaのサポート機能はどのように動作しているのでしょうか。
新しいRelic RPMは異なるソースから情報を収集できます。RPMはアプリケーションの稼働監視と同様、詳細な分析を目的として設計されています。なので、収集した情報が適切であること、そして情報を収集して監視することによって、監視対象のアプリケーションに余計な負荷がかからないこと。このふたつが鍵になります。
例えばJMXが提供してくれるメトリクスは決して悪くはありませんが、パフォーマンスの根本的な要因を適切に診断するには非力すぎます。我々のRPMは正式なAPIを使って得られたデータをバイトコードを実行して集めたデータで補完することで、素早い問題修正に役立つ診断結果を提供します。例えば、RPMはデータベースへの遅いクエリに対処するため、自動的にSQLの実行計画を収集します。これはチームの監視と診断作業にとって、大変価値のある機能です。パフォーマンス問題の多くはデータベースに問題があるのですから。
InfoQ: 実際にbytecode instrumentationを利用してみた感想をお聞かせください。バイトコードの設定を行う他のライブラリとの間で何か問題はありませんでしたか。
RPMでは正式なAPIを使って情報の収集をし、さらにアプリケーションサーバの特定のメソッドに対してバイトコードを設定しています。RPMはロード時にクラスを設定していますが、AOPライブラリのようなバイトコードを変更するライブラリと共存しても何の問題も発生しませんでした。
InfoQ: RPMはどのようなプラットフォームをサポートしていますか。
様々なフレームワークをサポートします。Spring、Grails、そしてJEEもサポート対象です。また、RPMは標準的なJEEのコンポーネントもサポートしています。すなわちServlet、EJB、JDBC、Hibernate、Web Service invocations、POJO、JSPなどです。さらにSpringのスタック上に配置されたアプリケーションの監視もできます。
加えて、RPMはWebSphere、WebLogic、JBoss、Tomcat、Jetty そして Glassfish上に配置されたWebアプリケーションも監視できます。
InfoQ: サードパーティがRPMを拡張して、他のフレームワークにRPMを適用できるようにする方法はあるのでしょうか。
RPMはサードパーティ製のツールやメトリクスと簡単に統合できるように設計されています。RPMのAPIを使えば、他のソースからのデータを統合することもできるでしょう。また、RESTのAPIもあるので、顧客やサードパーティベンダは自分たちのソリューションにRPMの計測結果を統合できます。 Rightscale社のような会社がこのAPIを利用しています。
InfoQ: NewRelicはMRIに加えて、JRubyで作られたアプリケーションの監視もサポートし始めました。JRubyをサポートするにはどんなことが必要でしたか。
JRubyのサポートはそれほど複雑ではありませんでした。RubyとJRubyのメソッドには微妙な差異がありますが、これらのメソッドを使ってRPMは情報収集をしています。一度この差異を特定してうまく扱えるようにしてしまえば、特別なことはしなくともRPMが使えるようになりました。おかげでRPMのアーキテクチャも柔軟性を保てました。
InfoQ: JRubyのサポートとJavaのサポートは関連がありますか。
RPMが他のパフォーマンス管理ツールと比べてユニークなのは、ひとつのUIだけでRuby/JRuby、そしてJavaの監視ができるということです。Ruby/JRubyをひとつのエージェントが管理し、Javaはもうひとつのエージェントが管理しています。RubyのエージェントもJavaのエージェントもほとんど同じように動作し、同じコンソール上に診断結果を表示します。
JRubyでRailsアプリケーションを実行している顧客に対しては、Rubyのエージェントを使うように勧めています。完全な互換性がありますし、より適切な診断結果を得ることができるからです。
InfoQ: NewRelicはRuby 1.9もサポートしています。あなたの顧客の間に、Ruby 1.9は浸透していますか。
SaaS形態でサービスを提供するメリットのひとつは、文字通り何千もの稼働中のアプリケーションを見れることです。なので、我々の顧客がどのようなプラットフォームでどんなバージョンのランタイムを適用しているか、という重要な情報を手に入れることができます。我々はこのような情報に含まれる重要な点について、定期的にRailsLabというサイトの“スタックの状態”という記事で共有しています(http://railslab.newrelic.com/2009/06/11/the-state-of-the-stack-a-ruby-on-rails-benchmarking-report-10-june-2009)。
この情報から考察すると、我々の顧客でRuby 1.9を利用しているのは相対的に少ない、と思います。しかし、我々は先手を打っていきます。顧客がプラットフォームやランタイムの大規模な更新を行うとき(Rubyや、JRuby、Java、Rails、Spring、Grailsなどが新しくリリースされたとき)、市場ではその新しい環境がまだ一般的でなくても、我々は可能な限りその新しい環境をサポートしていくつもりです。
NewRelic RPMにはいくつかの価格分類がある。RPM Liteなら無料で始められる。また、EngineYardとRightScaleの顧客には特典がある。
詳細はNewRelic RPMの特徴を参照されたい。Javaのパフォーマンス監視のために、今あなたは何を使っているだろうか。
【豆蔵】「オブジェクト指向を現場で活かすリファクタリング入門」新規講座キャンペーン中
世界の先進エンジニアが集結 - QCon TOKYO 2012 早期割引実施中!
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式
本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。
前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。
Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。
スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。
No comments
スレッド表示 返信