BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Java の Microsoft Azure クラウドへの小さな一歩

Java の Microsoft Azure クラウドへの小さな一歩

原文(投稿日:2010/09/20)へのリンク

Microsoft のアーキテクトである David Chou 氏が今月,Microsoft Azure クラウド サービスへの Java アプリケーションのデプロイに関する講演をJavaOne で行う。一般的に Azure は,Microsoft の .Net アプリケーション用の技術プラットフォームとして理解されている。Azure 上の Java で何ができて何ができないのかを理解するため,InfoQ では Chou 氏に話を聞いた。

最初に Chou 氏は開発者に対して,Azure を "コード配置の可能な Windows Server ベース環境のひとつ" と考えるように求めた。"モデルとしては,巨大な zip ファイルのようなものです。USB メモリドライブに取り出して,そこから起動できるようなアプリケーションであれば,Azure でも実行できるようにするつもりです。" 理論的には JRE 全体をアプリケーションにバンドルして,起動用の簡単な C# アプリケーションを加えさえすれば,Azure 上であっても Java アプリケーションの実行は可能なはずだ。

しかし実際には,一般的な Java アプリケーションを実行するために,越えなければならないハードルがいくつかある。Chou 氏によれば Java の NIO に依存するアプリケーションや,JBoss クラスタのように内部ネットワーク通信を使用するものなどは Azure のネットワークサンドボックスに対応できない,ということだ。

これらの制限を説明するために,Chou 氏は 自身が Azure 上で Jetty ベースのアプリケーションを実行した時の手順について解説してくれた。

  1. Visual Studio を使用して Azure アプリケーションのスケルトンを作成する。
  2. Jetty の NIO ChannelConnector をブロッキング IO ChannelConnector に置き換える。
  3. 内部-外部接続ポートの検索ロジックを C# の WorkerRole で記述した後,適切なポート引数を指定して Jetty を起動する。
  4. Java アプリケーションパッケージに Jetty アプリケーションコンテナのファイルと JRE をバンドルする。
  5. ファイルシステムへの書き込みを行う Jetty コンフィギュレーションの設定内容をコメントアウトしておく (これは半ばオプションだが,C# コードを必要とする制限を回避するためだ)。

Azure 上の Java 開発の特徴について,Chou 氏は次のように説明している。

これは長い旅への第一歩です。ちょうど私が Java で仕事を始めた,まだ IDE が存在しなかった時代に戻ったような感覚です。当時はクライアントアプリケーションを開発するために,AWT を使ったアプリケーションを TextPad や Notepad で記述していました。現在のステージはその頃に相当します - ひととおりの Java アプリケーションがデプロイできるようにはなりましたが,改善の余地はたくさん残っているのです。

第4四半期の次期 1.3 SDK リリースでは,ネットワークサンドボックスの制限を緩和して難易度をいくらか低減するとともに,C# スクリプトによる解凍処理やブートストラップに代わるプロセス起動のための管理的フックをより多く提供する,と Chou 氏は開発者に約束した。

どのような顧客が Azure 上で Java 開発を行うのか,という質問に対して,氏は Domino Pizza とのプロジェクト を紹介してくれた。これはDomino の Tomcat ベースのアプリケーションを,Microsoft が支援して Azure に移植したもので,Azure コンピュータリソースへのマイグレーション作業に加えて,Microsoft クラウドストレージを使用するようにアプリケーションを変更している。開発の動機は夕食時の 50% に及ぶトラフィック急増,中でも金曜日とスーパーボール・サンデー (アメリカンフットボールのチャンピオンシップ) への対応にある。パイロットプロジェクトから実開発への展開に関する質問に対して氏は,プロジェクトはまだコンセプト証明の段階である,と答えている。

結論として,Java プログラマが Visual Studio を所有していて,J2EE スタックに依存するネットワーク機能の利用が比較的少ない Web アプリケーションを扱っているのであれば,Azure クラウドへのデプロイは試してみる価値があるだろう。そうでなければ,今年末の 1.3 SDK まで待った方がよい。さらに詳しく知りたいのならば,火曜日朝8時に JavaOne で行われる Chou 氏の講演を聞くことができる。

この記事に星をつける

おすすめ度
スタイル

BT