「サービス仮想化」というアプローチ大きなシステム障害が報告される度に話題となるアプリケーション品質維持/向上。その度にテストの重要性が再認識されます。今回はテスト環境構築における課題に着目し、解決策の1つである「サービス仮想化」について述べたいと思います。サービス仮想化が求められる背景サービス仮想化が必要とされる背景には、「求められる対応スピード」「環境の複雑さ」があると考えられます。【求められる対応スピード】グローバルな市場における競争力確保とグループ経営の強化は多くの大手企業にとって重要な戦略課題となっています。そのような中でIT部門に求められているのはシステムでの貢献。それも個々の事業の差別化要因やスピードを阻害することなく行わなければなりません。システム開発において、すべてのサービス(コンポーネント)の開発を行うことは、時間的制約の中では難しく、必然的に既存のシステムとの連携(ラッピングして再利用)やSaaSなど、出来合いのサービス(コンポーネント)の利用が多くなってきます。前述したように、企業アプリケーション開発では、一部機能をSaaSのような外部サービスを利用したり、メインフレームや基幹系システムとの連携、パートナーのアプリケーションとの連携など、連携するシステムの種類や数が多く、テスト環境の準備が困難になっている現状が多く見られます(図1)。図1に示されるように、環境が複雑でリリース・サイクルも短くなるため、並行開発を余儀なくされます。接続先のシステムやコンポーネントが未完成、接続時間に制限がある、SaaS上にあるため課金される、などの理由から思うようなテスト環境の構築は容易ではありません。そのため必然的に接続先に影響されないテスト環境の準備方法や、呼び出しに対して応答を返すだけの擬似的なものが求められてきます。これがサービス仮想化登場の背景と考えています。スタブとサービス仮想化ここまで聞くと、スタブを思い浮かべる方もいらっしゃるかもしれません。サービス仮想化はこのスタブの適用範囲をさらに拡げ、効率化したものとお考えください。ここでスタブについての説明をします。「JSTQB用語集」には、スタブは以下のように説明されています。呼び出される(特定目的のための最小限度の)コンポーネント。スタブがないと、実物ができるまで、開発やテストを待たねばならない。スタブは、最終的には、呼び出されるコンポーネントで置き換える。大規模なシステム開発では、プログラムの開発状況が機能ごとに異なってくることがよくあり、虫食い状態のままで機能検証ができないことがあります。そのような場合、擬似的な動作をするプログラムを作成して、先行しているプログラムの検証をすることがあり、この擬似的な動作をするプログラムをスタブと呼びます。スタブ開発とサービス仮想化では何が違うのでしょうか。スタブ開発とサービス仮想化の違いは、以下の3点にあると考えます。(1)必要とされる開発スキルスタブ開発には高度な開発スキルが必要とされるため、スタブ開発専用の会社が存在したり、スタブ開発を別工数で見積もることもあります。サービス仮想化は、専用ツールを利用することでGUIで簡単にサービスを作成できます。そのためQA担当者、またはテスト担当者がコーディング力を必要とせずに開発が可能です。(2)網羅する範囲スタブの開発にも相応の工数を要することから、スタブは正常系に特化することが多く、異常系については対応する範囲が限定的になることがあります。応答も一定の値に限定されていることがほとんどです。変化等、網羅するテスト・ケースの範囲が拡がります。(3)メンテナンス性スタブは一度作ったら使い捨ての場合が多く、仕様変更があった場合は対応できないケースも多く見受けられます。サービス仮想化は作成の容易さから度重なる仕様変更にも対応できます。このようにスタブと比べて、より実環境に近いテスト環境を提供することができ、またツールを使うことでサービス仮想化も簡単に実現可能なため、よりスピーディ、かつ品質の高いサービスの提供が期待できます。Technologies、Hewlett-Packard、IBM、Parasoftなどが挙げられます。いずれのツールもシステム間の通信を実環境からキャプチャしたり、実環境がない場合は、WSDLファイルなどの定義ファイルから動作を設定します。対応プロトコルはHTTP/HTTPS、SOAP、REST、MQなど様々で、ツールによっては、独自プロトコルに対応できるものもあります(図2)。導入効果サービス仮想化を用いることで以下の効果を得ることができると考えます。◎インフラコストの節約テスト環境構築のために本番環境同等のハードウェアを用意したり、サーバ仮想化で環境を用意する場合に比べてテスト環境インフラにかかるコストを節約することができます。◎テストの網羅性アップ外部接続の制約によって制限されていたテストが実施できるようになり、またスタブに比べて実施できるテスト・ケース(正常/異常)が増えるため、テストの網羅性アップが期待できます。他システムとの連携を考慮せず、テスト環境の構築を迅速化できるため、従来より早くテストに取り掛かることができ、顧客に対して迅速に新サービスの提供を行うことができるようになります(図3)。海外ではアジャイル開発を取り入れ、システム更新頻度の高い企業、システム連携が多いシステム開発をしている企業などが、先行してサービス仮想化を採用しています。具体的には金融、テレコム、流通業界です。日本ではまだ浸透していないのが現状でしょう。品質の重要性は昔も今も、またこれからも変わることはありません。開発手法や連携するシステムの数、種類によってサービス仮想化の適用効果は変わりますが、開発期間と品質がトレードオフにならないよう、今後も最重要課題の1つとして品質を保証できるような取り組みがなされるべきだと考えます。現状、日本におけるエンタープライズ開発では、ツールによってテスト効率やテスト品質を改善し、システム品質を向上させる取り組みが海外と比較して遅れていると言っても過言ではありません。そのため、サービス仮想化の適用はまだ一部の分野にとどまっていますが、開発スタイルの変化によって徐々に拡大すると捉えています。弊社でも、サービス仮想化をはじめとして、テスト自動化、テスト・マネジメントなどテスト分野での支援を今後もさらに強化していきたいと考えています。※本稿は弊社が信頼できると判断した情報源に基づいて執筆していますがその情報の正確性、完全性を保証するものではありません。本稿に記載された、弊社意見、予測などは本稿作成時点における弊社の判断であり今後予告なく変更されることがあります。※記載した製品名および社名は、各社の商標または登録商標です。テストツールの紹介、サポート、技術支援を担当。年間何十件もの負荷テストを支援し、その経験を他のお客様にも伝えるべく、セミナーや技術情報配信を行っている。最後までご覧いただきありがとうございました。本記事でご紹介した製品・サービスに関するコンテンツをご用意しています。この記事の他にも、IT技術情報に関する執筆記事を多数公開しておりますのでぜひご覧ください。ページトップへ戻る関連している記事システム運用管理/テスト効率化2017.12.06運用部隊にどのような影響が?「コンテナ」のメリットと3つの対策2016年10月、コンテナ技術はWindows対応したことで、エンタープライズ環境での更なる利用の促進が見込まれます。本コラムでは、コンテナ導入時のメリットや運用業務の変更・注意点について考察します。システム運用管理/テスト効率化2017.08.15新たなテクノロジーへの取り組み『AI』を活用した運用部門のトランスフォーメーション新たなテクノロジーを活用してビジネスモデルを創出する期待感が高まり、「守りのIT投資先」と言われ続けた運用部門でも、新たな取り組みが求められています。本稿では、ITSMを担う運用部門での「人工知能(AI)」の活用と、同部門が持つ「情報(運用データ)」に焦点を当てます。システム運用管理/テスト効率化2015.01.23【徹底比較】商用ツールにも引けを取らない6つのOSS監視ツールを機能で比較オープンソースソフトウェアベースのツールを利用したインフラ運用基盤の構築が広まり、特に運用管理の分野においては、監視ツールの機能、製品数がともに充実している。本記事では、主だったOSS監視ツール6製品について、4つの機能で比較します。