この章では、Java ES ソリューションのライフサイクルの各フェーズに関する概念と用語について説明します。この章では、配備作業、特に配備設計作業と配備実装作業に重点を置いています。
この章では、ライフサイクルの各フェーズで行う作業について説明します。この章は、次の節で構成されます。
ソリューションのライフサイクルについては、Java ES ソフトウェアを使ってビジネスソリューションを実装するための標準的な方法として、第 1 章「Java Enterprise System の概要」で紹介しました。簡単に参照できるようにライフサイクルの図を再度示してあります。
ライフサイクルの配備前 (predeployment)フェーズでは、ビジネスに関するニーズの分析に基づいて配備シナリオ (deployment scenario)を作成します。配備シナリオは、配備を設計するための仕様としての役割を果たします。
配備前の作業は、図 4–1 に示すように 3 つのフェーズに分けられます。
ビジネス分析: 提示する配備作業のビジネス上の目的を定義し、その目的を達成するために満たす必要があるビジネス上の要件および制約を記述します。
技術要件: ビジネス分析の結果に基づいてユースケースを作成します。ユースケースは、作成予定のソフトウェアシステムとユーザーとの対話をモデル化したものです。これらのユースケースに予測される使用パターンも決定します。ビジネス分析と使用分析の両方に基づいて、提案する配備が満たす必要のあるサービス品質要件 (表 2–2 を参照) を定式化します。
論理設計: 技術要件のフェーズで開発したユースケースを分析して、エンドユーザーにサービスを提供するために必要な Java ES インフラストラクチャーコンポーネントおよびカスタム開発されたアプリケーションコンポーネントを特定します。第 2 章「Java ES ソリューションアーキテクチャー」で説明した概念に基づいて、論理アーキテクチャーを設計します。論理アーキテクチャーは、特定のソフトウェアソリューションのユースケースを実現するために必要なすべてのコンポーネント、およびコンポーネント間のすべての対話を示します。
次の図に示すように、論理アーキテクチャーは、パフォーマンス、可用性、セキュリティー、およびその他のサービス品質要件と組み合わされて、配備シナリオにカプセル化されます。ライフサイクルの配備前のフェーズの詳細については、『Sun Java Enterprise System Deployment Planning Guide 』を参照してください。
ライフサイクルの配備のフェーズでは、配備シナリオに基づいて配備設計を作成し、その設計の実装、テスト、および本稼働環境への展開を行います。
通常、配備プロセスには、1 つのソフトウェアソリューションをサポートするために必要な、すべての層およびすべてのインフラストラクチャーサービスレベルのソフトウェアコンポーネントが関連します。通常、カスタム開発されたアプリケーションコンポーネント (J2EE コンポーネント、Web サービス、またはその他のサーバー) と、ソリューションをサポートするために必要な Java ES コンポーネントの両方を配備する必要があります。
配備の作業は、図 4–1 に示すように 2 つのフェーズに分けられます。
「配備設計」: 配備設計は、ソリューションの論理アーキテクチャーと、ソリューションが満たす必要があるパフォーマンス、可用性、セキュリティー、スケーラビリティー、保守容易性、およびその他のサービス品質の要件の両方に依存しています。配備アーキテクチャーにおけるサービス品質の次元は、配備設計フェーズで重要な役割を果たします。
「配備の実装」: 配備設計の実装は、ハードウェアのセットアップ、ソフトウェアのインストールおよび設定、開発と統合、テスト、および本稼動への展開のその他の作業を含む反復プロセスです。
この後の節で、これらの配備プロセスの 2 つのフェーズについてさらに詳しく説明します。
配備設計フェーズでは、上位レベルの配備アーキテクチャーを作成したあと、下位レベルの実装仕様を作成します。
配備アーキテクチャーは、配備シナリオに指定されたサービス品質の要件を満たす方法で、論理アーキテクチャー、つまりアプリケーションの論理的な構築ブロックを物理的なコンピューティング環境にマッピングすることによって作成されます。次の図に示すように、配備シナリオに基づいて配備アーキテクチャーが作成されます。
このアーキテクチャー設計の特徴の 1 つとして、パフォーマンス、可用性、セキュリティー、およびその他のサービス品質の要件を満たすように、物理環境がサイジング (コンピュータの台数を決定し、コンピュータのプロセッサの処理能力および RAM の要件を見積もる) されます。サイジングが完了した後、物理環境内にあるさまざまなコンピュータに Java ES コンポーネントとアプリケーションコンポーネントを割り当てます。配備アーキテクチャーの作成時には、さまざまなコンピュータの能力、システムのインフラストラクチャーサービスの特徴、および総所有コストや総利用コストに対する制限を考慮に入れる必要があります。
配備シナリオに含まれる Java ES コンポーネントの数やサービス品質の要件で要求される事項が多ければ多いほど、設計上、より高機能なコンピュータやより広いネットワーク帯域幅が要求されます。ハードウェアが高価でその使用が制限される場合は、固定コスト (ハードウェア) と変動コスト (人的リソースの要件) のバランスやサービス品質の各要件のバランスを再検討したり、設計を見直して効率性を高める必要があります。
配備アーキテクチャーの設計では、試行錯誤の繰り返しが必要な場合もあります。ただし、Java Enterprise System は配備設計の出発点として、一連のリファレンス配備アーキテクチャーを開発します。
参照アーキテクチャーは、特定の配備シナリオ、つまり特定のサービス品質の要件が指定された論理アーキテクチャーに基づいています。参照アーキテクチャーでは、ソフトウェアソリューションは、指定されたサービス品質の要件を満たす方法で、特定の物理環境に配備されます。指定された負荷でのパフォーマンステストは、配備シナリオの開発に使用されたものと同じユースケースのセットに基づいています。参照アーキテクチャーのドキュメントは、非開示の条件付きで Java ES の顧客に提供されます。
リファレンス配備アーキテクチャーまたは複数の参照アーキテクチャーの組み合わせに基づいて、ユーザー独自の配備シナリオの要件を満たす配備アーキテクチャーに関する最初の概要を設計できます。ユーザー独自の配備シナリオと参照アーキテクチャーの元になっている配備シナリオの違いを考慮したうえで、参照アーキテクチャーを調整したり、参照アーキテクチャーを参照点として使用したりできます。このようにして、ユーザー独自のサイジングの影響、パフォーマンス、セキュリティー、可用性、容量、および保守容易性のニーズを評価できます。
実装仕様によって、配備アーキテクチャーの実装に必要な詳細情報が提供されます。この仕様には、通常、次の情報が含まれます。
コンピュータ、ストレージデバイス、ロードバランサ、ネットワークケーブルなどの実際のハードウェア
オペレーティングシステム
サブネットおよびセキュリティーゾーンを含む、ネットワーク設計
可用性の設計の詳細
セキュリティー設計の詳細
実装計画は、配備実装フェーズのさまざまな作業をどのように実行するかを示します。この計画には、通常、次の作業が含まれます。
ハードウェアの設定
ソフトウェアのインストール、アップグレード、および移行
システムの設定とカスタマイズ
開発および統合
テスト
製品の発表
配備設計の実装は、前の節と図 4–1 で示した作業から構成されます。実際の配備プロセスでは作業の反復が発生するので、これらの各作業の順序は固定的なものではありません。以下の各項では、主要な各配備実装作業について、これらが通常実行される順序に従って個別に説明します。
実装仕様には、物理環境に関するすべての詳細情報が含まれています。たとえば、コンピュータ、ネットワーク設計、ネットワークハードウェア (ケーブル、スイッチ、ルータ、ロードバランサなど)、ストレージデバイスなどです。これらのハードウェアはすべて、Java ES ソリューションをサポートするプラットフォームとして設定する必要があります。
配備アーキテクチャー、および実装仕様が提供する詳細情報によって、物理環境の各コンピュータに配備するアプリケーションコンポーネントおよび Java ES コンポーネントが明らかになります。Java ES の統合インストーラを使って配備アーキテクチャー内の各コンピュータに適切な Java ES コンポーネントをインストールします (「Java ES 統合インストーラ」を参照)。
インストール計画は、インストーラセッションの順序および範囲を示します。ただし、インストールの実行方法は、初めて Java ES のインストールを実行するのか、以前インストールした Java ES コンポーネントをアップグレードするのか、またはサードパーティのコンポーネントを Java ES と交換するのかどうかによって異なる場合があります。これらの Java ES 導入シナリオの最後の 2 つは、多くの場合、互換性のためにデータやアプリケーションコードの移行を必要とします。
さまざまなシステムコンポーネントを統合されたシステムとして連携させるには、いくつかのシステム設定作業を完了させる必要があります。これらの作業の中で最初に完了する必要がある作業は、個々のシステムコンポーネントを起動させるために必要な初期設定です。次に、各 Java ES コンポーネントが対話するコンポーネントと通信できるように設定する必要があります。
各コンポーネントの可用性ソリューションに応じて、高可用性も設定する必要があります。ユーザーが各種サービスにアクセスできるようにユーザーのプロビジョニングを行う必要があります。また、認証と承認のポリシーおよび制御を設定する必要もあります (「統合されたアイデンティティーサービスとセキュリティーサービス」を参照)。
ほとんどの場合、設定作業には、要件どおりの機能セットを実現するために、ある程度の Java ES コンポーネントのカスタマイズが必要です。たとえば、通常は、ポータルチャネルを提供するために Portal Server を、承認タスクを実行するために Access Manager をカスタマイズします。
一般に、配備シナリオに指定された論理アーキテクチャーによって、ソリューションの実装に必要なカスタム開発 (development)作業の範囲が決まります。
配備によっては、Application Server または Web Server 環境で実行される J2EE コンポーネントを使用して新しいビジネスサービスおよびプレゼンテーションサービスを最初から開発する必要があるので、開発は非常に大規模な作業になります。このような場合には、ソリューションのプロトタイプを作成して、開発成果の全体を実装する前に概念実証テストを実行します。
大規模な開発を必要とするソリューション用に、Sun JavaTM Studio ソフトウェアでは分散型コンポーネントまたはビジネスサービスをプログラミングするツールを提供しています。Sun Java Studio 開発ツールは、Java ES インフラストラクチャーによりサポートされるアプリケーションのプログラミングとテストを簡素化します。
状況によっては、Java ES コンポーネントを旧バージョンのアプリケーションやサードパーティーのサービスと統合できます。このような統合には、データ層の既存のディレクトリまたはデータサービス、あるいはビジネスサービス層の既存のコンポーネントが含まれることがあります。Java ES コンポーネントをこれらのシステムと統合するには、データまたはアプリケーションコードの移行が必要になる場合があります。
J2EE プラットフォームでは、J2EE リソースアダプタを開発することによって既存のアプリケーションを Application Server 環境にプラグインするコネクタフレームワークを提供し、Message Queue では、さまざまなアプリケーションを統合するための強力な非同期メッセージング機能を提供します。
必要なカスタマイズ作業または開発作業の量によっては、ある時点で配備アーキテクチャーを検証し、ユースケースと比較して、ソリューションがサービス品質要件を満たしているかどうかをテストする必要があります。
カスタム開発サービスが比較的少ない (ほとんど追加設定の必要がない配備) 場合は、ソリューションで単に Java ES コンポーネントのカスタマイズとシステムのパイロットテストのみが必要になることがあります。
一方、重要な新規のアプリケーションロジックを開発してカスタムサービスを作成した場合、このテストはプロトタイプのテスト、統合テストなどを実施する大規模なものになる可能性があります。
このテストによって配備アーキテクチャーの欠点が判明した場合は、アーキテクチャーを修正してテストを再び実行します。最終的に、この反復プロセスによって、本稼動環境への配備が可能な配備アーキテクチャーおよび実装が完成します。
本稼動への展開では、本稼動環境に配備実装を組み入れます。このフェーズでは、本稼動環境での分散型アプリケーションおよびインフラストラクチャーサービスのインストール、設定、起動、本稼動システムのエンドユーザーのプロビジョニング、シングルサインオンおよびアクセスポリシーの設定などを行います。通常、まず限定的な配備を行い、その後に組織全体の実装に移行します。このプロセスでは試験稼動を実行し、適用する負荷を徐々に増やして、サービス品質の要件を満たしていることを確認します。
ライフサイクルの配備後 (postdeployment)の段階では、本稼働環境に配備されたソリューションを実行します。ライフサイクルのオペレーションフェーズでは、次の作業を行います。
監視: システムのパフォーマンスおよびシステムの機能を定期的に監視します。
保守: 新規エンドユーザーのシステムへの追加、パスワードの変更、新規管理ユーザーの追加、アクセス権限の変更、定期的なバックアップの実行などの日常的な管理機能を実行します。
パフォーマンスの調整: システムの運用上のボトルネックを見つけるために定期的に情報を監視し、設定のプロパティーの変更、容量の追加などによりボトルネックの除去を試みます。
システムの強化とアップグレード: システムに新しい Java ES コンポーネントを追加することで新しい機能を追加したり Java ES 以外のコンポーネントを置き換えたりする作業が含まれます。どちらの場合も、これらの変更によりソリューションのライフサイクルの最初のフェーズから、システムの再設計が必要になる場合があります。アップグレード作業は限定的で、通常は Java ES コンポーネントのアップグレードを実行します。
この節では、この章で使用されている重要な技術用語について説明します。ここでは、Java ES の文脈でどのように使用されているかの説明に重点を置いています。
Java ES ソリューションのライフサイクルの段階の 1 つ。この段階では、配備シナリオに基づいて、配備設計の作成、実装、プロトタイプ作成、本稼働環境への展開が行われます。このプロセスの最終結果は配備または配備ソリューションとも呼ばれます。
特定の Java ES ソリューションに対する論理アーキテクチャー (logical architecture)と、そのソリューションがビジネスニーズを満たすために必要なサービス品質の要件。サービス品質要件には、パフォーマンス、可用性、セキュリティー、保守容易性、スケーラビリティーまたは潜在容量などに関する要件があります。配備シナリオは、配備設計の開始点です。
Java ES ソリューションの配備プロセスに含まれる作業の 1 つ。この作業によって、配備アーキテクチャー (deployment architecture)のカスタムコンポーネントがプログラミングおよびテストされます。
Java ES ソリューションのライフサイクルプロセスの段階の 1 つ。この段階では、ビジネスニーズに基づいて配備シナリオ (deployment scenario)が作成されます。このシナリオには、論理アーキテクチャー (logical architecture)およびソリューションが満たす必要のある一連のサービス品質の要件が含まれます。
Java ES ソリューションのライフサイクルプロセスの段階の 1 つ。この段階では、分散型アプリケーションの起動、監視、調整によるパフォーマンスの最適化、および動的アップグレードによる新機能の追加が行われます。
パフォーマンス確認用に設計、実装、およびテストされた配備アーキテクチャー (deployment architecture)。リファレンス配備アーキテクチャーは、カスタムソリューションの配備アーキテクチャーを設計する場合の開始点として使用されます。
分散エンタープライズアプリケーション (distributed enterprise application)によって実行される、1 つまたは一連のエンドユーザータスク。アプリケーションの設計、テスト、およびパフォーマンスの測定を行うための基礎情報として使用されます。