クラウド時代にJava開発者に求められるもの  アプリケーションをクラウド・プラットフォームに最適化するには?

今、エンタープライズ領域において、IT基盤のクラウドへの移行が急速に進んでいる。クラウドはサーバ管理者の仕事を変えただけでなく、アプリケーション開発者の仕事も変えようとしている。クラウド・プラットフォームで走るアプリケーションを構築するうえで、注意すべきことは何か。Java Magazineのバックナンバーから、Java開発者に示唆を与えてくれる記事をご紹介しよう。

「クラウド:課題とチャンス」Vol.13(P23)

 最初に紹介するのは、Java Magazine 第13号に掲載された特集記事だ。これは、米国オラクル・コーポレーションの開発担当Vice President、Cameron Purdy氏へのインタビュー記事だ。Purdy氏は、インメモリ・データベース「Oracle Coherence」を開発したTangosol社(2007年にオラクルにより買収)の元CEOであり、Java Community Process(JCP)でJavaの仕様を策定するリードの一人でもある。

 以下、インタビューの冒頭部分を引用しよう。

Java Magazine:クラウド・コンピューティングについて、Java 開発者はどのような点を理解する必要がありますか。

Purdy:まず、アプリケーションを構築する場合は、動的にスケールアウトでき、複数サーバー間で動的にロードバランシングできるように構築する必要があります。すなわち、アプリケーションの稼働中にサーバーを追加しても、サービスが中断されないことを意味します。このようにアプリケーションを構築するための良いプログラミング習慣は、アプリケーションまたはアプリケーション・コンポーネントがスケーリングされる環境で稼働中であることを常に想定することです。つまり、これまでにあった多くの前提はもはや当てはまりません。たとえば、ファイル・システムがローカルにあろうと共有されていようと、開発者の足をすくいかねません。また、アプリケーションをスケールアウトすると、ヒープ内のグローバルJava オブジェクトは実際には"グローバル"ではなくなります。

同様に、開発者はリソースの追加によってアプリケーションの効果的なスケールアウトが本当に実現されるかどうかを理解する必要があります。言い換えると、サーバーを追加したときにアプリケーションが正しく稼働したからといって、実際により多くのトランザクションやユーザーをサポートしているとは限らないのです。つまり、できる限り線形に近いアプリケーション拡張能力を、スケールアウト・モデル内に明確に設計する必要があります。データ・キャッシングは、サーバー間で共有する必要のある情報量を最小化し、データベース・システムなどの共有リソースでの競合を最小化するため、この設計の大きな部分を占めることははっきりしています。

最後に、実際に追加リソースが必要になるのはいつなのか、リソースを除去しても問題ないのはいつなのか、というように、適応性というメトリックの観点からアプリケーションを理解する必要があります。つまり、何を監視すればよいかを把握することも含め、いつアプリケーションをスケールアウトする必要があるかを知る必要があるのです。

 このほか、インタビューでPurdy氏は、クラウド向けアプリケーションの構築でキーとなるJava EE 7の機能(Batch APIやCDIなど)や、「Oracle WebLogic Server」のクラウド対応機能(動的クラスタなど)についても解説をしている。

 なお、Java Magazine 第13号には、オラクルが提供するPaaS基盤「Oracle Java Cloud Service」の紹介記事も掲載されている(P29)。この記事には、Javaアプリケーション向けPaaS基盤を選定するうえで重要となる要件についても解説しているので、クラウド・プラットフォームへの移行を検討している方はぜひご一読いただきたい。

「JAVAのパフォーマンス・チューニング」Vol.12(P24)

 次にご紹介するのは、Java Magazine 第12号に掲載されたKirk Pepperdine氏へのインタビュー記事だ。Pepperdine氏はパフォーマンス関連のサービス、トレーニング、カスタム・ツールを提供するKodewerk社のプリンシパル・コンサルタントとして活動している人物で、Javaのパフォーマンス・チューニングにおける第一人者である。

 このインタビュー記事でPepperdine氏は、マルチコア・プロセッサなどのハードウェアの変化がパフォーマンス・チューニングに及ぼした影響や、Java EEアプリケーションにおいてパフォーマンス問題の原因となりやすい箇所について解説しており、クラウドによる変化も取り上げている。

 以下、クラウドについて言及している箇所の一部を引用しよう。

Java Magazine:クラウドによってパフォーマンス・チューニングはどのように変わりましたか。

Pepperdine 氏:クラウドによってパフォーマンスの概念は変わりました。クラウドではスケール・アウトできる限り、パフォーマンスは安定しているはずです。クラウドは、仮想化されたハードウェア・ディメンションでのスケール・アウト能力を提供します。現在のデータセンターにこの能力は備わっていないかもしれません。

また、この能力は、監視の重要性が大幅に高くなることを意味します。監視は、何が起きているかを知らせるだけでなく、クラウドで能力を拡張または縮小するタイミングを知らせる機能を担う必要があります。言い換えると、適応性を自動的に発揮させたい場合、パフォーマンス管理に関してこの自動化をサポートできるツールが必要になります。

つまり、人々がスケール・アップの必要なタイミングや能力を縮小できるタイミングを知るには、ツールがより高機能である必要があるのです。このため、状況は変わりました。クラウドが登場する以前は、何らかの障害が発生するとチームを派遣して問題を発見し、修正してからマシンを回復させる必要がありましたが、現在、私はもうその方法をとりません。もう1 つの仮想マシンを実行アプリケーションとともに起動し、基本的には、問題のあるノードをサイクルから外して、システムに追加したばかりの新しいノードで置き換えます。私たちが求めるのは、一貫して安定した高いパフォーマンスをエンド・ユーザーに届けることで、水面下でどれだけの大混乱が起きていてもユーザーがその混乱に気づかないようにすることです。

「#パフォーマンス」Vol.12(P14)

 最後にご紹介するのは、Java Mgazine第12号に掲載されたTwitterの事例記事だ。この記事では、2006年のサービス開始以来、長年パフォーマンス問題に悩まされてきたTwitterが、どのように問題に取り組み、解決してきたのかが語られている。結論から言うと、同社はクラウド・インフラ上でJVMを利用し、水平方向への拡張によって容易に負荷に対応できるシステムを構築するというソリューションに至ったという。Twitterでは、サーバー側のシステム開発にJVM言語のScalaを採用しており、Scalaで書かれたコードはJVM上で実行されている。単にJVMを利用するだけでなく、Twitterでは自社のクラウド・インフラ上でのJVMの振る舞いを調査し、OpenJDKプロジェクトにフィードバックしているという。

 以下、Twitterのソフトウェア・エンジニアリング担当シニア・ディレクター、Robert Benson氏が、JVMの優位性について語っている箇所を引用しよう。

Benson氏は、彼のチームがほかではめったになかった方法でJVM を推進していると考えています。「私たちに課せられた待機時間要件、ガベージ・コレクションの予測可能性、JVM 上で実行する言語の数など、Twitter は刺激的な職場になっています」とBenson 氏は言います。「JVM は、より良い新製品を構築するための柔軟性を与えてくれます」

Java およびScala の優れた開発者がTwitter のデータ・システムや分析システム、クライアント・インフラストラクチャ、その他多数のプロジェクトに取り組む際に行っているのは、Twitter のエンドユーザー・エクスペリエンスを充実させることだけではありません。これらの開発者は、Java プラットフォームの強化にも貢献しています。この領域は、ほとんどのサービス企業が知識またはその手段を持っておらず、業界でもっとも優秀なソフトウェア・エンジニアの中にTwitter に魅力を感じる人たちがいるのも当然です。

「JVM がTwitter にうってつけである理由は多数あります」とBenson 氏はこうまとめます。「JVM は、同時実行性、同じプロセスで複数の言語を実行できる能力、そして可観測性という利点をもたらします。より少ないデータセンター・リソースでより多くの処理を実行できるため、運用における費用対効果が向上しました。そしてもっとも重要なことは、信頼性の高いサービスを顧客に提供できるという点です。JVM が提供する、ニーズに合った多数のツールを通じて、私たちは世界が求める機能を実験し、反復し、素早く提供することができます」

関連資料

第16号[2014年5月発行]
Java 8 特集
~組み込みからクラウドまでJava 8で実現~
日本オラクルxZDNet Japan 特別企画
特集トップへ
インフォメーション
Java Magazineに関するお問い合わせ先
日本オラクル株式会社
Oracle Technology Network事務局
お問い合わせ方法はこちら
提供:日本オラクル株式会社
[PR]企画・制作 朝日インタラクティブ株式会社 営業部  掲載内容有効期限:2014年8月30日
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]