1.ニーズの把握や非機能要求の見える化が課題に
ICTの進展に伴ってビジネスにおけるシステム基盤の重要性が高まる中、システム構築に対するニーズはますます多様化・複雑化しています。最適なシステム基盤を構築するには、さまざまなニーズを的確に把握するとともに、応答速度などの性能や耐障害性といった非機能要求についても明確にし、システム開発に反映させることが不可欠です。
一方で、1990年代に始まったオープン化の流れによって、システム化の対象範囲は飛躍的に広がっており、サーバー仮想化など新たな技術も相次いで登場しています。そうした先進技術を活用しつつ、サーバーやストレージ、ネットワーク、ミドルウェアを組み合わせて最高のパフォーマンスを得るためには、注意を要する事項も多く、システム基盤の設計・構築に関する専門的かつ詳細な知識が求められています。
NTTデータグループで適用を進めている「パターンベースの開発手法」は、そうしたシステム基盤の開発に際して、要件定義の策定などでお客さまとの円滑なやりとりを可能にするコミュニケーションツールとして機能するとともに、多様化するニーズの把握や非機能要求の見える化にも寄与するものです。さらに、エンジニアのスキル向上や開発現場の情報共有に役立つことも期待されています。
図:インフラデザインパターンや処理方式パターンをまとめた冊子
2.パターンベースによるシステム基盤の開発手法
パターンベースの開発手法とは、具体的には、システム基盤の設計ノウハウを抽象化・図案化(パターン化)したパターンカタログを用いて、要件定義の策定やシステム構築に活用しようという手法。ソフトウェア開発においては、設計ノウハウを蓄積・再利用しやすいようカタログ化した「デザインパターン」が以前から活用されています。NTTデータでは、そうしたパターン化がシステム基盤の開発においても可能で、ノウハウの蓄積や再利用に有効であると判断。これまで手がけてきた豊富なシステム構築実績を基にパターンを抽出して、開発の効率化や技術者のスキル向上に役立てたいと考えました。
過去の導入実績からノウハウを得ようとする場合、従来の導入事例などでは、導入した製品やソリューションに注目してしまい、製品の陳腐化とともに事例も陳腐化しがちです。それに対して、プロジェクトを通じて得られるノウハウをパターンとして抽出することにより、陳腐化を防ぎ実績あるノウハウを汎用的に使えるようになります。
パターンベースの開発手法に用いるパターンには、大別して次の2種類があります。非機能要求の見える化に貢献する基盤設計方式のカタログ集「インフラデザインパターン」、システムのアプリケーション基盤に関する処理方式をまとめた「処理方式パターン」です。「インフラデザインパターン」は、2011年10月時点で合計206のパターンがありますが、NTTデータグループで開発を手がける多くのプロジェクトにおいて、要件定義の策定への適用をほぼ網羅。さらに最新技術の登場に合わせてパターンを追加するなど、現在も内容を拡充しています。
以下では、「インフラデザインパターン」「処理方式パターン」の2つについて詳しくご紹介します。
3.要件のあいまいさを排除する「インフラデザインパターン」
例えば、システム基盤の信頼性といっても、障害発生時でも停止しない高信頼なシステム環境が必須なのか、コスト優先で手動切替によるバックアップ対策があれば十分なのか、具体的にどこまでの信頼性を確保すべきかをシステム設計の段階で詳細に把握する必要があります。そうした要件を明確にし、開発現場でのあいまいさを排除するのに役立つのが、基盤設計方式のカタログ集である「インフラデザインパターン」です。
インフラデザインパターンは、「非機能要求対策」と「インフラ要素」の2つの項目に分かれています。非機能要求対策については、信頼性対策や情報漏えい・改ざん対策、外部脅威対策、性能確保、過負荷対策などの項目が、一方のインフラ要素については、ストレージインフラや移行方式、試験・開発環境、データセンター、クラウンド・コンピューティングなどの項目があります。各パターンはシステム概要を分かりやすく紹介した概念図に加えて、技術視点およびビジネス視点からの比較、導入時の注意事項や関連情報などを記載しており、システム設計の効率化に貢献します。
ここで、信頼性対策を例に、インフラデザインパターンを実際にどのように活用するのか紹介しましょう。「いざというときに備えてWebサーバーの信頼性を確保したい」という要望があるとします。それに応える信頼性対策(Web・APサーバー)のパターンとして、ロードバランサを活用して予備機への切替を行う〈標準志向〉や手動で予備機に切り替える〈コスト志向〉等の方式をパターンとして提示。それぞれのシステム概要を記した図版に加えて、切替に要する時間や拡張性といった技術的視点から導入メリット・デメリットを分かりやすく比較します。さらに、システム停止時のサービスに与える影響の有無や業務復旧までの許容時間の長短といったビジネス的な視点からも、各方式を比較できます。このようにシステムの信頼性という把握しにくい要件に対して、具体的にどこまでの信頼性が要求されているのか、パターンの参照を通じてシステム要件が明確になることが期待できます。
図:「インフラデザインパターン 信頼性対策(Web・APサーバー)」(抜粋)
4.モデル化と事例で過去の経験を生かす「処理方式パターン」
システム基盤の開発に際して、過去の同様な開発プロジェクトで実際にどのような処理方式を用いていたのか参考にすることは、開発の効率化の観点からも非常に有効といえます。そこで、過去の開発実績をもとにアプリケーション基盤に関する処理方式を記載しているのが「処理方式パターン」のドキュメント群です。NTTデータにおける過去の開発プロジェクトを検証し、多く採られてきた処理方式をパターン化した「モデル集」と、処理方式の組み合わせを整理した「事例集」で構成されています。
まずモデル集では、基本的な処理方式を「オンラインリアルタイム」「機能連携」「ファイル・データベース共有」「ファイル転送」などの8パターンに分類。さらにこれらを組み合わせた処理方式を「リモートバッチ」「メッセージ交換」などのパターンに分類して、「概念モデル」「論理モデル」「物理モデル」をそれぞれ記載しています。
モデル集を参考にすることで、システム要件に近い処理方式を選定できます。また、処理方式の名称やそれが意味するアーキテクチャは、同じ企業内でもプロジェクトによってまちまちであることが多く、開発側とお客さまとの間はもとより、開発スタッフ間でも認識が異なりがちです。そこで処理方式パターンの概念モデルを用いて意識合わせを行えば、意識のずれをシステム開発の早い段階で解消することができます。
一方の事例集は、導入の背景や現行システムの課題などの「システム概要」、およびシステム全体の概要アーキテクチャ図と処理方式の対応関係を示した「システム全体処理概要」を整理したものです。お客さまからの要求や制約事項、処理方式に落としこむ過程など、処理方式決定の経緯や、処理方式設計の工夫についても明記。なお、各事例は「SOA」や「レガシーマイグレーション」といったキーワードから、該当するシステムを見つけられるようになっています。
図:処理方式パターンの例(オンラインリアルタイム・サーバ側ビジネスロジック配置型のアーキテクチャ)
5.Hadoopなど先進技術もいち早くパターン化
インフラデザインパターンや処理方式パターンは現在、NTTデータグループ内にて共有されており、2010年3月末でダウンロード数は累計約2万件に達しています。2010年度は約400件のプロジェクトに適用され、工期短縮やコスト削減、要件定義の精度向上によるリスク回避などに効果があることを確認しています。利用者からは「システム基盤の構成として、具体的にどんな選択肢があるのかよく分かった」「要件定義の妥当性をチェックするのに役立った」といった意見が寄せられています。
こうしたプロジェクトへの適用に加えて、システム要員の人材育成にもインフラデザインパターンや処理方式パターンを利用する機会が増えています。実際にNTTデータでは社内研修にインフラデザインパターンや処理方式パターンを導入して、新人教育などに役立てています。
インフラデザインパターンや処理方式パターンは、Hadoopのような先進技術についてもいち早くパターンとして取り込んでおり、エンジニアのスキル向上を促すとともに、迅速な対応が求められる開発現場のニーズに応えています。また、システム基盤の発注者要求を見える化する「非機能要求グレード表」にも対応しており、非機能要件を実現するための適切な設計方式を容易に選択できるようになっています。さらに、NTTデータのシステム基盤ソリューション「PRORIZE」や総合開発ソリューション「TERASOLUNA」などとも連携、検討漏れを防いで要件定義から構築までシステム基盤開発をトータルに支援します。
最近ではグローバル規模での開発プロジェクトも増加していることから、海外スタッフとの意識合わせやノウハウの蓄積や活用にも、インフラデザインパターンや処理方式パターンを活用しています。今後はパターンや事例の拡充に努めつつ、NTTデータグループの開発現場へのさらなる普及拡大を図るとともに、企業の枠を超えた業界標準となるようなパターン化を目指すことで、IT業界全体のシステム開発のレベルアップにも貢献したいと思います。開発にスピードや効率化が求められる中、過去の実績からノウハウをパターンとして抽出して開発に有効に活用する「パターンベースの開発手法」を導入する意義は、これからますます高まっていくものと考えています。
図:非機能グレード表との連携