エンタープライズ・ソリューション
近今、さまざまなシステムが私達の社会生活を取り巻くようになり、システム化/IT化が進んでいます。システム化が進む一方で、比例するようにシステムの膨大化/複雑化も進み、多くの課題を残しているシステムも少なくありません。
システム運用時の課題や問題点も様々ですが、共通して言える点としては、
- システム設計、アーキテクチャ構成に不備がある
- 複雑な構成ゆえに、拡張性・保守性・可用性の面でシステムの円滑運用ができない。
- 保守要員の人材不足
- 技術者の知識/経験 不足(システムの全体像を掴みきれていない)
などが挙げられると思います。
「システムの複雑さ」に関してはアーキテクチャ/システム設計時に十分な検討をすることで、本番運用のトラブルを軽減させることができます。また、万一トラブルが発生しても、保守担当者・運用担当者の技術レベルに関係なく、誰でも柔軟に対応できる構成にしておく必要があります。
実はシステムが単純な構成である程、
- 「トラブルが少ない」(可用性)
- 「修正・機能追加がしやすい」(保守性・拡張性)
- 「分かりやすい」(誰が見ても理解できるシステム構成)
- 「移送・リリースがしやすい」(開発者・運用担当者)
といった特徴があり、
「規模の大小問わず正常に機能するシステムは、単純かつ簡単な仕組みで出来ている」
と言えます。
今回は、この4つの特徴を実現するため、MicrosoftがVisual Studioでシステム開発する際の1つの指針としてまとめているPattern & Practicesの中から「エンタープライズ ソリューション」「.NETアプリケーション アーキテクチャ」を中心に導入・構築の概要を説明します。
サービス指向アーキテクチャ「SOA」
サービス指向アーキテクチャ「SOA」とは、大規模なシステムやアプリケーションの各機能を「サービス」として定義する手法です。近年、インターネットを始めとするネットワークテクノロジーが普及し、システム・ソリューションを構築するための手法やアプローチも発展しました。
「サービス」と聞くと、設計者・開発者の方は「XML Webサービス」をイメージする方も多いと思いますが、本稿ではこれらを含めて「サービス」と定義します。
「サービス化」の利用用途は、他システム・サブシステム間同士の「データ連携」、ユーザーへの「データ提供」など様々です。特に「SOA」を使用したシステム同士のデータ連携は、連携先のプラットフォームや環境構成に依存することなく、より柔軟なデータ連携を可能にします。
近年では、この「SOA」を使った大規模システムが多く見受けられ、一時期よりも注目度は下がっているものの、今後も様々な種類の「サービス」が多数構築されると予測されています。「場所」「環境」「時間」を問うことなく、欲しいデータが欲しい時に入手可能であることが、SOA最大の利点です。また、利便性の面でも、非常に注目されているアーキテクチャの1つと言えるでしょう。
SOAソリューション導入を成功させるには、各サービスの定義を明確する「サービス設計」を上流工程時に行う必要があります。「サービス」を設計する上で最も大切なことは、「見やすいデータ(インターフェイス)」かつ「リアルタイムで公開できる情報であるか」という点です。サービスによってはデータの公開だけではなく、更新・削除・登録処理等を実行するサービスもありますので、一目見ただけでサービスの種類を判別できるインターフェイス構成を設計する必要があります。