ソフトウェア エンジニアリングにおいて、サービス仮想化またはサービス仮想化は、API駆動型アプリケーション、クラウドベース アプリケーション、サービス指向アーキテクチャなどの異種コンポーネント ベースのアプリケーション内の特定のコンポーネントの動作をエミュレートする方法です。これは、ソフトウェア開発チームとQA/テストチームが、テスト対象アプリケーション (AUT) を実行するために必要なが、開発やテストの目的では利用できない、またはアクセスが困難な依存システム コンポーネントにアクセスできるようにするために使用されます。依存コンポーネントの動作が「仮想化」されているため、実際のライブ コンポーネントにアクセスせずにテストと開発を進めることができます。ベンダー、業界アナリスト、業界出版物では、サービス仮想化はモックとは異なると認識されています。[1] [2] API シミュレーション ツールの比較については、ここを参照してください。
概要
サービス仮想化は、ソフトウェア コンポーネントの動作をエミュレートして、開発チームとテスト チームの依存関係の制約を取り除きます。このような制約は、テスト対象のアプリケーションに接続されたコンポーネントが次の場合に、複雑で相互依存的な環境で発生します。
- まだ完了していません
- まだ進化中
- 第三者またはパートナーによって管理されている
- 限られた人数のみ、または都合の悪い時間にのみテストが可能です
- テスト環境でのプロビジョニングや構成が難しい
- さまざまなテストデータ設定やその他の要件を持つ異なるチームによる同時アクセスに必要
- 負荷テストやパフォーマンステストに使用するには制限があり、コストがかかる
「サービス仮想化」という用語は、この技術が当初Webサービスの仮想化に重点を置いていたことを反映していますが、サービス仮想化は、サービス、データベース、メインフレーム、ESB、および共通のメッセージングプロトコルを使用して通信するその他のコンポーネントなど、複合アプリケーションのあらゆる側面にまで及びます。 [3] [4] [5]同様のツールには、APIシミュレーター、APIモックツール、Over The Wireテストダブルなどがあります。
サービス仮想化は、開発者やテスト担当者がエンドツーエンドのトランザクションを完了するために実行する必要がある特定の依存コンポーネントの動作のみをエミュレートします。システム全体を仮想化するのではなく、開発およびテスト タスクの実行に不可欠な依存動作の特定のスライスのみを仮想化します。これにより、開発者やテスト担当者が実際のサービスが完了してすぐに使用できるようになるまで待たずに、必要なものを取得できる十分なアプリケーション ロジックが提供されます。たとえば、データベース全体を仮想化する (および関連するすべてのテスト データ管理を実行し、テスト セッションごとにデータベースをセットアップする) 代わりに、アプリケーションがデータベースとどのようにやり取りするかを監視し、関連するデータベースの動作 (データベースに渡されるSQLクエリ、返される対応する結果セットなど) をエミュレートします。[6] [7]
応用
サービス仮想化には、テスト対象のアプリケーションを実行するために必要な実際のコンポーネントの動作をシミュレートする「仮想アセット」の作成と展開が含まれますが、開発やテストの目的ではアクセスが困難または不可能です。
仮想アセットは、要求をリッスンし、適切なパフォーマンスで適切な応答を返すことで、依存コンポーネントの代わりを務めます。データベースの場合、SQL ステートメントをリッスンしてからデータ ソース行を返すことが考えられます。Web サービスの場合、HTTP、JMS、またはMQ経由でXMLメッセージをリッスンしてから別の XML メッセージを返すことが考えられます。仮想アセットの機能とパフォーマンスは、依存コンポーネントの実際の機能/パフォーマンスを反映する場合もあれば、例外的な状況 (極端な負荷やエラー状態など) をシミュレートして、その状況でテスト対象のアプリケーションがどのように応答するかを判断する場合もあります。
仮想資産は通常、次の方法で作成されます。
- テスト対象アプリケーション (AUT) からシステムを実行する際のコンポーネント間のライブ通信を記録する
- コンポーネント間の通信履歴を示すログを提供する
- サービスインターフェース仕様( WSDLなど)の分析
- さまざまなインターフェースコントロールとデータソース値を使用して手動で動作を定義する
その後、特定のデータ、機能、応答時間を表すようにさらに構成されます。
仮想資産は、ローカルまたはクラウド(パブリックまたはプライベート)に展開されます。開発/テスト環境を依存コンポーネントの代わりに仮想資産を使用するように構成すると、開発者やテスト担当者は、依存コンポーネントが完成したりすぐにアクセスできるようになるまで待たずに、作業中のアプリケーションを実行できます。[3] [4] [7]
業界アナリストは、サービス仮想化は「依存ソフトウェア」を理由に統合テストを「省略」する豊富な経験を持ち、適度に洗練されたテストハーネスを備えたIT部門に最適であると報告しています。[8]
スタブとモッキングとの関係
この記事の冒頭で説明したテスト環境のアクセス制約を回避する別の方法は、チーム メンバーが依存リソースの代わりとなるメソッド スタブまたはモック オブジェクトを開発することです。この方法の欠点は、2000 年代初頭にサービス指向アーキテクチャの台頭とともに明らかになりました。[9]多数の依存サービスに依存する複合アプリケーションの急増と、2001 年の Agile Manifesto の発行後のAgile ソフトウェア開発の台頭により、開発者やテスト担当者が、現代のエンタープライズ アプリケーション開発の開発およびテスト タスクを完了するために必要なスタブまたはモックの数、範囲、複雑さを手動で開発することがますます困難になりました。[10]
スタブからサービス仮想化への進化の第一歩は、2002 年以降、SOA テスト ツールにパッケージ化されたテクノロジでした。[11] サービス仮想化の最も初期の実装は、複合アプリケーションをより効率的にテストできるように、単純なスタブのようなエミュレーションの開発プロセスを自動化するように設計されました。[12]エンタープライズ システムがますます複雑化および分散化し続けるにつれて、ソフトウェア ツール ベンダーはスタブから環境重視のサービス仮想化に重点を移しました。[2]スタブは、スタブの手動開発と管理によって完了できますが、「サービス仮想化」として知られるようになったものは、利用可能な市販の (COTS)サービス仮想化テクノロジの 1 つを「サービス仮想化資産」の開発と展開のプラットフォームとして使用することで完了します。[10]
アジャイルとDevOps
アジャイルソフトウェア開発とDevOpsの人気の高まり[13]により、この方法で作業するコミュニティにサービス仮想化を提供するための新しいツールセットの需要が生まれました。[14]継続的デリバリーや、メインフレームやモノリス開発からより分散化されたマイクロサービスベースのアーキテクチャへの移行などのプラクティスは、サービス仮想化の機能とよく適合します。アジャイルおよびDevOpsチームは、蓄積された肥大化が少なく、煩雑なライセンス制限のない軽量ツールでの作業を好む傾向があります。[15]
参照
参考文献
- ^ モッキングの代替としてのサービス仮想化、Jonathan Allen 著、eBizQ 2013 年 4 月 22 日
- ^ ab サービス仮想化とは何か、ジェームズ・デイ著、Medium 2021年6月18日
- ^ ab テスト環境の管理、Liz McMillan 著、Cloud Computing Journal、2011 年 12 月
- ^ ab アプリケーション動作の仮想化、エリザベス・ホワイト著、クラウド・コンピューティング・ジャーナル、2011 年 12 月
- ^ 開発とテストのためのデータベース仮想化、Wayne Ariola 著、ST & QA Magazine、2012 年 3 月
- ^ SOA と仮想化の紹介、Wayback Machineに 2011-11-22 にアーカイブ、John Michelsen、WebServices.org、2007 年 8 月
- ^ ab 次世代のテスト環境管理、Wayne Ariola 著、Virtualization Journal、2011 年 7 月 12 日
- ^ Parasoft と「サービス仮想化」テスト: 良いアイデア、Wayne Kernochan 著、ソフトウェア IT アナリストの考え、2013 年 2 月 22 日
- ^ サービス指向環境でのテスト、Ed Morris 他著、Software Engineering Institute、2010 年 3 月
- ^ ab サービス仮想化は、組織がテストからビジネス価値を実現するのに役立っています。Chandranshu Singh、ovum、2014 年 3 月 31 日
- ^ Parasoft の Web サービス テスト ツールは開発を支援するべき、Theresa Lanowitz 著、Gartner、2002 年 5 月 1 日
- ^ SOA 仮想化が現実に、Rich Seeley 著、SearchSOA、2007 年 11 月 28 日
- ^ アジャイル & DevOps Google トレンド
- ^ 次世代サービス仮想化フォーラム、2017 年 9 月 13 日
- ^ Thought Works テクノロジーレーダー: 大規模エンタープライズソリューション
