Webアプリケーション設計 概要 1 ISE Webアプリケーション基盤 Webアドバンスド・ソリューション グループ
by user
Comments
Transcript
Webアプリケーション設計 概要 1 ISE Webアプリケーション基盤 Webアドバンスド・ソリューション グループ
Webアプリケーション設計 概要 ISE Webアプリケーション基盤 Webアドバンスド・ソリューション グループ 水野 雅裕([email protected]) 1 01. Webアプリケーション設計概要 Webアプリケーション設計概要 Disclaimer この資料は日本アイ・ビー・エム株式会社ならびに 日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレビューを受けておりませ ん。 当資料は、資料内で説明されている製品の仕様を保証するものではありません。 資料の内容には正確を期するよう注意しておりますが、この資料の内容は2010年9月現在の情 報であり、製品の新しいリリース、PTFなどによって動作、仕様が変わる可能性があるのでご注意 下さい。 今後国内で提供されるリリース情報は、対応する発表レターなどでご確認ください。 2 WAS V7 アプリケーション・デザインWorkshop Part2 2 01. Webアプリケーション設計概要 Webアプリケーション設計概要 Agenda 1. ワークショップ概要 2. Webアプリケーション設計の全体像 3. Webアプリケーションの概要設計 4. アーキテクチャー・デシジョンのポイント - 提案フェーズ 5. アーキテクチャー・デシジョンのポイント - SOフェーズ 3 WAS V7 アプリケーション・デザインWorkshop Part2 3 01. Webアプリケーション設計概要 Webアプリケーション設計概要 1.ワークショップ概要 4 WAS V7 アプリケーション・デザインWorkshop Part2 4 01. Webアプリケーション設計概要 Webアプリケーション設計概要 ワークショップ概要 ワークショップの目的 – WASを使用したWebアプリケーション設計のポイントを説明する • 特に、製品選定や設計上のデシジョン・ポイントの、時期や判断基準を提示す る • 今回のワークショップでは、Feature Pack、先進技術、WASファミリー製品、 開発作業関連ツールについて取り上げる – フロントエンド設計 – サービス設計 – データ・アクセス設計 – イベント&Javaバッチ設計 – アプリケーション開発管理 概要セッションの目的 – Webアプリケーション設計の概要を説明し、ソリューション・アウトライン フェーズ終了までに実施すべきアーキテクチャー・デシジョンのポイントを 概説する 5 WAS V7 アプリケーション・デザインWorkshop Part2 このワークショップの目的です。 WASを使用したWebアプリケーション設計のポイントを説明します。特に、製品選定や設計上のデ シジョン・ポイントの時期や判断基準について解説します。 概要セッションでは、Webアプリケーション設計の概要、アーキテクチャー・デシジョンのポイントにつ いて概説します。 5 01. Webアプリケーション設計概要 Webアプリケーション設計概要 Webアプリケーション設計時の課題 課題 既に決定している事 項が制約となり最適 なソリューションが選 択できない 全体設計が曖昧 先進テクノロジーを採 用したいが、いつ何を 検討すれば良いか分 からない 設計作業の後半 になってから検討 コスト増大 スケジュール遅延 トラブル発生 – ☆プロジェクトの早い段階から検討を開始すべき項目がある。 – このセッションでは、 • 提案フェーズ : 以降のフェーズで大きな影響を及ぼすデシジョン・ポイントを 解説 • ソリューション・アウトラインフェーズ : 注意すべきデシジョン・ポイントを概説 6 WAS V7 アプリケーション・デザインWorkshop Part2 Webアプリケーション設計時には、全体設計が曖昧だったり、先進テクノロジーを採用したいがいつ 何を検討すれば良いか分からないと言った事があります。これにより、検討が後のフェーズになって しまったり、検討漏れが発生したりします。その結果、既に決定している事項が制約事項となり最適 なソリューションが選択できなくなる事があります。仕方なく回避策をとることにより、コストが増大した り、作業が遅延したり、トラブルを誘発したりというマイナスな状況を発生させる事があります。 この課題を解決するには、プロジェクトの早い段階から検討を実施する必要があります。このセッショ ンでは、WASを使用したWebアプリケーション設計の際に実施すべきデシジョン・ポイントを示しま す。 6 01. Webアプリケーション設計概要 Webアプリケーション設計概要 2.Webアプリケーション設計の全体像 7 WAS V7 アプリケーション・デザインWorkshop Part2 7 01. Webアプリケーション設計概要 Webアプリケーション設計概要 Webアプリケーション開発ライフサイクル このセッションの対象 このワークショップの対象 提案 提案 zヒアリング zソリューション決定 z製品選定 zシステム概要設計 zサイジング zシステム構成決定 リリース (要件定義) (外部設計) (内部設計) ソリューション・ ソリューション・ アウトライン アウトライン (SO) (SO) マクロ設計 マクロ設計 マイクロ マイクロ 設計 設計 zお客様環境の調査と分析 zソリューション要件のアウトライン作成 zアプリケーション・モデルのアウトライン作成 zアーキテクチャー・モデルのアウトライン作成 zビジネスへの影響評価 zソリューション戦略のアウトライン作成 8 z要件およびアプリケーション・モデルの洗練 zユーザー・インターフェースの設計 zアーキテクチャー・モデルの設計 z静的テストの実施(マクロ設計) zソリューション計画の設計 zテスト仕様の設計 z開発環境の構築 構築 構築 サイクル サイクル z要件およびアプリケーション・モデルの詳細化 zアーキテクチャー・モデルの洗練 z静的テストの実施(マイクロ設計) zユーザー・インターフェースの詳細化 z物理アプリケーション・モデルの定義 z研修およびユーザー・サポートの定義 z開発計画の作成 zサポート資料の作成 zテスト実施の準備 zプログラミング・サイクルの実施 z開発テストの実施 zシステム・テストの実施 z展開計画の作成 展開 展開 z受入れテストの実施 z本番環境のセットアップ zお客様側サポート体制の展開 z本番システムのサービスイン zソリューション計画のレビュー WAS V7 アプリケーション・デザインWorkshop Part2 このワークショップでは、Webアプリケーション開発のライフサイクルは以下の様なフェーズで構成さ れるものとします。ライフサイクルのフェーズ分けには他にも様々な方式がありますが、その場合は 適宜置き換えてください。 1.提案フェーズ お客様にシステムを提案するためのフェーズです。ここでは、提案書を作成するためにシステムの 概要を設計します。このフェーズは厳密には構築サイクルに入りませんが、Webアプリケーションを 開発する際には製品選定など重要な作業を行うので今回のワークショップでは対象フェーズの1つ として取り上げています。 2.ソリューション・アウトラインフェーズ ソリューション・アウトライン(以下 SO)フェーズでは、詳細な要件を調査しシステムの全体設計しま す。要件定義フェーズと呼ばれるフェーズと同様の役割を果たします。 3.マクロ設計フェーズ このフェーズでは各コンポーネントの概要を設計します。特に他コンポーネントとのインターフェー スを中心に設計します。外部設計フェーズと呼ばれるフェーズと同じ様な役割を果たします。 4.マイクロ設計フェーズ このフェーズでは各コンポーネントの詳細を設計します。特にコンポーネントの内部を詳細に設計 します。内部設計フェーズと呼ばれるフェーズと同じ様な役割を果たします。 5.構築サイクルフェーズ コーディング、単体テスト、結合/システムテストを実施します。ケースによっては構築サイクルを繰 り返えし実施する事もあります。 6.展開フェーズ 実際にお客様に使用していもらい評価を行います。大きなシステムでは、システムを分割しマイク ロ設計以降のフェーズを繰り返すケースもあります。 8 01. Webアプリケーション設計概要 Webアプリケーション設計概要 Webアプリケーション設計作業(概要レベル) ソリューション・アウトライン (SO) 提案 お客様の要件 お客様の要件 調査 調査 お客様環境の お客様環境の 調査と分析 調査と分析 マクロ設計 マイクロ設計 テスト計画の作 テスト計画の作 成およびテスト 成およびテスト 仕様の作成 仕様の作成 テスト実施の テスト実施の 準備 準備 ソリューション ソリューション 概要の検討 概要の検討 ソリューション要 ソリューション要 件のアウトライン 件のアウトライン 作成 作成 システム概要 システム概要 検討 検討 アプリケーション・ アプリケーション・ モデルのアウトライ モデルのアウトライ ン作成 ン作成 要件およびアプリ 要件およびアプリ ケーション・モデルの ケーション・モデルの 洗練 洗練 ユーザー・インター ユーザー・インター フェースの設計 フェースの設計 アーキテクチャー・ アーキテクチャー・ モデルのアウトライ モデルのアウトライ ン作成 ン作成 開発管理製品 開発管理製品 の検討 の検討 9 開発/ビルド/ 開発/ビルド/ デプロイのフ デプロイのフ ロー設計 ロー設計 物理アプリケー 物理アプリケー ション・モデルの ション・モデルの 定義 定義 アーキテクチャー・ アーキテクチャー・ モデルの設計 モデルの設計 開発管理サー 開発管理サー バーの構築 バーの構築 WAS V7 アプリケーション・デザインWorkshop Part2 提案フェーズからマイクロ設計フェーズでのWebアプリケーション設計作業項目(概要レベル)です。 図の中にあるアプリケーション・モデルとは、クラス図など業務アプリケーションとデータに対する分 析・設計仕様を表現するモデルです。アーキテクチャー・モデルとは、コンポーネント・モデルなどエ ンタープライズ ・レベルのアーキテクチャーを表現するモデルです。 9 01. Webアプリケーション設計概要 Webアプリケーション設計概要 Webアプリケーション設計の成果物 提案 業務フロー/ 業務フロー/ 処理記述書 処理記述書 概要レベル 概要レベル ソリューション・アウトライン (SO) 業務フロー/ 業務フロー/ 処理記述書 処理記述書 システム構成 システム構成 アーキテクチャ アーキテクチャ 記述書 記述書 マイクロ設計 プロセス定義 プロセス定義 プロセス定義 プロセス定義 プロセス定義 プロセス定義 クラス図 クラス図 クラス図 クラス図 クラス図 クラス図 ユースケース ユースケース ・モデル ・モデル ユースケース ユースケース ・モデル ・モデル ユースケース ユースケース ・モデル ・モデル 非機能要件 非機能要件 定義 定義 非機能要件 非機能要件 定義 定義 システム・ システム・ コンテキスト コンテキスト システム・ システム・ コンテキスト コンテキスト コンポーネント コンポーネント ・モデル ・モデル コンポーネント コンポーネント ・モデル ・モデル コンポーネント コンポーネント ・モデル ・モデル シーケンス図 シーケンス図 シーケンス図 シーケンス図 UIガイドライン UIガイドライン 概念データ 概念データ モデル モデル 10 マクロ設計 UI設計仕様書 UI設計仕様書 トランザクション トランザクション 記述 記述 論理データ 論理データ モデル モデル 物理データ 物理データ モデル モデル WAS V7 アプリケーション・デザインWorkshop Part2 Webアプリケーション設計で作成する成果物の例です。上記は一例であり、プロジェクトにより異なり ます。 提案フェーズは、デリバリーフェーズではないので厳密には成果物はありません。 図中の成果物を結んでいる線は、概要レベルから始まりフェーズごとに内容をより詳細化していく作 業過程を表しています。 10 01. Webアプリケーション設計概要 Webアプリケーション設計概要 システムの層分割 プレゼンテーション層 ビジネス層 画面表示及びそのコントロールを担う フロントエンド層 画面表示 画面表示 画面生成 画面生成 入力データチェック 入力データチェック インテグ レーション 層 ビジネスロジックを実装する層 画面遷移コントロール 画面遷移コントロール 11 外部システム 外部システム セッション管理 セッション管理 コンポーネント間の 連携を行うのに必要 な機能の層 ルーティング ルーティング 非機能要件を実現する ための機能の層 開発関連項目 データベース データベース リソース層の呼び出し リソース層の呼び出し プロトコル変換 プロトコル変換 ワークフロー ワークフロー データアクセス データアクセス QoS層 システムで扱うデータを管 理する層 ビジネスロジック ビジネスロジック フォーマット変換 フォーマット変換 ビジネス層呼出しコントロール ビジネス層呼出しコントロール リソース層 アプリケーション管理 アプリケーション管理 認証 認証 アクセス制御 アクセス制御 メッセージ変換 メッセージ変換 バッチ バッチ 監査ログ 監査ログ メッセージング メッセージング イベント イベント サービス・インターフェース サービス・インターフェース トランザクション管理 トランザクション管理 エラー処理 エラー処理 キャッシュ キャッシュ 開発管理 開発管理 WAS V7 アプリケーション・デザインWorkshop Part2 このワークショップでは、システム内での各コンポーネントの役割と関係性を整理するために上記の 様な層分割を行います。それぞれの層の役割は下記の様になります。なお、層分割については上 記以外にも様々な層分割方法があります。 ・プレゼンテーション層 この層は、画面表示及びそのコントロールを担うシステムのフロントエンド層です。画面表示をコント ロールし、ビジネス層のロジックを呼び出す機能を持っています。この層では、クライアント側で表示 される画面の遷移を管理したり、必要に応じて単独もしくは複数のビジネス層のロジックを呼び出し たりします。その際、送受信するデータのチェックを実施したり、整形等のデータ操作も実施します。 また、セッション管理と言ったクライアント連携機能もこの層で実施します。 ・ビジネス層 この層は、業務の主要機能を実行するロジックで構成される層です。ロジックを実行するために必要 なリソース層の呼び出しも実施します。 ・リソース層 この層は、システムに必要なデータを扱うための層です。データを格納するためにデータベースやこ のシステムと連携する外部システムが該当します。 ・インテグレーション層 この層は、プレゼンテーション層、ビジネス層、リソース層を繋ぐためのインターフェースや機能の層 です。プレゼンテーション層とビジネス層を繋ぐWebサービスのインタフェースと言ったものが該当し ます。また、リソース層と繋ぐためのデータベースアクセス機能や各種システムと連携するためのメッ セージングもこの層にマッピングされます。 ・QoS層 QoS(Quality of Service)を実現するための機能の層です。この層の機能は、上記全ての層の機能 と連携して非機能要件を実現します。この層の代表的な機能は、認証/アクセス制御等のセキュリ ティーやトランザクション、キャッシュ等のパフォーマンスを向上させる機能があります。 ・開発関連項目 この部分はシステム層分割の範囲外です。システムを構成する機能ではなく、ワークショップで取り 上げる開発関連の項目となります。 11 01. Webアプリケーション設計概要 Webアプリケーション設計概要 ワークショップで取り上げる技術要素 プレゼンテーション層 Ajax(Dojo) Ajax(Dojo) ビジネス層 リソース層 PHP PHP // Groovy Groovy RDB RDB // XML XML DB DB // KVS KVS JavaBean JavaBean JSP JSP EJB EJB REST(JAX-RS) REST(JAX-RS) フレームワーク フレームワーク インテグ レーション 層 フレームワーク フレームワーク Webサービス Webサービス SCA SCA JDBC JDBC // ORマッパー ORマッパー イベント処理 イベント処理 Javaバッチ Javaバッチ 非同期処理 非同期処理 QoS層 開発関連項目 12 キャッシュ キャッシュ 認証/認可 認証/認可 アプリケーション管理 アプリケーション管理 メッセージング メッセージング エラー処理 エラー処理 トランザクション トランザクション 開発管理 開発管理 WAS V7 アプリケーション・デザインWorkshop Part2 上記は、前ページで示した層分割に、このワークショップで取り上げる技術要素をマッピングした図 です。 12 01. Webアプリケーション設計概要 Webアプリケーション設計概要 3.Webアプリケーションの概要設計 13 WAS V7 アプリケーション・デザインWorkshop Part2 13 01. Webアプリケーション設計概要 Webアプリケーション設計概要 Webアプリケーション概要設計 ヒアリング(概要) 機能要件 ヒアリング(詳細) 非機能要件 機能要件 非機能要件 ソリューションの選定 ソフトウェア選定 システム概要 提案 提案 14 実装方式検討 洗練 実装方式の設計 システム設計 ソリューション・ ソリューション・ アウトライン アウトライン (SO) (SO) WAS V7 アプリケーション・デザインWorkshop Part2 Webアプリケーションの概要設計です。 提案フェーズでは、ヒアリング(概要レベル)を行い機能要件と非機能要件を整理します。そこからソ リューションを検討し、ソフトウェアの選定を行います。さらにサイジングを行いシステム概要を作成し、 お客様へ提案することになります。この段階で、システムの概要が決定してしまうので、特にソフト ウェア製品の選定は慎重に行う必要があります。 SOフェーズでは、提案フェーズで作成したシステム概要を元に、さらに詳細なヒアリングを行い実装 方式を検討しシステム設計を実施します。 14 01. Webアプリケーション設計概要 Webアプリケーション設計概要 非機能要件の検討 非機能要件の検討 • 非機能要件をどの様に実装するかを検討する。インフラだけでなく、アプリケーションも 合わせて実装させる方法もあるため、インフラと合わせて検討する必要がある。 – 耐障害性/信頼性 – サービス提供時間は? 計画停止/計画外停止の許容時間はどのくらいか? – 障害発生時のテイクオーバー構成は必要か?(同一処理能力/縮退) • 例 : 信頼性向上のためSOAP/JMSの使用を検討 – 拡張性 – スケールアップか? スケールアウトか? – トランザクション量、データ量の増加はあるか? • 例 : 拡張性を考慮してDBにXML DB採用を検討 – セキュリティー – どの部分で暗号化が必要か?(通信/データ) – 認証・アクセス制御・監視が必要か?(ユーザーアクセス/データアクセス/ログ監視) • 例 : Webサービス間でのend-to-endのセキュリティー確保のためWS-Securityを検討 – パフォーマンス/キャパシティ・プランニング – 同時ユーザー数は? 想定トランザクション数は?(平常時/ピーク時) • 例 : 応答時間を短縮するためパラレル処理を検討 – その他 • 15 バックアップ・リカバリー / 監視・システム管理 WAS V7 アプリケーション・デザインWorkshop Part2 要件には機能要件と非機能要件があります。非機能要件の実装方法にはインフラだけでなくアプリ ケーションも合わせて実現する方法もありますので、アプリケーション側でも早期に検討する必要が あります。 15 01. Webアプリケーション設計概要 Webアプリケーション設計概要 ソフトウェア選定のポイント 1/2 検討時期 提案フェーズ ・機能/非機能要件からどのソフトウェアで 実装するかを検討する。 ・一部の項目は実装方式の検討(仮決定)ま で行わないとソフトウェアが決定しない。 SOフェーズ ・ソフトウェアでの機能の実装方式を確定し、 実装方針/実装箇所などの設計を行う。 ・提案フェーズでソフトウェア選定が未決定 の部分は最終確定させる。 影響の大きいデシジョン・ポイント • システム構成/ソフトウェア選定に大きな影響を与えるため早期に検討する必要がある – 処理方式(同期/非同期/パラレル) • • 機能要件を実現するための処理方式を検討する 同時に非機能要件も考慮して使用する処理方式を決定し、ソフトウェアを選定する – 非機能件は主に信頼性、パフォーマンスを検討 – SOA • • • コンポーネントの再利用性を向上させるためSOA化するかを検討する Webサービスで実装する機能(ワークフロー等)/非機能要件によりソフトウェア選定が影響される 分散環境を採用する場合はシステム構成も検討する 次ページに続く 16 WAS V7 アプリケーション・デザインWorkshop Part2 ソフトウェア選定のポイントです。 ☆検討時期 ・提案フェーズ 主にシステムの要件をどのソフトウェアで実現するかを検討します。ソフトウェア選定においては、一 部の項目ではSOフェーズで行う実装方式の検討が必要となる項目があります。その場合は実装方 式の検討と仮決定を行い、SOフェーズで詳細検討を進めます。 ・SOフェーズ 詳細要件を調査し、提案フェーズで選定したソフトウェアを使用した実現方式の検討や設計を行い ます。 ☆影響の大きいデシジョン・ポイント 以下の様な項目は、システム構成/ソフトウェア選定に大きな影響を与えるため早期に検討する必 要があります。 ・処理方式(同期/非同期/パラレル) ・SOA (次ページに続く) 16 01. Webアプリケーション設計概要 Webアプリケーション設計概要 ソフトウェア選定のポイント 2/2 – データストア • 多くのケースではRDBが選択されるが、ケースによってはそれ以外の方式も採用される。方式を確 定させることによりソフトウェア選定が実施できる – イベント処理 • • イベントの処理パターン、非機能要件が重要なポイントとなる 他にも実績/開発生産性/コストも考慮する必要がある – バッチ • • 開発/オンラインシステムとの連携の観点からJavaバッチ採用の検討を行う Javaバッチを採用する場合は、コスト/開発生産性の観点からソフトウェア選定を行う – セキュリティー • 認証で他システムとの連携が必要であるかが重要なポイントとなる 17 WAS V7 アプリケーション・デザインWorkshop Part2 ☆影響の大きいデシジョン・ポイント (続き) ・データストア ・イベント処理 ・バッチ ・セキュリティー 各デシジョン・ポイントについての内容は、「4.アーキテクチャー・デシジョンのポイント - 提案 フェーズ」を参照してください。 17 01. Webアプリケーション設計概要 Webアプリケーション設計概要 サンプル:海外旅行予約システムの概要 旅行会社の海外旅行予約システム (販売担当者向け) ・販売担当者が海外パッケージ旅行の予約、及び予約状況の照会を実施 ・このパッケージ旅行は、ホテル、航空機を自由に選択可能 ・ホテルは旅行会社が一括購入、航空機は外部システムを利用してオンラインで実施 空室仕入れ 担当者 旅行情報及び空室情報を インターネット公開 旅行情報 検索 旅行 予約 販売担当者 予約状況 照会 連絡 旅行情報 空室 情報 予約通知 予約 情報 検索/予約 航空券 予約 システム 外部システム 海外旅行予約システム 18 ホテル ホテル WAS V7 アプリケーション・デザインWorkshop Part2 このワークショップで使用するサンプルシステムの概要です。 旅行会社の窓口販売担当者が、海外パッケージ旅行を予約処理するための社内システムです。こ の商品はホテルと航空機の便を自由に組み合わせる事が可能なパッケージ旅行です。このシステ ムは以下の機能を有しています。 旅行情報検索 ・・・ パッケージ旅行の内容、行き先、旅行会社が持っているホテルの空室情報を 検索 旅行予約 ・・・ パッケージ旅行の予約を実施。(ホテルと航空機を予約) 予約状況照会 ・・・ 予約された情報を参照。 ホテルの部屋は、旅行会社が一括確保して販売します。空室仕入れ担当者がホテルと交渉して空 室を仕入れます。仕入れられた空室はバッチでシステムの空室情報に反映されます。ホテル予約時 には、この空室を販売しホテル側には予約者の情報を送信します。 航空券は、既存の外部システムである航空券予約システム経由で検索/予約を実施します。予約さ れた情報は全て予約情報に反映されます。旅行情報(パッケージ旅行の内容、行き先、空き部屋) は、Web API を公開しインターネットからも自由に検索できます。 18 01. Webアプリケーション設計概要 Webアプリケーション設計概要 提案フェーズ : システム概要 インターネット 予約Webアプリケーション・サーバー 外部システム ホテル ホテル SOAP 航空券 予約 システム SOAP /JMS データベース アクセス DB 予約状況 照会 クライアントPC 外部アクセス 旅行 予約 トランザクション管理 SOAP サービス・インターフェース アクセス制御 TAM フロントエンドコントロール 認証 旅行情報 検索 RDB KVS Ajax DB2 WXS IE 8 WAS バッチサーバー 空室仕入れ 販売担当者 空室仕入れ 担当者 19 WXD CG WAS V7 アプリケーション・デザインWorkshop Part2 提案フェーズでのシステム概要の例です。サンプルの海外旅行予約システムをWebサービス化した ものです。 上記に明示されていないデシジョン・ポイントとしては以下があります。 ・再利用性を考慮して、業務ロジックはWebサービス化する ・ユーザーの操作性向上を考慮して一部の画面でAjaxを採用 ・予約Webアプリケーション内では、全て同期処理で行われる ・トランザクション管理では、障害時引き継ぎのため共有ディスクを使用する ・空室/予約情報は、整合性を重視してRDBを使用。旅行情報は、パフォーマンスを重視して KVSを使用 ・バッチは、開発環境統一のためJavaバッチを使用。開発生産性を考慮してWXD CGを採用 ・外部システムは、既存を周到しSOAP Webサービスを使用。航空券予約システムは信頼性向上 のためSOAP/JMSを採用している 19 01. Webアプリケーション設計概要 Webアプリケーション設計概要 SOフェーズ : システム詳細機能 プレゼンテーション層 ビジネス層 リソース層 セッション管理 ホテル 入力チェック 入力チェック サービス 呼び出し 画面表示管理 KVS 業務 ロジック フロントエンド 画面遷移 機能 管理 画面表示 業務 RDB 画面生成 航空券 予約 システム システム RDB 処理受付 インテグ レーション 層 SOAP Web サービス データ アクセス OR マッパー SOAP Web サービス メッセージ キュー Java バッチ 認証 QoS層 20 ユーザー レジストリ アクセス 制御 監査ログ 出力 エラーログ 出力 トランザ クション 制御 WAS V7 アプリケーション・デザインWorkshop Part2 SOフェーズで洗練化したシステムの詳細機能です。層分割の実施及び機能の詳細化を行っていま す。 20 01. Webアプリケーション設計概要 Webアプリケーション設計概要 SOフェーズ : 使用するアーキテクチャー プレゼンテーション層 ビジネス層 リソース層 セッション管理 Dojo(Ajax) ホテル 入力チェック 入力チェック JavaBeans サービス 呼び出し 画面表示管理 KVS 業務 ロジック フロントエンド 画面遷移 機能 管理 業務 システム RDB RDB RDB フレームワーク 画面表示 航空券 予約 システム KVS 画面生成 処理受付 JAX-RS インテグ レーション 層 SOAP Web サービス JAX-WS データ アクセス OR マッパー 独自API JPA Java バッチ 認証 QoS層 21 TAM ユーザー レジストリ アクセス 制御 JavaEE 監査ログ 出力 Log4j SOAP Web サービス メッセージ キュー JAX-WS SOAP/JMS Javaバッチエンジン エラーログ 出力 トランザ クション 制御 Transaction API WAS V7 アプリケーション・デザインWorkshop Part2 前ページのシステム詳細機能に使用するアーキテクチャーをマッピングした図です。 21 01. Webアプリケーション設計概要 Webアプリケーション設計概要 SOフェーズ : ソフトウェアへのマッピング プレゼンテーション層 ビジネス層 リソース層 セッション管理 WAS IE 8 WXS 入力チェック 入力チェック + サービス 呼び出し 画面表示管理 Dojo (FP Web2.0) 画面表示 ホテル WAS KVS 業務 ロジック 航空券 予約 システム FP Web2.0 フロントエンド 画面遷移 機能 管理 業務 RDB + 画面生成 システム RDB DB2 Struts 処理受付 インテグ レーション 層 SOAP Web サービス OR マッパー JDBC 認証 22 メッセージ キュー WAS + Spring WXD CG QoS層 SOAP Web サービス ユーザー TAMレジストリ アクセス 制御 WAS 監査ログ 出力 Java バッチ エラーログ 出力 Log4j トランザ クション 制御 WAS WAS V7 アプリケーション・デザインWorkshop Part2 前ページに使用するソフトウェア(詳細)をマッピングした図です。 22 01. Webアプリケーション設計概要 Webアプリケーション設計概要 4.アーキテクチャー・デシジョンのポイント - 提案フェーズ 23 WAS V7 アプリケーション・デザインWorkshop Part2 23 01. Webアプリケーション設計概要 Webアプリケーション設計概要 提案フェーズ : デシジョン・ポイントのリスト 提案 デシジョン・ポイント No. カテゴリー 101 オープンソース使用の検討 全体 102 スクリプト言語によるアプリケーション開発の検討 全体 103 UIで採用するアーキテクチャーの検討 プレゼンテーション層 104 処理方式(同期/非同期処理/パラレル処理/イベント処理/バッチ処理)の検討 インテグレーション層 105 DB方式と製品の検討 リソース層 106 外部システムとの接続方式 リソース層 107 データストア領域の検討 システム構成 108 メモリー容量に関する検討 システム構成 109 キャッシュに関する検討 システム構成 110 バッチ製品の検討 インテグレーション層 111 認証の検討 QoS層 112 開発ツールの選定 開発関連 113 開発管理/テスト製品の選定 開発関連 24 WAS V7 アプリケーション・デザインWorkshop Part2 このページでは、提案フェーズで忘れずに検討して欲しいアーキテクチャー・デシジョンのポイントを リスト化してあります。主に製品選定、システム構成に関わるデシジョン・ポイントです。このリストの順 番はカテゴライズによる順番で、検討順序とは関係ありません。 各デシジョン・ポイントの内容は、次ページ以降で説明します。 24 01. Webアプリケーション設計概要 Webアプリケーション設計概要 提案フェーズ : デシジョン・ポイント 提案 提案 101. オープンソース使用の検討 102. スクリプト言語によるアプリケーション開発の検討 お客様の要件調査 お客様の要件調査 103. UIで採用するアーキテクチャーの検討 104. 処理方式の検討 ソリューション概 ソリューション概 要の検討 要の検討 105. DB方式と製品の検討 106. 外部システムとの接続方式 110. バッチ製品の検討 111. 認証の検討 107. データストア領域の検討 システム概要 システム概要 検討 検討 108. メモリー容量に関する検討 109. キャッシュに関する検討 112. 開発ツールの選定 開発管理製品の 開発管理製品の 検討 検討 25 113. 開発管理/テスト製品の選定 WAS V7 アプリケーション・デザインWorkshop Part2 デシジョン・ポイントを提案フェーズでの作業項目にマッピングしたものです。 25 01. Webアプリケーション設計概要 Webアプリケーション設計概要 提案 WebSphere製品 ワークショップで説明するWebSphere製品 WAS FP SCA WAS FP Web 2.0 SCA 1.0をサポート ・SOAベースのコ ンポジッ ト・アプ リケーション WASにWeb 2.0の機能を追加 ・Dojo ・Webメッセージング ・JAX-RS WAS FP OSGi Applications and JPA 2.0 WXS ・最新JPA 2.0を実現 ・他にOSGiも実現可能 分散キャッシュによる 高速DBアクセスや KVSを実現する KVS RDB アプリケーションサーバー BPEL XML DB JPA SCA RESTful Webサービス XML アクセス 外部システム WPS BPELによるサー ビスのコンポジット を実現 WebSphere MQ 異機種間メッセージング基盤 WBE 高度なイベント処理を 容易に定義 イベントサーバー バッチサーバー イベント・ エンジン Java バッチ WXD CG Javaバッチを 実現 26 WAS FP XML XML関連の最新 仕様を実現 WAS V7 アプリケーション・デザインWorkshop Part2 このワークショップで取り上げているWebSphere製品です。 ・WAS Feature Pack Web 2.0 ・WAS Feature Pack SCA ・WAS Feature Pack OSGi Applications and Java Persistence API (JPA) 2.0 ・WAS Feature Pack XML ・WPS(WebSphere Process Server) V7.0 ・WebSphere MQ V7.0.1 ・WXS(WebSphere eXtreme Scale) V7.1 ・WXD CG(WebSphere Extended Deployment Compute Grid) V6.1 ・WBE(WebSphere Business Events) V7.0 26 01. Webアプリケーション設計概要 Webアプリケーション設計概要 【参考】 WAS V7 Feature Packとは WAS V7に特定のテーマに沿った最新機能を追加 – 拡張機能をアドオン / バージョンを上げずに新機能を追加 – WASのライセンスをお持ちのお客様に無償で提供 – Passport Advantageによる正式サポート対象 現在提供されているWAS V7 Feature Pack – Feature Pack for Web2.0 – Feature Pack for Dynamic Scripting – Feature Pack for OSGi Applications and Java Persistence API 2.0 – Feature Pack for Communications Enabled Applications – Feature Pack for SCA – Feature Pack for XML V7の現状機能を 維持したいお客様 Web 2.0をご利用 SCAをご利用にな になりたいお客様 りたいお客様 Web 2.0 Feature Pack SCA Feature Pack WebSphere V7.0 27 WAS V7 アプリケーション・デザインWorkshop Part2 WAS V7 Feature Packとは、特定のテーマに沿った最新機能を追加するためのアドオンです。 27 01. Webアプリケーション設計概要 Webアプリケーション設計概要 101. オープンソース使用の検討 提案 検討項目 101. オープンソース使用の検討 / 全体 検討内容 プロジェクト内でオープンソースのソフトウェアを使用することが可能かを検討する。 (製品内に組み込まれているものは別) 検討時期 提案フェーズ初期 選択候補 ①オープンソースを使用しない ②オープンソースを使用する 選択基準 製品として責任を持ったサポートをお客様が望む場合は、①使用しないとなる。 品質、サポート、問題の修正、将来のバージョンアップなどのリスクを承知の上で、開発期間の短縮や一定の品質の 確保のために②使用するを採用する。 考慮事項 ①の場合は、製品もしくは独自開発で該当部分を構築する必要があるため、コスト/期間への影響を考慮する必要 がある。②の場合は、リスクの観点からオープンソースの採用基準を検討する必要がある。 この選択は、製品選定や他のアーキテクチャー・デシジョンに大きく影響を及ぼすので、早期に確定する必要がある。 28 WAS V7 アプリケーション・デザインWorkshop Part2 提案初期にオープンソースのソフトウェアを使用するか検討します。 この項目は、主にお客様のシステムに対するポリシーで決まります。リスクを承知でオープンソースを 使用するか、サポートを重要視し製品/独自開発を行うかの方針をなるべく早期にお客様と合意を 得る必要があります。もし、オープンソースを使用する方針になった場合には採用基準も検討を行う 必要があります。 このデシジョンは、製品選定や他のアーキテクチャー・デシジョンに大きく影響を及ぼすので、早期 に確定する必要があります。 28 01. Webアプリケーション設計概要 Webアプリケーション設計概要 102. スクリプト言語によるアプリケーション開発の検討 提案 検討項目 102. スクリプト言語によるアプリケーション開発の検討 / 全体 検討内容 Webアプリケーション開発に、Java言語(JavaEE)を使用するか、スクリプト言語(PHP、Groovy)を使用するかを検 討する。 検討時期 提案フェーズ スクリプト言語を採用した場合、実行環境がWAS Feature Pack for Dynamic Scriptingとなり、システムの設計が大 きく変わってしまうため 選択候補 ①Java言語(JavaEE)による開発 ②スクリプト言語(PHP、Groovy)による開発 選択基準 多くの場合は、①Java言語を使用するが、以下の様な場合には、②スクリプト言語を採用する事も可能 ・シチュエーショナル・アプリケーションの開発 ・アジャイルな開発を実施する 考慮事項 WAS FP Dynamic Scriptingは、内部的にはWebSphere sMashと同等でWASのライセンスのみで使用可能。 ②スクリプト言語を採用した場合、WAS FP Dynamic Scriptingを使用する必要がある。その場合、高度なトランザク ション処理/高可用性を実現できない。また、外部システムとの接続方法が限定されてしまう。アーキテクチャーや開 発ツールも変わってきてしまう。 29 WAS V7 アプリケーション・デザインWorkshop Part2 WAS Feature Pack for Dynamic Scriptingを使用することによりスクリプト言語(PHP、Groovy)に よる開発が可能となります。スクリプト言語を採用することによりライトウェイトな開発が可能となります。 実態はWebSphere sMsahと同等で、WASのライセンスのみで使用可能です。ただし、WASとは構 成が大きく変わり制約事項もできてしまうので選択に当たっては十分な検討が必要となります。詳細 は、 WAS Feature Pack for Dynamic Scriptingのページを参照してください。 29 01. Webアプリケーション設計概要 Webアプリケーション設計概要 WAS Feature Pack for Dynamic Scripting 提案 WAS Feature Pack for Dynamic Scripting – Web 2.0 アプリケーションを構築するための軽量なWebアプリケーション・サーバー – WebSphere sMashと同機能 スピード 軽量かつ高速なアプリケーション開発 シンプル アプリケーションを素早く構築 Agility Web 2.0アプリケーションにマッチした実行環境 ◇動的スクリプト言語 ◇ REST、テンプレート、サービス・ライブラリ、コネクター ◇WebブラウザーもしくはEclipseによる開発 ◇RESTによるシンプルなインターフェース ◇アジャイル環境に最適化した素早い実行環境 ◇アプリケーションがサーバーである Application Server 戦略的、堅牢なアプリケーション アプリケーションで性質で使い分け Usage 「早く投入する」ことがより重要 Situational Applications Java Enterprise Edition FP Dynamic Scripting ☆実現できない事 ☆実現できない事 -SOAP -SOAPWebサービス Webサービスプロバイダー プロバイダー -2PCの様な高度なトランザクション -2PCの様な高度なトランザクション -クラスタリング環境での完全な高可 -クラスタリング環境での完全な高可 用性 用性 Dynamic Scripting Number of Applications 30 WAS V7 アプリケーション・デザインWorkshop Part2 WAS Feature Pack for Dynamic ScriptingはWASのFPの1つですが、他のFPとは多きく異なりま す。他のFPはあくまでも既存WASに対する機能の拡張ですが、このFPはWASをベースとしません。 実態は、WebSphere sMash(以下 sMash)と同等の実行環境となります。そのため、sMashと同様 に上記の様な特徴を持ちますが、同時にSOAPサーバーとなれない2PCトランザクションができない、 完全なクラスタ環境を構築できない、外部システムとの連携方法が限定されてしまうと言った制約が あります。また、JavaEEアプリケーションは実行不可なので、JavaEE用の既存モジュールの再利用 やオープンオープンソースも利用できないので注意してください(JavaSEのアプリケーションは稼動 可能です)。 30 01. Webアプリケーション設計概要 Webアプリケーション設計概要 103. UIで採用するアーキテクチャーの検討 提案 検討ポイント – 操作性が良くインタラクティブなUIを必要とするか検討する • 必要な場合は実装技術も選択する 選択肢 ①トラデショナルなWeb画面 ②Ajax ③その他のRIA ・HTML、CSSと簡単なJavaScript ・高度なJavaScript ・専用の技術 ・高い操作性を必須としない ・高い操作性を必要とする ・Webブラウザーのみで実現 ・高い操作性を必要とする ・別途実行環境が必要 ・パフォーマンス、開発ツールに 力を入れている物が多い ・開発生産性が高い ・従来の画面遷移を行う ・特別な仕掛けを必要としない ・パフォーマンス、ブラウザー間の 差異に注意 ・サーバーはRESTful Webサービ スで作成 ・製品選定を行う必要がある ・画面開発の難易度向上、開発/テスト工数の増加、必要とするスキルを考慮 する必要がある ・画面設計が従来と変わってくる部分がある 31 WAS V7 アプリケーション・デザインWorkshop Part2 最近では操作性の良いUI (ユーザーインタフェース)を求めるお客様が増えつつあります。お客様 の要件を満たすUIを構築にするために必要なアーキテクチャー/製品を選定します。 UIの操作性に高い要件がない場合は、 ①トラデショナルなWeb画面 を選択します。操作性が高くインタラクティブなUIを必要としている場合は、②Ajax か③その他 のRIAを使用します。ただし、これらを使用した場合、画面開発の難易度向上、開発/テスト工数の増加、必要とするスキルの違いが発生します。 ③その他のRIAを選択する場合には、この段階で要件に合わせて製品を選択する必要がああります。 (RIAに関しては次ページ参照) Ajax採用によるWebアプリケーションデザインへの影響は、「Ajax + RESTful Webサービスによる 変化」のページ、及び「フロントエンド設計」セッションを参照してください。 31 01. Webアプリケーション設計概要 Webアプリケーション設計概要 【参考】 RIA 提案 RIA (Rich Internet Application) – インタラクティブ性が高く、ユーザーが使い易いWebアプリケーション・クライアント RIA Dojo(Ajax) ・RIAを作成するためのJavaScriptライブラリー ・OSSだがWAS FP Web2.0の機能として提供 ・主要なブラウザーでそのまま実行可能 ・便利なWidget(パーツ)を多数用意 AIR/Flex/Flash ・Adobeが開発したRIA及びコンテンツ技術 ・実行にはブラウザーのプラグイン、もしくは専 用ランタイムが必要 ・開発が容易 Silverlight ・Microsoftが開発したRIA ・実行にはIEのプラグインが必要 ・動画関連に優れている 32 ブラウザー JavaScript + Dojo HTTP HTML JavaScript 専用 フォーマット ブラウザー/ 専用ランタイム Flex/AIR /Flash ブラウザー WebSphere AS REST JSON or XML Silverlight WAS V7 アプリケーション・デザインWorkshop Part2 ここでは、主要なRIAの紹介をしています。 DojoはAjaxを利用しやすくするためのJavaScriptライブラリーです。オープンソースとして公開され ていますが、WAS FP for Web 2.0に組み込まれています。DojoはAjaxなので、Webブラウザーの みで利用可能です。 AIR/Flex/FlashとSilverlightは、実行環境の導入が別途必要です。 WASとの連携は、通常のHTTP/HTMLの他にRESTful Webサービスも使用します。Dojo以外は、 これ以外に専用の通信方法もありますが、その場合はサーバー側にその仕組みが別途必要になり ます。また、Dojo以外は専用フォーマットのファイルを使用することもあります。 32 01. Webアプリケーション設計概要 Webアプリケーション設計概要 104. 処理方式の検討 提案 検討項目 104. 処理方式(同期/非同期/パラレル/イベント)の検討 / インテグレーション層 検討内容 使用する処理方式を検討する。これらは、択一選択でなく複数選択が可能である。 同期処理は通常必須であり、必要に応じて他の処理方式も使用する。同期以外の処理方式を選択した場合は、実装 する製品の検討も行う必要がある。 検討時期 提案フェーズ 処理方式によりシステム全体のアーキテクチャーが大きく影響を受ける。また、処理方式によっては使用する製品も 選択する必要があるため提案フェースで実施する。 選択候補 ①同期処理 ②非同期処理 ③パラレル処理 ④イベント処理 選択基準 ①同期処理方式は必須。長時間処理等があり処理を分離したい場合は、②非同期処理を使用する。ユーザーに返 すまでの処理時間をトータルで短くしたい場合は、③パラレル処理を使用する。特定イベント発生時に処理を実施し たい場合は、④イベント処理を採用する。 考慮事項 ②-④を使用する場合、実装方式も考慮しないと製品選定が実施できないので、各処理方式の実装方式の方針も 検討する。 SOフェーズでは、それぞれの処理の対象とする業務の選定、詳細実装方式、実装箇所等さらに詳細に検討を詰め ていて確定していく必要がある。 詳細は、「サービス設計」、「イベント&Javaバッチ設計」のセッションを参照。 33 WAS V7 アプリケーション・デザインWorkshop Part2 システム内で実現する処理方式を検討します。 製品へのマッピングは次ページを参照してください。詳細な情報は、「サービス設計」、「イベント& Javaバッチ設計」のセッションを参照してください。 33 01. Webアプリケーション設計概要 Webアプリケーション設計概要 処理方式と製品 同期処理 • 通常の処理方式 – WAS パラレル処理 • 処理時間短縮のための方式 – WAS – WebSphere MQ – WPS 提案 非同期処理 • 処理を分離する – WAS – WebSphere MQ イベント処理 • イベントの発生を通知する – WAS – WebSphere MQ – WBE (WebSphere Business Events) イベント 34 WAS V7 アプリケーション・デザインWorkshop Part2 各処理方式を実装できる製品です。 処理方式の実装方法には、各製品内で複数ある場合もあります。提案フェーズでは製品選定まで ですが、SOフェーズではさらに詳細な実装方式も検討する必要があります。 詳細は、「サービス設計」、「イベント&Javaバッチ設計」のセッションを参照してください。 34 01. Webアプリケーション設計概要 Webアプリケーション設計概要 提案 105. DB方式と製品の検討 検討項目 105. DB方式と製品の検討 / リソース層 検討内容 システムで使用するDBの方式と製品をの検討を行う 検討時期 提案フェーズ 採用する方式により使用する製品が決まるため提案フェーズで検討 選択候補 ①RDB ②XML DB ③KVS (Key Value Store) 選択基準 大量のデータを整合性重視で処理する場合、通常の①RDB方式を採用する。 柔軟なデータ構造を取れるXML形式でデータを扱いたい場合は、XML DBを採用する。 整合性よりも処理性能を重視し、データ構造がキーバリュー型で問題ない場合はKVS方式を採用する。 また、複数の方式を採用しデータ項目の特性に合わせて使い分ける事も可能である。 考慮事項 検討するためには、データの特性を調査する必要がある。 処理方式により、データ分析手法、データアクセス方式、開発技術も違ってくるので、その点も考慮に入れて選択を 行う。 複数の方式を採用した場合は、インフラ構築や運用の工数が増加する点を考慮する。 次ページ及び「データ・アクセス設計」のセッションも参照。 35 WAS V7 アプリケーション・デザインWorkshop Part2 DB方式は、Webアプリケーションのデータ設計やシステム構成(製品選定)に影響を及ぼすため早 期に実施する必要があります。DB方式の主な選択候補としては、①RDB、②XMLDB、③KVSがあ ります。 選択ポイント等は次ページを参照してください。 35 01. Webアプリケーション設計概要 Webアプリケーション設計概要 提案 DB方式の選定 選定ポイント – 重要視する機能 RDB 整合性 • 整合性/拡張性/可用性/ パフォーマンス/保守性 – 影響ポイント • • • • データアクセス方式 データ分析手法 開発技術 既存データ移行 DB2 XMLDB 拡張性 DB2 KVS – 考慮点 • 既存データがある場合は移行可能か? • 使用したいフレームワークがあるか? 可用性 パフォーマンス WXS(WebSphere eXtreme Scale) 36 WAS V7 アプリケーション・デザインWorkshop Part2 DB方式を検討するには、データ特性を調査し、重要視する機能を見極わめる必要があります。その 上でDB方式を決定しますが、複数の方式を同時に使用することも可能です。その場合、SOフェー ズでどのデータがどの方式を使用するのか確定する必要があります。 多くの場合は、整合性が重要視されDB2によるRDB方式が選択されます。データ構造に柔軟性を 持たる等の理由によりXMLデータ形式を使用する場合はDB2のXML DB方式が選択されます。より パフォーマンス重視でデータ構造がキーバリュー型で問題ない場合はWXS(WebSphere eXtreme Scale)のKVS方式を採用します。 DB方式によって、データアクセス方式、データ分析手法、開発技術が影響を受けますが、DB方式 を選択することにより自動的に決まってくるものなので、選択時には影響ポイントよりも重要視する機 能の方をメインに選定します。ただし、既存データがあり移行が必要な場合移行が可能であるかを 検討する必要があります。また、データアクセスで使用したいフレームワークやツールがある場合は、 それが対応しているDB方式を選択することになります。 詳細は、「データ・アクセス設計」のセッションを参照してください。 36 01. Webアプリケーション設計概要 Webアプリケーション設計概要 106. 外部システムとの接続方式 提案 検討項目 106. 外部システムとの接続方式 / リソース層 検討内容 外部システムとの接続方式を検討する。また、接続方式によっては実装製品の検討を行う必要がある。 検討時期 提案フェーズ 選択候補 ①Gatewasy接続(Gatewayでプロトコル変換を行う) : 各種製品から選定 ②DB連携 : DB2 ③ファイル転送 : 各種製品から選定 ④Webサービス : WAS ⑤MQ接続 : WebSphere MQ 選択基準 既存の外部システムと接続する場合、接続方式が決まっている事が多いのでその方法で実装する製品の選定を行 う。決まっていない場合は、外部システム側担当者とシステムの特性を考えながら検討を実施する。 プロトコル変換が必要な場合は①Gatewasy接続を行うが、対象プロトコルに変換するコンポーネントが必要になる。 ②DB連携では簡単にデータの連携を行う事が可能だが、両システムでデータの整合性を考慮する必要がある。バッ チ処理的な連携を行う場合は③ファイル転送を採用すると疎結合が行える。外部システムにMQインターフェースが ある場合は⑤MQ接続を、Webサービスインターフェースがある場合は④Webサービスでの連携を行う。 考慮事項 上記は主な接続方式で他にも接続方式はある。外部システムが既にある場合はその方式を使用し、そうでない場合 は、上記の方式から選択する。 ①と③については、複数の製品が存在し、実現する内容に応じた製品を選定する必要がある。 37 WAS V7 アプリケーション・デザインWorkshop Part2 ここでは、外部システムとの接続方式の検討と製品選定について述べています。 ①Gatewasy接続(Gatewayでプロトコル変換を行う) : 各種製品から選定 ②DB連携 : DB2 ③ファイル転送 : 各種製品から選定 ④Webサービス : WAS ⑤MQ接続 : WebSphere MQ 37 01. Webアプリケーション設計概要 Webアプリケーション設計概要 外部システムとの接続方式の検討ポイント 提案 必要な変換を実行できる製品が必要 Gateway データ送受信 ・プロトコル変換 ・フォーマット変換 データ送受信 データの整合性 データ書き込み /読み込み データ書き込み /読み込み DB バッチ処理的に使用 WAS ファイル転送 インターオペラビリティー SOAP Webサービス 外部システム MQが必要 メッセージの get/put MQ 38 メッセージの get/put WAS V7 アプリケーション・デザインWorkshop Part2 前ページで挙げた外部システムとの接続方式を図示したものです。それぞれの方式には以下の様 な検討ポイントがあります。 ①Gatewasy接続 : 必要な変換を実行できる製品が必要 ②DB連携 : データの整合性を考慮する必要がある ③ファイル転送 : バッチ的な処理で使用する ④Webサービス : インターオペラビリティーを考慮する必要がある ⑤MQ接続 : 両方がWebSphere MQを使用する環境が必要になる 38 01. Webアプリケーション設計概要 Webアプリケーション設計概要 107. システム・データストア領域の検討 ポイント ・下記項目の使用方法によって、必要と なるデータストアが変わってくる 選択肢 ①ローカル ディスク トランザクション ・2PCを実施する場合は、トランザクションログを書き込む 先が必要となる ・①ローカルディスクでも可能だが障害時にトランザクショ ンログの引継ぎが必要な場合は②共有ディスクが必要 となる ②共有 ディスク サーバーの一部で安価。 高可用性は構成による。 他のサーバーと共有できない。 高速で高可用性構成にする事ができる。 複数のサーバーで共有可能。 構成方法を検討する必要がある。 忘れずに検討 ③システム DB メッセージング ・メッセージングのパーシスタンスで、データストア領域が 必要となる ・障害時の引継ぎが必要なければ①ローカルディスク。 引継ぎが必要なら②共有ディスクか③システムDB ログ ・通常は①ローカルディスクだが、ログを集中管理するた めに②共有ディスクか③システムDBのケースもある 提案 DBMSを利用する。 複数のサーバーで共有可能。 ①、②に比べコスト、パフォーマンス で考慮が必要。 セッション ・メッセージングのパーシスタンスの方式に よってはデータストア領域が必要となる ・WASでは③システムDBを使用する 39 WAS V7 アプリケーション・デザインWorkshop Part2 特定の機能の使用方法によっては、システム用データストア領域が必要となる場合があります。デー タストア領域の選択肢としては、以下の3つがあります。特に②共有ディスクはシステム構成に追加 する必要があるので提案フェーズで忘れずに検討する必要があります。また、ここでは取り上げてい ませんが、これらのデータストア領域は使用量を検討して容量を見積もる必要があります。 ①ローカルディスク マシンに付属のHDDに書き込みます。RAID等の高可用性構成がされていない場合も多いのでそ の点は注意が必要です。また、そのままでは他のサーバーと共有できません。 ②共有ディスク ローカルディスクをNFS等で簡単に共有する方法から、専用の外部ディスク装置を使用する方法ま で様々です。方法により速度、高可用性、保守性が大きく変わりますが、コストが大きく変わります。 システム構成も影響を受けるため、提案フェーズでどの様な方法で構成するか検討する必要があり ます。 ③システムDB データストアにDBMSを利用します。当然複数のサーバーから共有可能です。単純にデータを書き 出すだけだとDBMSが稼動する分だけオーバーヘッドがありますが、検索/更新/削除がある様な ケースではトータルで有利なります。アプリケーションDBと共有することが可能ですが、パフォーマン ス上問題がないか検討が必要です。 下記の項目は使用方法によってはデータストア領域が必要となるので、提案フェーズで検討をする 必要があります。 ・トランザクション : 2PCを使用 ・メッセージング : メッセージングのパーシスタンスを実施 ・ログ : 必ずデータストアを使用 ・セッション : セッションのパーシスタンス 39 01. Webアプリケーション設計概要 Webアプリケーション設計概要 108. メモリー容量に関する検討 提案 検討項目 108. メモリー容量に関する検討 / インフラ 検討内容 WASで使用するメモリー容量を検討する必要がある 検討時期 提案フェーズ WASで使用するシステム構成に影響を与えるため提案フェーズで実施する 選択候補 N/A 選択基準 WASのメモリー容量は以下の3点が大きく影響するため、この3点を中心に検討を進める。 ①セッション 通常のWebアプリケーションでは、HTTPセッションに格納されるデータが一番メモリーを使用する。メモリー容量は、 「セッション数 × (1セッションの)データ量」となる。提案フェーズでデータ量を算出するのは難しいため仮のデータ量 を決め、それを設計時の制約する方法もある。 ②キャッシュ WASのキャッシュ機能を使用する場合は、キャッシュ容量を検討する。一般的にはキャッシュ容量が多いほどキャッ シュのヒット率があがり、パフォーマンスが向上する。 ③大容量データ 100MB単位の様な大容量データをWASで扱う場合は、処理内でどの程度メモリーが必要か検討する。 考慮事項 2GB超のメモリーが必要になる場合は、WAS 64bit版を使用するか、アプリケーション・サーバー(JVM)分割する必 要があり、システム構成に影響を与える。 40 WAS V7 アプリケーション・デザインWorkshop Part2 上記は、WASのメモリー容量に関する検討について記述しています。セッション、キャッシュ、大容 量データ使用でメモリー使用量が多くなる場合は、JVM分割を検討しなければいけないケースもあ るので、注意が必要です。 40 01. Webアプリケーション設計概要 Webアプリケーション設計概要 109. キャッシュに関する検討 提案 キャッシュに関する検討 – キャッシュするポイントを検討 • ユーザーに近いほど効果的だが、キャッシュの単位や更新を考慮する必要がある • 提案フェーズでは使用するキャッシュの選定を行いシステム構成を決める WAS ブラウザー Proxy Server JavaScriptや、ブラウ ザーの機能によるキャッ シュ。非常に高速で、複 数の画面で同じデータ を繰返し使用する場合 に有効。 キャッシュはファイル単 位となるため、静的な コンテンツ、更新頻度 が少ないデータで使用 される。 実行結果/オブジェクト単位での キャッシュを行う。 WXS Servlet/JSPキャッシュ データをオブジェクトと してキャッシュする。 Webサービスキャッシュ コマンドキャッシュ オブジェクトキャッシュ ブラウザー Proxy Server 41 WAS DB WXS (WebSphere eXtreme Scale) WAS V7 アプリケーション・デザインWorkshop Part2 パフォーマンスを向上させる有効な方法の1つとしてキャッシュがあります。キャッシュは複数の箇所 で実装できるので、どの箇所でどういったデータをキャッシュさせるかを見極めることが重要です。な るべくユーザーに近い部分でのキャッシュが効果的ですが、更新を適切に行うためにはデータによ り最適なキャッシュポイントは変わってくるのでキャッシュの単位が重要になります。キャッシュによっ てはアプリケーションの設計に影響を及ぼすものがあるので、インフラチームと共同でどのキャッシュ を使用するのかを検討する必要があります。 Proxy Serverは、WASと別のサーバーにすることも同一サーバー上に構築する事も可能です。 WASでは、4つのキャッシュの機能があります。 Servlet/JSPキャッシュ、Webサービスキャッシュはそれぞれの実行結果をキュッシュします。Web サービスキャッシュではJAX-RPCのみ使用可能で、JAX-WSでは使用できません。 コマンドキャッシュはコマンドパターンで作成したオブジェクトをキャッシュします。オブジェクト キャッシュは専用のAPIでコーディングされたオブジェクトをキャッシュします。両者ともキャッシュする 単位を考慮して設計する必要があります。 WXS(WebSphere eXtreme Scale)では、DBへの検索をキャッシュします。キュッシュの単位が最 小になるため、必要な物だけキャッシュ可能となります。 提案フェーズでは、使用するキャッシュを選定します。Proxy ServerやWXSを使用する場合は専用 のノードに配置することも可能なのでシステム構成に影響を与えます。SOフェーズでは使用する キャッシュの種類と配置場所を詳細に検討します。マクロ設計フェーズでは、キャッシュするデータ の洗い出しや更新タイミングの検討を行います。特に更新タイミングは画面遷移全体を見て矛盾が 発生しないように綿密に設計する必要があります。 41 01. Webアプリケーション設計概要 Webアプリケーション設計概要 110. バッチ製品の検討 提案 検討項目 113. バッチ製品の検討 / インテグレーション層 検討内容 バッチ処理に関して以下の検討を行う。 ・実装方法及び製品 検討時期 検討フェーズ 選択候補 ① シェル 及び ネイティブアプリ ② Javaバッチ - JavaSE/JavaEE上に独自実装 ③ Javaバッチ -オープンソース ④ Javaバッチ - WXD CG(WebSphere Extended Deployment Compute Grid) 選択基準 バッチは、処理方式によりオンラインバッチ、オフラインバッチに分かれる。多くのWebシステムでは両方の方式を採 用し使い分けている。方式ごとに実装方法を変える事も可能である。 実装方法としては、大きく2つに分かれる。パフォーマンスや開発容易性を重視する場合は従来の①シェル 及び ネイ ティブアプリの方式もある。Javaバッチを使用した場合、WASのJava環境が生かせるのでスキルの共有、アプリとの コードの共有等開発の面でメリットがある。Javaバッチ場合、Java環境だけで実装する方法と、バッチ実行環境用の オープンソースや製品を使用する方法がある。これらの選択基準については、 「イベント & Javaバッチ 設計」セッ ションを参照。 考慮事項 ジョブのスケジューリングを行う場合、TWS(Tivoli Workload Scheduler )等のスケジューラー製品も検討する必要 がある。 42 WAS V7 アプリケーション・デザインWorkshop Part2 Javaのパフォーマンスが向上され、Javaバッチ環境の整備も整備されてきたため、最近ではJavaで バッチを作成するケースも増えてきています。Javaバッチは、WASとの開発環境/スキルの統合を 図れるのでトータルでの開発生産性を向上させることができます。 バッチの方式、実装方法及び製品についての詳細は、「イベント & Javaバッチ 設計」セッションを 参照してください。 42 01. Webアプリケーション設計概要 Webアプリケーション設計概要 111. 認証の検討 提案 ポイント – 既存の仕組みがある場合は、連携方法を検討 – 認証サーバーの検討 • – 使用する認証リポジトリー • 認証リポジトリー 他のシステムとの連携が必要か検討 OS LDAPサーバー ファイル WAS管理のファイル内でユーザー管理 WASでのみ使用可能 LDAP サーバー LDAPサーバーによるユーザー管理 通常はLDAPサーバーを使用 別途サーバーが必要 製品例 : Tivoli Directory Server WAS WASのみで認証を行うパターン ・別の認証製品が必要ない ・LDAPサーバーは別途必要 ・SSO(Single Sign On)も可能 認証サーバーとしてTAMを使用して認証を行うパターン ・WAS以外の複数のシステムの認証 を集中して行える その他 ・Policyサーバーによる集中的な管理が システム が可能 TAM OSのユーザー認証の機能を使用 WAS Base構成でのみサポート LDAP サーバー TAM Policyサーバー WAS 認証サーバー 43 WAS V7 アプリケーション・デザインWorkshop Part2 認証の実現方式を検討します。既存の認証システムがある場合は、その方式に合わせた方式を採 用します。 新規に構築する場合は、大きく分けてWASで認証を行うパターンと、別途認証サーバーを構築して そこで認証を集中的に行うパターンがあります。WASのみで認証を行う場合は使用する認証リポジ トリーを選択する必要がありますが、ユーザー管理を共通化するため通常はLDAPサーバーを選択 します。既存LDAPサーバーがない場合は、Tivoli Directory Serverなどを使用して別途構築する 必要があります。 認証サーバーの使用は、他システムとのSSO(Single Sign On)が必要な場合に行います。WASの みでもSSOは可能ですが、認証処理を集中管理できる点では専用認証サーバー製品が優れてい ます。TAM(Tivoli Access Manager)を採用した場合は認証サーバー、LDAPサーバー、Policy サーバーが必要になります。 43 01. Webアプリケーション設計概要 Webアプリケーション設計概要 112. 開発ツールの選定 提案 検討項目 112. 開発ツールの選定 / 開発関連 検討内容 開発ツールの選定を行う。 検討時期 提案フェーズ 製品選定があるため提案フェーズで実施。納品物ではないがオープンソースを使用するケースもあるため、101.オー プンソース使用の検討を事前に行う必要がある。 選択候補 ①RAD (Rational Application Developer for WebSphere Software) ②WASに付属のアセンブルツール ③eclipse 選択基準 開発支援機能、開発管理製品との連携。 ①RAD 各種アプリケーション開発ウィザード等の開発生産性を向上させる開発支援機能や、チーム開発製品と連携する機 能を利用することが可能となる。また、ローカル環境でのWASを使用したテストを実施することが可能となる。 ②アセンブルツール WASに付属するツールで、①RADから便利な開発支援機能などのが省かれたツール。WASライセンスを所有して いる場合は、そのWAS向け開発で自由に使用することが可能。 ③eclipse コストや独自拡張を重要視する場合は選択することも可能だが、各種プラグインを整備して開発環境を整える必要が ある。また、単体テスト時にWASが使用できない点を工夫する必要がある。 考慮事項 44 WAS V7 アプリケーション・デザインWorkshop Part2 開発ツールの選定についてです。 44 01. Webアプリケーション設計概要 Webアプリケーション設計概要 113. 開発管理/テスト製品の選定 提案 検討項目 113. 開発管理/テスト製品の選定 / 開発関連 検討内容 開発管理/テストを行う製品を選定する。 ・ソースコード管理 ・コードビルド ・問題管理 ・各種テスト 検討時期 提案フェーズ 製品選定があるため提案フェーズで実施。納品物ではないがオープンソースを使用するケースも多いため、101. オープンソース使用の検討を事前に行う必要がある。 選択候補 選択候補は「アプリケーション開発管理」セッションを参照。 選択基準 機能、操作性、情報の入手容易性、運用コスト、ツール間の連携、既存スキルの活用などと言った点を総合的に考 慮して製品選定を行う。ただし、ライセンス料金を重要視し、メジャーなオープンソースを選択する事もある。 考慮事項 詳細については、「アプリケーション開発管理」セッションを参照。 45 WAS V7 アプリケーション・デザインWorkshop Part2 開発管理、テスト製品の選定を行います。 詳細は、「アプリケーション開発管理」セッションを参照してください。 45 01. Webアプリケーション設計概要 Webアプリケーション設計概要 5.アーキテクチャー・デシジョンのポイント - SOフェーズ 46 WAS V7 アプリケーション・デザインWorkshop Part2 46 01. Webアプリケーション設計概要 Webアプリケーション設計概要 SOフェーズ : デシジョン・ポイント SO ソリューション・アウトライン (SO) お客様環境の調 お客様環境の調 査と分析 査と分析 202. Ajax利用パターンの検討 203. REST実装方式の検討 201. Ajax ツールの検討 204. プレゼンテーション層の実装技術を検討 ソリューション要 ソリューション要 件のアウトライン 件のアウトライン 作成 作成 214. Webサービスのインターオペラビリティー検討 205. 非同期処理の処理パターン、実装方式の確定 217. データアクセス方式の検討 206. パラレル処理の実装方式の確定 207. サービス実装方式の検討 アプリケーショ アプリケーショ ン・モデルのアウ ン・モデルのアウ トライン作成 トライン作成 アーキテク アーキテク チャー・モデルの チャー・モデルの アウトライン作成 アウトライン作成 208. ビジネスロジック実装方式の検討 209. インターフェース実装方式の検討 210. コントローラー実装方式の検討 211. 大容量ファイル転送方式の検討 212. Webサービスのトランザクション検討 213. Webサービスのセキュリティー検討 215. イベント処理の実装の設計 216. Javaバッチの設計 開発/ビルド/ 開発/ビルド/ デプロイのフ デプロイのフ ロー設計 ロー設計 47 218. アプリケーション更新/バージョニングに関する検討 219. 開発-デプロイのフローに関する検討 / 開発関連 WAS V7 アプリケーション・デザインWorkshop Part2 デシジョン・ポイントをSOフェーズでの作業項目にマッピングしたものです。 47 01. Webアプリケーション設計概要 Webアプリケーション設計概要 フレームワークの選定 SO フレームワーク 使用理由 : 開発生産性の向上と品質の統一 選定ポイント : ・標準を重視するか、実績のあるオープン技術か ・プロジェクトで必要とする機能 プレゼンテーション層 インテグレーション層 ビジネス層 プレゼンテーション ビジネスロジック O/Rマッピング ・リクエスト処理の受付 ・画面処理コントロール Spring Spring (Web) (Web) ・DBへのアクセス処理 Spring Spring (Core) (Core) *1 *1 JPA JPA EJB EJB 3.0 3.0 Struts Struts Hibernate Hibernate DI/AOP JSF JSF ・インスタンス管理、接続プール、参照の注入、 トランザクション制御 オールインワン 48 Spring Spring Framework Framework RDB JavaEE JavaEE iBATIS iBATIS *2 WACs WACs WAS V7 アプリケーション・デザインWorkshop Part2 SOフェーズでは、Webアプリケーション開発に使用するフレームワークを選定します。 多くのWebアプリケーションでは何らかのフレーワークを使用して開発されます。フレームワークを採 用した場合、そのフレームワークに合わせたアプリケーションの設計が必要になるので、フレーム ワークの選定はSOフェーズで行っておく必要があります。 プレゼンテーションフレームワークに関しては、「フロントエンド設計」セッションを参照してください。 DI/AOPフレームワーク、O/Rマッピングフレームワークの部分に関しては、以前実施されたWAS V7 Webアプリケーション・デザイン Workshop の「フレームワーク」セッションを参照してください。 *1 : Spring (Web) と Spring (Core)は、Spring Framework の構成要素の一機能です。 個々の部分の説明をするためにこの様な表記にしてあります。 *2: iBATISは開発が終了しています。2010/5にMyBatisが実質的な後継としてスタートしています。 48 01. Webアプリケーション設計概要 Webアプリケーション設計概要 WAS V7におけるフレームワーク選択指針 プレゼンテーション フレームワーク SO 標準重視 or オープン技術 - JSFは標準、Struts/Spring (Web)はオープンソース 成熟度・実績 - 実装の成熟度・実績では、(かなり)Strutsがリードしているが最近更新されていない StrutsとJSFの共存は可能。 O/Rマッピング フレームワーク 標準重視 or オープン技術 - JPAは標準、Hibernate/iBATISはオープンソース 成熟度・実績 - 実装の成熟度・実績では、(若干)Hibernateがリード - Hibernate 3.5ではJPA 2.0をサポートしている SQLの生成 - SQL文をより自由にチューニングしたい場合に、iBATISが向いている DI / AOP フレームワーク 標準重視 or オープン技術 - EJB3.0は標準、Springはオープンソース 成熟度・実績 - 実装の成熟度・実績では、Springがリード 分散システムの構築 -分散システムを構築する場合は、EJB 3.0 ・標準を重視するか、実績のあるオープン技術を選択するかを念頭に置き、 プロジェクト要件とフレームワークの特性を突き合わせる ・WAS V7では、Java標準であるJSF/EJB/JPAも十分な選択肢である 49 WAS V7 アプリケーション・デザインWorkshop Part2 WAS V7でのフレークワークの選択指針をまとめたページです。 WAS V7におけるフレームワーク の選択指針は、「標準を重視するか、実績のあるオープン技術を選択するかを念頭に置き、プロジェ クト要件とフレームワークの特性を突き合わせる」です。JDK1.4の時代と異なり、JavaEE 5である WAS V7ではJSF/EJB/JPAも十分な選択肢となります。アーキテクチャーだけを考慮すれば、オー プンソースよりも優れている標準のフレームワークもあります。また、今後は標準とオープンソースの フレームワークを組み合わせた事例も増えていくと思われます。 標準技術を採用した場合、WAS V7がその機能を実装しているので別途ソフトウェアを用意する必 要がありません。また、RADでも標準技術の開発支援機能が充実していますので、その点も考慮に 入れる必要があります。 49 01. Webアプリケーション設計概要 Webアプリケーション設計概要 【参考】 EJB 3.0 / Spring (Core)特徴比較 項目 EJB3.0 SO Spring (Core) サポート・開発 JCPで規定された標準。仕様は主要なJ2EEサーバー・ベンダーなど の関係者が合意。実装は各J2EEサーバー・ベンダーがサポート。 オープンな(Interface21 Inc)開発、管理。非標準 主目的 エンタープライズ・サービスに必要となる機能をコンテナとして提供す ることを目的とし、開発・テスト容易性にも対応 Dependency Injection (DI)をベースとしたアーキテクチャーによる、 軽量、開発/テスト容易なフレームワーク DBアクセス EJBの仕様として、JPAを使用 他のO/Rマッピング・ツールとの統合が容易(JPAもそのうちの一つ) トランザクション JTAトランザクション・マネージャーを使用 JTAトランザクション・マネージャーだけでなく、Spring独自や、O/R マッピング・ツールが提供するトランザクション・マネージャーも使用 可能 セキュリティ アノテーションまたはDDによる宣言的セキュリティーをサポート 宣言的セキュリティーをサポートするオープンソースのAcegiフレー ムワークとの統合をサポート リモートアクセス リモート・アクセスを主要な機能の一つとし、トランザクションやセキュリ ティー属性の伝播も可能 フレームワークとしては、もともとリモート・アクセスは重視していな い テスタビリティー ほとんどのコンポーネントは、コンテナ外でテスト可能 すべてのコンポーネントをコンテナ外でテスト可能 DI Java EE の特定の型 (EJBやデータソースなどのリソース) 任意のPOJOをInjection可能 AOP EJB (Beanまたはメソッド) のみがスコープ 任意のPOJOをスコープとできる 設定の特徴 アノテーションを多用(DD(XML)での設定も可) XMLの構成ファイルを多用(アノテーションでの設定も可)。 成熟度 まだ、実装は広くは使われていない 広く使われている 連携 ・MVCフレームからはEJB 3.0 APIを使用して呼び出し可能 ・O/Rマッピングフレームワーク呼び出しの制限はない。 ・Struts/JSFとの連携機能を提供。また、別の方法で構成を手作 業で行うことも可能。 ・JPA、Hibernate、iBATISを呼び出す機能を提供。 50 WAS V7 アプリケーション・デザインWorkshop Part2 EJB 3.0 / Spring (Core)の特徴比較です。 50 01. Webアプリケーション設計概要 Webアプリケーション設計概要 【参考】 JPA / Hibernate / iBATIS特徴比較 SO JPA (OpenJPA) Hibernate iBATIS 特徴 Hibernateの影響を強く受けた JCP標準 JavaEE5へ移行を予定している 場合JPAを選択する Open JPAは、JPAを実装した実 行環境でWAS V7のJPA実装の ベースとなっている 機能が豊富にあり、オブジェクトクエリ言 語の「HQL」や、シンプルで扱いやすい APIを提供 アノテーション機能がないJDK1.4環境を 利用している場合、Hibernateを選択する。 最新版は、JPA をサポートしているので JPAの実行環境としても使用可能。 SQL文をマッピングファイルに記述 2010年5月で開発終了宣言。実質的な 後継としてMyBatisを立上げ、今後はそ ちらを開発していく様であるので注意が 必要 メリット Hibernateに準じる Javaの標準 アノテーションでO/Rマッピングを 定義する 機能が豊富 Java開発者は、関連を意識しなくてもよ い SQLレスの開発ができる 永続化オブジェクトクラスのコードから、 O/Rマッピング定義を分離する SQLの機能が生かせる パフォーマンスチューニングなどの柔軟 な対応が可能 デメリッ ト Hibernateに準じる 実績が少ない 関連を多用するとパフォーマンスに影響 習得に時間が必要 マッピング・ファイルにSQL文を記述する ため、マッピング・ファイルの管理が煩雑 になる 情報が比較的少ない 項目 51 WAS V7 アプリケーション・デザインWorkshop Part2 JPA / Hibernate / iBATISの特徴比較です。 51 01. Webアプリケーション設計概要 Webアプリケーション設計概要 SO RESTful Webサービス 1/2 RESTful Webサービス – サーバーにあるリソース(情報の断片)に対してオペレーションを実行する(リソース指向) • 各リソースは、ユニークなURL により識別 • ステートレス(アプリケーション状態を持っていない) • HTTPを利用した統一インターフェース – 処理命令はHTTPメソッドを使用 – 処理結果はHTTPステータスコードを使用 – 状態の遷移をハイパーメディアで表現 – HTMLだけでなくXMLやJSON、RSS/Atomも使用 リソース: Aさんの社員情報 URL : http://xxx.com/employee/A GET http://xxx.com/employee/A Aさんの 情報を取得 HTTP JSON Aさんの情報 リクエスター PUT http://xxx.com/employee/A XML Aさんの 情報を更新 HTTP リクエスター 52 Aさんの 社員情報 Aさんの情報 プロバイダー WAS V7 アプリケーション・デザインWorkshop Part2 RESTful Webサービスとは、RESTの考え方に基づいたWebサービスです。SOAP Webサービス と違いURLでリソース(情報の断片)を表し、HTTPのメソッドを使用してリソースを操作します。デー タフォーマットはJSONが使用されることが多いですが、XMLやRSS/Atomも使用する事があります。 52 01. Webアプリケーション設計概要 Webアプリケーション設計概要 SO RESTful Webサービス 2/2 リクエスト レスポンス – HTTPメソッドを使用 – HTTPステータスコードを使用 • よく使用されるHTTPステータスコード GET リソースの取得 POST リソースの追加 PUT リソースの更新 DELETE リソースの削除 HEAD リソースのメタデータ取得 • その他のメソッドもあるがあまり使用されな い • POST は要注意 – 全てをPOSTで処理しない – データが2重追加される可能性がある GET /employee/A HTTP/1.1 HTTP1.1 200 OK リクエスター 53 プロバイダー 200 正常終了 201 リソースの新規作成に成功 202 要求は受理されたが、完了していな い 204 処理は完了したが、返すデータはな い 303 他のURLを参照 304 リソースは未更新 307 一時的に他のURLに移動している 400 リクエストが不正である 401 認証が必要である 404 リソースが見つからない 500 サーバー内部エラー 503 サービスが一時的に利用不可 WAS V7 アプリケーション・デザインWorkshop Part2 RESTful Webサービスでは、HTTPメソッドを使用してリソースの操作を行います。実行結果は HTTPステータスコードで表します。今までのWebアプリケーションでは、エラー時にステータスコー ド200でリターンして画面にエラーを表示するような使用方法もありましたが、RESTful Webサービス ではエラー時は必ず500等のエラー内容に合ったステータスコードを返します。 53 01. Webアプリケーション設計概要 Webアプリケーション設計概要 SO RESTful Webサービス適用箇所 プレゼンテーション層 Ajaxからのアクセス Ajaxを使用した場合、サー バーへのアクセスは通常 RESTで行う。Ajax側は RESTful Webサービスが どこで実装されてるのか意 識しなくてもよい。 RESTful Webサービス REST クライアント サーブレットの様にブラウザーからのプレゼンテーション層の受付に 使用する。実装にはJAX-RS等を用いる。サーブレットと同じ様にビジ ネス層の呼びだしコントロールを行う。 RESTful Webサービスは、基本ステートレスである。アプリケーション はHTTPセッションを使用しないデザイン(毎回送信する/DBに保存 する)にする必要がある。 インテグレーション層 RESTful Webサービス ユーザー SOAPの変わりにRESTでサービスを公開する。 プレゼンテーション層、外部システムからアクセスされる。 SOAPと比較してシンプルに構築できるが、WS-*の様な応用性がない JAX-RSを使用して実装する。 別の選択候補 : SOAP Webサービス リソース層 DB with RESTful Webサービス 外部システム DBの機能を使用してデータをRESTful Webサービスとして公開する。 データの公開のみでビジネスロジックはない。 外部システム、Ajaxからアクセスされる事を想定する。 データを直接公開するようなケースで使用可能。 WXSを使用して実装する。 考慮事項 : セキュリティー・ポリシー 54 WAS V7 アプリケーション・デザインWorkshop Part2 RESTful Webサービスの適用箇所には3箇所あります。 プレゼンテーション層・・・ブラウザー(Ajax)からのアクセスされる インテグレーション層・・・様々なクライアントからアクセスされる リソース層・・・様々なクライアントからアクセスされる プレゼンテーション層/インテグレーション層でのRESTful Webサービスについては、「フロントエン ド設計」「サービス設計」セッションを参照してください。 DBでのRESTful Webサービスについては、「データ設計」セッションを参照してください。 54 01. Webアプリケーション設計概要 Webアプリケーション設計概要 Ajax + RESTful Webサービス SO Webアプリケーション・デザインの変化 – Ajaxでブラウザー側にプレゼンテーション層/ビジネス層の機能も実装可能 • サーバー側の機能はRESTful Webサービスで提供 • ビジネスロジックまで実装した場合、DBだけあれば実現できるアプリケーションもある – 考慮事項 • 現時点では、Ajax(JavaScript)の開発環境(特にデバッグ)が整備されていない • JavaScriptのスキル保持者が必要 Ajax 画面表示コントロール 画面表示コントロール フォーマット変換 フォーマット変換 入力データチェック 入力データチェック ブラウザー ビジネスロジック ビジネスロジック ワークフロー ワークフロー メッセージング メッセージング バッチ バッチ RESTful Webサービス トランザクション管理 トランザクション管理 DB + ビジネスロジック ビジネスロジック DB with RESTful Webサービス 考慮点 : スキル、開発環境 55 WAS V7 アプリケーション・デザインWorkshop Part2 AjaxとRESTful Webサービスを使用することによって、ブラウザー側で今まで実装できなかったプレ ゼンテーション層、ビジネス層の機能も実装できるによりなります。インテグレーション層、QoS層の 多くの機能は、Ajax側で実装するのは困難です。 ただし現時点では、現実的にはスキルや開発環境のハードルがあるので、どの程度Ajax側で実装 するのかは慎重に判断する必要があります。 55 01. Webアプリケーション設計概要 Webアプリケーション設計概要 フロントエンド設計のデシジョン・ポイント 1/2 SO 検討項目 201. Ajax ツールの検討 / プレゼンテーション層 検討内容 Ajaxツールに何を使用するかを検討する AjaxはJavaScriptで実装するが、リッチなGUI作成には大量のコードが必要である。また、ブラウザー間の差異を補 完する必要もあるので、開発効率を上げるためにAjaxのツール(ライブラリー群)を利用するか検討する。 ①Dojo ②その他のツール(jQueryなど) IBM製品として提供される(サポートがある)ツールが必要な場合は、①Dojoを選択する。また、GUIパーツだけでなく、 多くの機能が必要な場合も①Dojoを選択する。オープンソースが使用可能で、目的に合致したツールがある場合は、 ②その他のツールを選択する。その他のツールの代表例としては、jQueryがある。 検討項目 202. Ajax利用パターンの検討 / プレゼンテーション層 検討内容 Ajaxを利用する場合、データ変換/画面表示管理の様な項目をAjax側で実装するのか、サーバー側モジュールで 実装するのかを検討する。 ①Ajax側だけで実装する ②サーバー側モジュールでも実装する この選択により各コンポーネントの役割分担が変わる。また、フレームワークの選択に影響を及ぼすケースもある。 検討項目 203. REST実装方式の検討 / プレゼンテーション層 検討内容 AjaxはRESTで処理を行う。その処理を受け付けるサーバー側モジュールの実装方式を検討する。 ①JAX-RS ②Servletを利用 ③RPCアダプター 通常のケースでは、①JAX-RSを採用する。既存モジュールをそのまま利用したい等の特別な理由がある場合は、他 の方法を選択する。 56 WAS V7 アプリケーション・デザインWorkshop Part2 フロントエンド設計のSOフェーズでのデシジョン・ポイントです。 詳細は、「フロントエンド設計」のセッションを参照してください。 56 01. Webアプリケーション設計概要 Webアプリケーション設計概要 フロントエンド設計のデシジョン・ポイント 2/2 SO 検討項目 204. プレゼンテーション層の実装技術を検討 / プレゼンテーション層 検討内容 プレゼンテーション層の実装技術の検討を行う。201. Ajax ツールの検討 でDojo以外を選択した場合は、選択肢③ がそのツールに変わる。 ①フレームワーク( Struts / Spring MVC / JSF) ②JSP ③Dojo これらの実装技術は択一ではなく、組みあせて使用する事が可能。コンポーネント化などの開発効率を考慮して検討 する。①フレームワークの種類は択一なので、どのフレームワークを使用するか選択する必要がある。選択したフ レームワークによっては、使用できるDIコンテナー・フレーワークに制約がある可能性がある。 57 WAS V7 アプリケーション・デザインWorkshop Part2 フロントエンド設計のSOフェーズでのデシジョン・ポイントです。 詳細は、「フロントエンド設計」のセッションを参照してください。 57 01. Webアプリケーション設計概要 Webアプリケーション設計概要 サービス設計のデシジョン・ポイント 1/4 SO 検討項目 205. 非同期処理の処理パターン、実装方式の確定 / インテグレーション層 検討内容 非同期処理を使用する場合は、処理パターン及び実装方式を確定する。 処理パターン ・ポーリング / コールバック / 一方向 実装方式 ・JAX-WS、MDB、AsyncBean など 処理内容により処理パターンを選定し、処理パターンから実装方式を選定する。 検討項目 206. パラレル処理の実装方式の確定 / インテグレーション層 検討内容 パラレル処理を使用する場合は、実装方式を確定する。 ①JAX-WS ②AsyncBean ③JMS ④BPEL システム構築容易性、パフォーマンス、開発容易性など複数の検討項目を考慮して選定する。 検討項目 207. サービス実装方式の検討 / インテグレーション層 検討内容 SOAで使用されるサービスの実装方式を検討する。 ①SOAP ②REST 複雑なトランザクションやセキュリティー等で高度な処理が必要な場合は①SOAPを使用する。シンプル性を重視す るなら②RESTを採用する。 58 WAS V7 アプリケーション・デザインWorkshop Part2 サービス設計のSOフェーズでのデシジョン・ポイントです。 詳細は、「サービス設計」のセッションを参照してください。 58 01. Webアプリケーション設計概要 Webアプリケーション設計概要 サービス設計のデシジョン・ポイント 2/4 検討項目 208. ビジネスロジック実装方式の検討 / ビジネス層 検討内容 ビジネスロジックの実装方式を検討する。 ①JavaBeans ②EJB 検討項目 209. インターフェース定義の検討 / インテグレーション層 検討内容 ビジネスロジックを疎結合にするインターフェースを検討する。 ①WSDL ②Javaインターフェース 検討項目 210. コントローラー実装方式の検討 / インテグレーション層 検討内容 ビジネスロジックを呼び出しや、トランザクション制御等を行うコントローラーの実装方式を検討する。 ①Framework ②BPEL ③WS-BA ④Message Flow 59 SO WAS V7 アプリケーション・デザインWorkshop Part2 サービス設計のSOフェーズでのデシジョン・ポイントです。 詳細は、「サービス設計」のセッションを参照してください。 59 01. Webアプリケーション設計概要 Webアプリケーション設計概要 サービス設計のデシジョン・ポイント 3/4 SO 検討項目 211. 大容量ファイル転送方式の検討 / インテグレーション層 検討内容 Webサービスで大容量ファイルを転送する必要がある場合は、その転送方式を検討する。詳細な方式はWebサービ スの方式により変わるので、207. サービス実装方式の検討 を事前に検討する必要がある。 ①リンク形式 ②サービスとは別経由で転送する ③Webサービスで転送 SOAPを使用する場合は、base64Binary、SwA、MTOM方式から選択する必要がある。 検討項目 212. Webサービスのトランザクション検討 / インテグレーション層 検討内容 Webサービスのトランザクションに関して、以下を検討する。 ・トランザクションの範囲 ・WS-Transaction システム構成全体を見ながら、業務処理を実現できるトランザクションの設計を行う。Webサービス間でトランザク ション処理を行う場合は、WS-Transactionを使用する。 検討項目 213. Webサービスのセキュリティー検討 / インテグレーション層 検討内容 Webサービスのセキュリティーに関して、以下を検討する。 ・WS-Security end-to-endのセキュリティーが必要な場合は、 WS-Securityが必要となる。 60 WAS V7 アプリケーション・デザインWorkshop Part2 サービス設計のSOフェーズでのデシジョン・ポイントです。 詳細は、「サービス設計」のセッションを参照してください。 60 01. Webアプリケーション設計概要 Webアプリケーション設計概要 サービス設計のデシジョン・ポイント 4/4 SO 検討項目 214. Webサービスのインターオペラビリティー検討 / インテグレーション層 検討内容 Webサービスのインターオペラビリティーに関して検討を行う。 ・WS-I Basic Profile 1.1への準拠 ・WSDLの標準化 異機種環境でのSOAP Webサービスはインターオペラビリティーを考慮する必要がある。その場合、上記項目を実 施する必要がある。WSDLの標準化で行う内容については、「サービス設計」のセッションを参照。 61 WAS V7 アプリケーション・デザインWorkshop Part2 サービス設計のSOフェーズでのデシジョン・ポイントです。 詳細は、「サービス設計」のセッションを参照してください。 61 01. Webアプリケーション設計概要 Webアプリケーション設計概要 イベント & Javaバッチ 設計のデシジョン・ポイント 検討項目 215. イベント処理の実装の設計 / インテグレーション層 検討内容 イベント処理を使用する場合、実装方式を確定し設計を行う。 ①JMS(SOAP/JMS) ②WS-Notification ③Webメッセージング ④BEP(Business Event Processing) 要件を詳細に検討し、イベントの処理パターンを検討してから、実装方式を選定後設計を実施する。 検討項目 216. Javaバッチの設計 / インテグレーション層 検討内容 Javaバッチを使用する場合、以下の検討を行う。 ①障害対応 ②突き抜けの防止(オフラインバッチ) 62 SO WAS V7 アプリケーション・デザインWorkshop Part2 イベント & JavaバッチのSOフェーズでのデシジョン・ポイントです。 詳細は、「イベント & Javaバッチ設計」のセッションを参照してください。 62 01. Webアプリケーション設計概要 Webアプリケーション設計概要 データアクセス設計/アプリケーション開発管理のデシジョン・ポイント SO 検討項目 217. データアクセス方式の検討 / インテグレーション層 検討内容 提案フェーズ105. DB方式と製品の検討で採用するDBを確定してから、データアクセス方式を検討する必要がある。 ①JDBC ②O/Rマッパー ③KVS 独自API ④RESTful Webサービス 検討項目 218. アプリケーション更新/バージョニングに関する検討 / 開発関連 検討内容 アプリケーション更新/バージョニングに関して以下の選択肢を検討します。通常、アプリケーション更新は運用チー ム担当ですが、アプリケーションのパッケージングにも影響してくるので共同で検討します。 ①WAS NDのロールアウト・アップデート ②WVE(WebSphere Virtual Enterprise)のアトミック・ロールアウト ③OSGi 検討項目 219. 開発-デプロイのフローに関する検討 / 開発関連 検討内容 開発、ビルド、デプロイのフローをどの様にするのかを検討する。 各ツールを使用して実際にどの様な手順で開発し、最後にデプロイするまでどの様に開発を進めていくかのフローを 設計する必要がある。 63 WAS V7 アプリケーション・デザインWorkshop Part2 データアクセス設計/アプリケーション開発管理のSOフェーズでのデシジョン・ポイントです。 詳細は、「データアクセス設計」/ 「アプリケーション開発管理」のセッションを参照してください。 63 01. Webアプリケーション設計概要 Webアプリケーション設計概要 【参考】 その他のデシジョン・ポイント SO デシジョン・ポイント No. カテゴリー 220 ソリューション/製品構成に関する最終確定 詳細要件を調査し、提案フェーズで作成した構成に問題ないかを確認し最終確定する 全体 221 ログ出力方針と実装の検討 取得するログの種類/出力ポイント等の方針を検討し、実装方式(Log4j、Logging API)を検討する。 全体 222 HTTPセッションに関する検討 HTTPセッション使用の有無、実現方法 (Cookie / URL リライト)、使用するメモリー量、パーシスタント方式を検討する。 プレゼンテーション層 223 監査の実装ポイントに関する検討 セキュリティー担当者による監査の方針が決定したら、監査ログを出力するポイント及び出力内容の検討を行う QoS層 224 認証方式の検討 Basic認証/Form認証 QoS層 225 アクセス制御の実装方針検討 JavaEEによるロールベース/独自実装 QoS層 226 エラー処理に関する検討 エラーハンドリングのポイント、エラーログ、独自例外クラスなどのエラー処理に関する検討を行う。 QoS層 227 トランザクションに関する検討 UOWや2PC使用の有無などを検討する。 QoS層 228 入力チェック箇所と内容を設計 入力チェックを実行する箇所と、そこでどのようなチェックを行うのかを検討する。 全体 229 大量検索結果分割の検討 大量の検索結果が想定される場合、ブラウザーからDBの間のどの箇所で検索結果を分割するのかを検討する。 全体 230 共通処理の検討 システム全体の共通処理(例:監査ログ出力)とすべき項目があるか検討し、その実装箇所や方法を検討する。 全体 64 WAS V7 アプリケーション・デザインWorkshop Part2 SOフェーズの注意して欲しいその他のデシジョン・ポイントです。 64 01. Webアプリケーション設計概要 Webアプリケーション設計概要 まとめ 提案フェーズ • 機能/非機能要件からソフトウェア選定を行う – 影響の大きいデシジョン・ポイント • • • • • • 処理方式 SOA データストア イベント処理 バッチ セキュリティー SOフェーズ • 詳細な実装方式の検討し設計を行う – フレームワーク選定 • 標準を重視するか、実績のあるオープン技術を採用するか検討 – AjaxとRESTful Webサービス • 適用箇所によっては従来とWebアプリケーションのデザインが変わってくることがある ので、早期に検討 その他の詳細なデシジョン・ポイントは後続の各セッションで 65 WAS V7 アプリケーション・デザインWorkshop Part2 提案フェーズでは、機能/非機能要件からソフトウェア選定を行います。その際、システム全体に影 響する大きなデシジョン・ポイントとして上記があります。 SOフェーズでは、詳細な実装方式を検討し設計を行います。 詳細なデシジョン・ポイントについては、後続の各セッションを参照してください。 65