IT 業界では、開発者達が多くの革新的な概念を生み出してきました。一部の概念は、何年も使われた後に、そうした概念を記述する表現が作られました。場合によると、定義の結果としてパターンやプラクティスが少し変更されることもあります。クラウドという用語は、それに該当します。クラウドという用語は、これまで見られなかった方法や、それほど一般的に使われなかった方法で、インターネットを使ってアプリケーションやサービスをホストするプラクティスのことを意味します。
マシンの仮想化における最新のトレンドと組み合わせ、クラウドを使ってアプリケーションをホストすると、従来は実現できなかった、いくつかの注目すべき機能を実現することができます (例えば、個々の仮想サーバーとそのアプリケーション全体をクラウドでホストする、など)。
クラウドを使ってアプリケーションやサービスをホストすることによる 1 つのメリットは、IT インフラストラクチャーを稼働させるのに必要な人員やリソースを、よりコスト効率の高い場所やベンダーに任せられることです。インフラストラクチャーのインストール、構成、保守は専門のベンダーによって行われ、ベンダーはスケールメリットを活用して、より高い価値を提供することができます。
クラウドには、冗長性とディペンダビリティという別の強みもあります。インターネットは元々高度なフォルト・トレランスを実現するように設計されたものであるため、企業はクラウドを使用することで単一障害点をなくすことができます。これは、通常の状況下で 99.999 パーセントのアップタイムを実現するために必要な冗長サーバーやデータ・センター、その他のインフラストラクチャーを持つほどの余裕がない企業にとっては、特にメリットがあります。
ただし、アプリケーションをクラウドに移行することに問題がないわけではありません。第 1 の欠点は、移行前に比較すると制御できる範囲が少なくなることです。アプリケーションやサービスをクラウドに移行すると、何らかの理由で依頼先のベンダーにアクセスできなくなった場合、皆さんのビジネスもおそらくアクセス不能になる、というリスクを受け入れることになります。
第 2 の、ただしもっと明らかな欠点は、セキュリティーです。クラウドに保管されたデータは物理的に誰か他の人の機器の上に存在しており、従ってネットワーク上のその機器を介してサーバーとクライアントの間を移動します。セキュリティー違反のリスクを軽減する手段を講じることはできますが、それでもデータは何らかの危険にさらされます。そこで AMI (Amazon Machine Image) が登場します。
AMI は暗号化されたマシン・イメージであり、Amazon Simple Storage Service つまり Amazon S3 に保管されます (AMI については「参考文献」を参照)。このイメージは仮想マシン (VM) のスナップショットを「記録した」ものであり、デプロイしたり起動したりすることができます。このイメージは起動すると、まるで本物のサーバー上で実行されているかのようであり、その違いをリモートから判断することはできません。
AMI には 2 つのタイプがあり、1 つは既に作成され、Amazon のサービスの中に公開された AMI であり、もう 1 つはユーザー自身が作成する AMI です。この記事では、既存の AMI を利用して IBM WebSphere® のインスタンスをサンプル・アプリケーションと共に実行する方法に焦点を当てます。
AMI は、さまざまなベンダーから入手することができます (例えば Amazon、IBM、Oracle から、またコミュニティーから入手することができます)。AMI Web コンソール (「参考文献」を参照) またはコマンドライン・ツールを使用すると、AMI の一覧を表示することができます。AMI を利用することで、定義済みのイメージを仕様に応じて見つけることや、追加機能のインストールや構成、さらには他の人と AMI を共有したり、AMI を保存して後で使用したりすることなどができます。独自の AMI を作成する方法について、詳しくは「参考文献」を参照してください。
AMI を入手するためには、Amazon Web サービスにアカウントを作成する必要があります (アカウントの作成方法について、詳しくは「参考文献」を参照)。Amazon は有料の AMI に対して課金します。そのため、アカウントの料金と条件に十分注意してから手続きを進めてください。
AMI を選択するためには、まず AMI のオペレーティング・システムとして Windows® を使用するのか Linux® を使用するのかを決めます。この記事の例では Linux 用の AMI を使用し、ローカルのオペレーティング・システムとして Ubuntu Linux を使います。この理由は単純で、Ubuntu では AMI のコマンドライン・ツールが非常に使いやすく、apt を使ってインストール可能なパッケージが既に用意されているためです (ただし multiverse リポジトリーを有効にしておく必要があります)。
AMI のタイプを選択したら、Amazon Elastic Compute Cloud (Amazon EC2) のコマンドを使って AMI を操作します。これらのコマンドは、Amazon EC2 ツールをインストールすると利用できるようになります (「参考文献」を参照)。ローカル・ツールを使って AMI のインスタンスを起動する代わりに、AMI 管理コンソールにログインします。Web コンソールを使って AMI を管理することで、ユーザー自身がコマンドライン・ツールのダウンロードやインストールを行う必要がなくなりますが、スクリプト化や自動化を行う場合にはコマンドライン・ツールが便利です。
一部の AMI には、特定のオペレーティング・システムを実行する機能に加え、アプリケーション・サーバーやデータベース、その他の構成が用意されています。そうした機能はプリインストールされているため、時間をかけてインストールや構成をしなくても、テストすることや使用することができます。インストールや構成のプロセスは確かに有益ですが、ある環境で実際に使用できるようにあらかじめ構成された AMI を使用した方が時間を節約することができます。
それに該当するものが、最新バージョンの WebSphere が実行状態で含まれている AMI です。これらの AMI を使用することで、他の環境でアプリケーションをテストすることができます。
WebSphere を実行している AMI を、コマンドライン・ツールを使って見つけるためには、以下に示すように、それらのコマンドライン・ツールのインストールをテストする際に使用したコマンドと同じ e2-describe-images コマンドを使い、出力を grep にリダイレクトして websphere という記述を検索します。
ec2-describe-images -o self -o amazon | grep -i "websphere" |
AMI ID は ami-XXXXXXX のようなシーケンスです。この AMI ID は、その AMI のインスタンスの起動、そのインスタンスの状態のチェック、そしてそのインスタンスの終了のために必要です。では、AMI を使用した作業を行う前に、この AMI インスタンス上で実行する簡単なサンプル・アプリケーションを作成しましょう。
AMI の実際を理解するために、WebSphere にデプロイするための簡単な Web アプリケーションを作成します。このアプリケーションを作成した後、AMI にデプロイし、この Web アプリケーションのサンプル・ページを呼び出し、すべてが正常に動作するかどうかを確認します。そのために、以下の手順を実行します。
- 「File (ファイル)」 > 「New (新規)」 > 「Project (プロジェクト)」の順にクリックします。
- 「Web」 > 「Dynamic Web Project (動的 Web プロジェクト)」の順にクリックし (図 1)、表示される画面で「Next (次へ)」をクリックします。
図 1. 新しい動的 Web プロジェクトを追加する
- 「Project name (プロジェクト名)」にプロジェクトの名前を入力します (この例では「mySampleAMIWebApp」を入力します)。
- 「Target runtime (ターゲット・ランタイム)」のリストから「IBM WASCE v2.1」を選択し、「Next (次へ)」をクリックします。
「Target runtime (ターゲット・ランタイム)」のリストに WebSphere Application Server CE v2.1 が表示されない場合には、「New (新規)」をクリックして WebSphere Application Server CE v2.1 をインストールします (図 2)。「New Server Runtime Environment (新規サーバー・ランタイム環境)」ウィンドウの中で、利用可能なサーバーとして IBM WASCE v2.1 が表示されない場合には、「Download additional server adapters (追加サーバー・アダプターのダウンロード)」リンクをクリックします。
図 2. WebSphere Application Server CE 用の新しいサーバー・ランタイム環境を追加する
- 「Next (次へ)」をクリックして「Java Runtime Environment (JRE)」を選択します。
- 「Browse (ブラウズ)」をクリックし、WebSphere Application Server CE v2.1 用としてアプリケーション・サーバーをインストールするディレクトリーを見つけます (ここで Eclipse 用にインストールしているコンポーネントは既存のアプリケーション・サーバーと通信するためのコネクターにすぎず、アプリケーション・サーバーのファイルそのものではありません)。
- 「Finish (完了)」をクリックし、新しいサーバー・アダプターのインストールを完了します。
- 「Dynamic Web Project (動的 Web プロジェクト)」のステップに戻り、「Add project to an EAR (EAR にプロジェクトを追加)」チェックボックスにチェックを入れます。
この Enterprise Archive (EAR) プロジェクトを使用して EAR ファイルを作成し、その EAR ファイルを後で WebSphere Application Server の管理コンソールを使って AMI の WebSphere インスタンスにデプロイします。
- 「Finish (完了)」をクリックし、サンプル Web アプリケーション・プロジェクトのセットアップを完了します。
この時点で、ワークスペースに「mySampleAMIWebApp」と「mySampleAMIWebAppEAR」という 2 つの新しいプロジェクトがあるはずです。このアプリケーションの動作を見るためには、「Hello」と現在の時刻と日付を表示する単純な JavaServer Pages™ (JSP) ファイルを追加します。
「File (ファイル)」 > 「New (新規)」 > 「Other (その他)」の順にクリックしてから JSP をクリックし、mySampleAMIWebApp プロジェクトの WebContent フォルダーの中に新しいファイルを作成します。その JSP ファイルの中にリスト 1 の内容を追加します。
リスト 1. 単純な index.jsp ファイル
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@page import="java.text.DateFormat"%>
<%@page import="java.util.Date"%><html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Example Web App - mySampleAMIWebApp</title>
</head>
<body>
<%
Date now = new Date();
String currentDate = DateFormat.getInstance().format(now);
out.print("Hello, World (it is now ");
out.print(currentDate);
out.print(")");
%>
</body>
</html>
|
この内容を index.jsp ファイルに追加したら、ローカルにインストールされた WebSphere Application Server CE 上で、このファイルをテストします。そのためには Web プロジェクトのコンテキスト・メニューから「File (ファイル)」 > 「Run (実行)」 > 「Run on Server (サーバー上で実行)」の順にクリックします。すると Web ページが表示され、現在の日付が表示されているはずです。
EAR ファイルを作成するために、この EAR プロジェクトを選択し、「File (ファイル)」 > 「Export (エクスポート)」 > 「EAR File (EAR ファイル)」の順にクリックします。覚えやすい任意のエクスポート先を選択します。後で、この EAR ファイルを AMI インスタンスにアップロードします。
これでサンプル・アプリケーション用の EAR ファイルをエクスポートしたので、AMI 上で実行されている WebSphere のインスタンスに EAR ファイルをデプロイすることができます。
この時点で、サンプルの Web アプリケーションがローカルの開発マシン上で実行されているはずです。次のステップでは、AMI 上で実行されている WebSphere インスタンスに先ほどの EAR をデプロイします。
AMI のインスタンスが実行されているかどうか、以下のコマンドを使って確認します。
ec2-describe-instances |
もしインスタンスが実行されていない場合には、以下のコマンドを入力してインスタンスを起動します。インスタンスを起動する際に (インスタンスにキーを提供する) -k フラグを使用すると、インスタンスの起動後、SSH を使ってインスタンスと通信することができます。
ec2-run-instances ami-XXXXXXXX -k ec2-keypair |
このアプリケーションをデプロイするためには、WebSphere の Web 管理コンソールを使って AMI WebSphere インスタンスを操作します。リスト 2 のコマンドを使用して、WebSphere のコンソールのポートを有効にします。
リスト 2. AMI と通信できるようにポートを有効にする
ec2-authorize default -p 22 ec2-authorize default -p 9060 ec2-authorize default -p 9080 ec2-authorize default -p 24000 ec2-authorize default -p 24001 ec2-authorize default -p 24003 |
これらのポートを有効にする際には、1 度 SSH を使用して AMI に接続し、必要な使用許諾条件をすべて受け入れます (必ず使用許諾条件をしっかり読み、実際にその条件を受け入れます)。すると、新しい AMI は少し処理を行い、それから完全に利用可能になります。また、virtuser というユーザー用のパスワードを設定する必要があります。後ほど、このパスワードを使って WebSphere Application Server の管理コンソールにログインします。
WebSphere の Web コンソールに接続されて、以下のメッセージが表示されるまで待ちます。
Instance ready for use... $ ip-XXX-XXX-XXX-XXX: ~: |
この AMI の準備が整うと、この AMI の DNS 名をローカルの Web ブラウザーに入力することで、WebSphere の Web コンソールを表示することができます。この DNS名は ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com のようなものであり、AMI が稼働状態になると ec2-describe-instances コマンドの出力の中に表示されます。
WebSphere の Web 管理コンソールにログインします。そのためには、WebSphere の Web 管理コンソールの URL までナビゲートし、その時に表示されるリストから AppSvr01_Nodeo1 を選択します。ユーザー名として virtuser、パスワードとして先ほど指定したものを使います。
これで AMI が稼働状態になり、WebSphere の Web 管理コンソールを使ってEAR をデプロイしたので、アプリケーションが正常に AMI で実行されている様子を表示することができます。
結果を表示するためには、AMI の URL、WebSphere Application Server CE アプリケーションのデフォルトのポート (9080)、そしてアプリケーションの名前をブラウザーに入力します。完全な URL は http://ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com:9080/mySampleAMIWebApp/ のようなものになります。すると図 3 のような結果が表示されるはずです。
図 3. ブラウザーに表示されたサンプル・アプリケーション
結果の表示を確認したら、以下のコマンドを使って AMI のインスタンスを終了します。
ec2-terminate-instances i-XXXXXXXX |
注: Amazon は実行されているインスタンスに対して課金します。
AMI は驚くべき技術です。AMI を利用することで、さまざまな環境や設定の下でアプリケーションのテストや実行ができ、サーバー・ハードウェアやオペレーティング・システムのライセンスを購入する必要がありません。また、アプリケーション・サーバーやデータベースなどのミドルウェアを使った構成や管理も行うことができます。
Amazon は、コマンドラインまたは AMI Web 管理コンソールを使って AMI を発見、起動、管理するためのツールを提供しています。この記事ではコマンドライン・ツールを使うことで、クラウドの仮想サーバー上にある WebSphere Application Server CE のインスタンスを起動し、オペレーティング・システムとして Linux を実行する方法について学びました。そしてそのインスタンスにサンプル・アプリケーションをデプロイし、単純な Web アプリケーションをクラウドの中で実行しました。
学ぶために
- Amazon のサイトで AMI について学んでください。
- カスタムの AMI を送信する方法を学んでください。
- AWS コンソールにサイン・インしてください。
- この初心者用ガイドを利用して、Ubuntu でコマンドライン・ツールを使う方法を学んでください。
- AWS を使ってアカウントを作成してください。
- developerWorks の Web development ゾーンは Web ベースのさまざまなソリューションの解説に特化しています。
- developerWorks の Cloud computing ゾーンには、クラウド・コンピューティングの概念、技術、ベスト・プラクティスを説明するリソースが豊富に用意されており、また独自のクラウド・システムやクラウド・ベースのアプリケーションを実装するための、専門家による支援が提供されています。
- IBM Technical events and webcasts で最新情報を入手してください。
- developerWorks On demand demos をご覧ください。初心者のための製品インストール方法やセットアップのデモから、上級開発者のための高度な機能に至るまで、多様な話題が解説されています。
製品や技術を入手するために
- Amazon EC2 の AMI ツールをダウンロードしてインストールしてください。
- IBM 製品の評価版をダウンロードするか、あるいは IBM SOA Sandbox のオンライン試用版で、DB2®、Lotus®、Rational®、Tivoli®、WebSphere® などが提供するアプリケーション開発ツールやミドルウェア製品を試してみてください。
議論するために
- 今すぐ My developerWorks のプロフィールを作成し、クラウド・コンピューティングに関するウォッチ・リストを設定してください。また My developerWorks に接続し、そして My developerWorks への接続を維持してください。
- Web 開発とクラウド・コンピューティングに関心を持つ他の developerWorks メンバーを見つけてください。
- Web 開発者の方は、その経験や知識を Web 開発グループやクラウド・コンピューティング・グループの他の人達と共有してください。
- Web に焦点を絞った developerWorks のグループの 1 つに参加し、皆さんの知識を共有させてください。
- Roland Barcia が彼のブログの中で Web 2.0 とミドルウェアについて語っています。
- developerWorks のメンバーが Web のトピックに関して共有するブックマークを調べてみてください。
- 即座に答えを得るために、Web 2.0 Apps フォーラムを訪れてください。

Nathan A. Good はミネソタ州の Twin Cities エリアに住んでいます。彼はプロとしてソフトウェア開発やソフトウェア・アーキテクチャー、システム管理などを行っています。彼はソフトウェアを書いている時以外は、PC やサーバーを構築したり、新しい技術について資料を読んだり、そうした技術に取り組んだり、彼の友人達をオープソース・ソフトウェアに移行させようとしたりしています。彼は数多くの本や記事を執筆、あるいは共同で執筆しており、その中には『Professional Red Hat Enterprise Linux 3』や『Regular Expression Recipes: A Problem-Solution Approach』、『Foundations of PEAR: Rapid PHP Development』などがあります。