JP7134937B2 - 情報処理装置、プログラムおよび情報処理システム - Google Patents

情報処理装置、プログラムおよび情報処理システム Download PDF

Info

Publication number
JP7134937B2
JP7134937B2 JP2019197533A JP2019197533A JP7134937B2 JP 7134937 B2 JP7134937 B2 JP 7134937B2 JP 2019197533 A JP2019197533 A JP 2019197533A JP 2019197533 A JP2019197533 A JP 2019197533A JP 7134937 B2 JP7134937 B2 JP 7134937B2
Authority
JP
Japan
Prior art keywords
test
information processing
emulator
computer
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019197533A
Other languages
English (en)
Other versions
JP2021071872A (ja
Inventor
智則 前川
弓子 坂井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2019197533A priority Critical patent/JP7134937B2/ja
Priority to US17/007,666 priority patent/US11635982B2/en
Publication of JP2021071872A publication Critical patent/JP2021071872A/ja
Application granted granted Critical
Publication of JP7134937B2 publication Critical patent/JP7134937B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Computing Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)

Description

本発明の実施形態は、情報処理装置、プログラムおよび情報処理システムに関する。
蓄電池、太陽電池などの分散電源を使い、地域のグリッドを構築する取り組みが進められている。また、電気自動車の台数も増えてきている。これらの新技術を使ったインフラを運用するためには、インフラの監視、分析、制御を行うIoT(Internet of Things)サービスの開発が必要である。
IoTサービスは、例えば、数万台~数百万台以上のIoTデバイスに関連した処理を実行することが求められる。ただし、IoTサービスの開発段階および検証段階において、充分な数のIoTデバイスを確保できるとは限らない。対象のIoTデバイスが市場で入手可能となる前から、IoTサービスの開発または検証を進めなくてはならない場合もありうる。
特開2019‐109852号公報
AWS Device Farm,Web,URL:https://aws.amazon.com/jp/device-farm/
本発明の実施形態は、IoTサービスの開発および検証を支援する情報処理装置、プログラムおよび情報処理システムを提供する。
本発明の実施形態としての情報処理装置は、試験シナリオで規定されている通信モデルに基づきエミュレータにデータを送信させ、サービスに前記データを受信させるテストを計算機プラットフォーム上で実行するために必要となる計算資源量を計算し、前記計算機プラットフォーム内の計算機における前記エミュレータの割り当てを決定するリソース計算部と、前記計算機プラットフォームにアクセスし、前記計算資源量を確保する第1制御部と、前記計算機に割り当てられた前記エミュレータの設定を行う第2制御部とを備える。
テストサーバの構成の例を概略的に示したブロック図。 計算機プラットフォームの例を概略的に示したブロック図。 通信モデルデータの例を示したテーブル。 試験シナリオの例を示したテーブル。 テストサーバによるテスト開始時までの処理の例を示したフローチャート。 クラウドサービスの利用コストを最適化する設定を求める処理の例を示したフローチャート。 グラウド利用プランと実行可能なエミュレータ数の例を示すテーブル。 変形例によるテストサーバの構成を概略的に示したブロック図。 変形例によるテストサーバが実行する処理の例を示したフローチャート。
以下、図面を参照しながら、本発明の実施形態について説明する。また、図面において同一の構成要素は、同じ番号を付し、説明は、適宜省略する。
はじめに、本実施形態に関連した用語について説明する。
IoTデバイスとは、通信網を介して、他の装置にセンサの計測値または装置の設定値などのデータを送信する機能を備えた装置のことをいう。IoTデバイスの例としては、蓄電池、スマートメーター、太陽電池、発電設備、送配電設備、流量計、電気自動車、エレベータ、鉄道車両、建設機械、各種の車載機器、ドローン、工場の設備、医療機器、空調機器、スマートフォン、各種のウェアラブルデバイス、ゲーム機などが挙げられる。ただし、通信網を介して、データを送信する機能を備えているのであれば、IoTデバイスはどのような種類の装置であってもよい。通信網で使われる通信媒体は、無線、有線またはこれらの組み合わせであってもよい。また、通信網でどのような種類の通信プロトコルを使ってもよい。
IoTサービスとは、通信網を介して複数のIoTデバイスとの間でデータ通信を行い、通信されたデータに基づき、ユーザにサービスを提供するソフトウェアのことをいう。例えば、IoTサービスは、通信網に接続されたサーバ上で実行される。IoTサービスが実行する処理の内容およびIoTサービスがユーザに提供するサービスの内容については、特に問わない。例えば、複数のIoTデバイスから収集したデータを分析し、ユーザにIoTデバイスの稼働状況またはIoTデバイスに関する予測結果を提供するIoTサービスを構築することができる。また、IoTサービスは、複数のIoTデバイスまたは複数のIoTデバイスを含むシステムの制御または管理を行うものであってもよい。
また、コンピュータネットワークを介し、ユーザに複数の計算機上の実行環境を提供するサービスをクラウドサービスと呼ぶものとする。計算機は、物理計算機に限らず、仮想計算機(VM)または、コンテナであってもよい。また、必要に応じて、クラウドサービスが構築されている情報処理システムを、計算機プラットフォームと呼ぶものとする。クラウドサービス内では、計算機間のデータ通信を実現するコンピュータネットワークが提供されている。コンピュータネットワークは、物理ネットワークを使うものであってもよいし、仮想的なもの(仮想ネットワーク)であってもよい。
本実施形態に係る情報処理装置、プログラムおよび情報処理システムは、複数のIoTデバイスをクラウドサービス上でエミュレートし、IoTサービスの開発および評価を支援する。特に、クラウドサービス上で構築されるIoTサービスのテスト環境を制御する情報処理装置を、テストサーバと呼ぶ。
図1のブロック図は、本実施形態によるテストサーバの構成を概略的に示している。図1のテストサーバ1(情報処理装置)は、通信回路3と、記憶部10と、処理回路20とを備えている。処理回路20、記憶部10、通信回路3は、バス2を介して互いに電気的に接続されている。処理回路20は、演算処理を実行し、テストサーバの各構成要素を制御する。処理回路20は、例えば、命令またはプログラムを実行することが可能なCPU(中央処理装置)である。なお、処理回路20は、GPU(Graphical Processing Unit)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などのハードウェア回路を含んでいてもよい。処理回路20は、内部の構成要素として、リソース計算部21と、第1制御部22と、第2制御部23とを含む。これらの構成要素の詳細については、後述する。
記憶部10は、プログラムおよび各種のデータを保存可能な記憶領域を提供する。記憶部10は、例えば、DRAMなどの揮発性メモリ、NANDフラッシュメモリなどの不揮発性メモリ、ハードディスクまたはSSD(Solid State Drive)などのストレージ、またはこれらの組み合わせのいずれであってもよい。記憶部10には、試験データ11および通信モデルデータ12が保存されている。なお、記憶部10には、OS(Operating System)ならびに、リソース計算部21、第2制御部23、第1制御部22のそれぞれの機能を実現するプログラムが保存されていてもよい。この場合、処理回路20上でプログラムを実行することによって、テストサーバ1は、各構成要素の機能を提供することができる。
テストサーバ1は、通信回路3を介して、ネットワーク4に接続されている。通信回路3は、例えば、TCP/IP、UDPなどのプロトコルによる通信を行うNIC(Network Interface Card)である。テストサーバ1は、通信回路3を介して、ネットワーク4に接続された他の装置とデータ通信を行うことができる。
ネットワーク4には、情報端末5が接続されている。情報端末5は、例えば、ノートパソコン、デスクトップコンピュータ、スマートフォン、タブレットなどのCPUと、データ通信回路とを備えた装置である。ユーザは、情報端末5を介して、テストサーバ1を操作し、テストサーバの提供する各種の機能を利用することができる。例えば、ユーザは、テストサーバ1が提供するWebインタフェースまたは、API(Application Programming Interface)を使ってテストサーバ1を操作することができる。
なお、テストサーバ1は、物理計算機に限らない。例えば、テストサーバ1は、仮想計算機(VM:Virtual Machine)またはコンテナであってもよい。テストサーバ1が仮想計算機である場合、テストサーバ1の処理回路20内のそれぞれの構成要素の機能は、仮想CPUによって実現される。また、記憶部10として、仮想ストレージが使われ、通信回路3として、仮想NICが使われる。仮想NICは、仮想ネットワークを介して、(仮想計算機またはコンテナなど仮想的なインスタンスを含む)その他の計算機とデータ通信を行う。仮想計算機またはコンテナが使われていても、テストサーバ1は、物理計算機と同等の機能を提供することができる。仮想計算機またはコンテナを実行するための計算機プラットフォームの例については、下記で説明する。
図2のブロック図は、計算機プラットフォームの例を概略的に示している。図2では、複数の物理計算機201と、複数の物理ストレージ202と、物理ネットワーク203とを含む情報処理システム上に計算機プラットフォーム100が構築されている。なお、複数の物理計算機201は、物理ネットワーク203を介して互いに接続されているものとする。また、複数の物理ストレージ202は、例えば、NAS(Network Area Storage)または、SAN(Storage Area Network)として使用可能なストレージ装置である。それぞれの物理計算機201は、物理ストレージ202上の記憶領域にアクセスすることができる。
なお、図2に示した情報処理システムの構成は、一例にしかすぎない。例えば、最小構成として、1台の物理計算機201を使って構築された計算機プラットフォーム100がありうる。すなわち、計算機プラットフォーム100に含まれる物理計算機201の台数については、問わない。また、物理計算機201の内部ストレージを使う場合、物理ストレージ202を省略することができる。図2には、ひとつの物理ネットワーク203が示されているが、ストレージネットワークなど、用途別に複数の物理ネットワークが構築されていてもよい。
計算機プラットフォーム100は、ユーザに仮想計算機(VM:Virtual Machine)、コンテナ、仮想的なネットワーク、仮想的なストレージなどを含む仮想的な計算資源を提供する。計算機プラットフォーム100は、例えば、商用またはオープンソースのハイパバイザを複数の物理計算機201にインストールすることによって構築することができる。ハイパバイザの種類としては、ホスト型のパイパバイザ、ベアメタル型のハイパバイザなどがあるが、どのような種類のハイパバイザを使ってもよい。また、物理計算機201または仮想計算機にコンテナ型仮想化ソフトウェアをインストールすれば、計算機プラットフォーム100でコンテナを提供することが可能となる。
また、ハイパバイザに加えて、クラウドコンピューティングソフトウェアをインストールすることによって、IaaS(Infrastructure as a Service)型または、PaaS(Platform as a Service)型のサービスを提供してもよい。商用またはオープンソースなど各種のクラウドコンピューティングソフトウェアを使うことが可能である。計算機プラットフォーム100は、パブリッククラウドとして構築/運用されているものであってもよい。また、計算機プラットフォーム100は、プライベートクラウドとして構築/運用されているものであってもよい。このように、計算機プラットフォーム100を構築/運用する主体については、問わない。
計算機プラットフォーム100は、管理サーバ101と、仮想計算機102と、仮想ネットワーク104と、仮想計算機105とを含む。管理サーバ101は、ユーザが計算機プラットフォーム100を利用するためのインタフェースを提供する。管理サーバ101は、例えば、いずれかの物理計算機201で実行されるサーバアプリケーションである。管理サーバ101は、例えば、複数の物理計算機201で動作するハイパバイザの管理を行う管理サーバである。また、クラウドコンピューティングソフトウェアによる計算機プラットフォーム100の構築が行われている場合、管理サーバ101は、ユーザがクラウドサービスの利用時にアクセスするウェブサイトまたはAPIを提供するサーバであってもよい。管理サーバ101は、各種のAPI、CLI、HTML、KVM(Key Board Video Mouse)などのインタフェースを介して、ユーザが計算資源に係る操作または仮想計算機上で動作するOSおよびアプリケーションの操作を行う機能を提供してもよい。なお、提供されるインタフェースの種類に応じて、複数の管理サーバ101が設けられていてもよい。また、管理サーバの少なくとも一部の機能が仮想計算機上で動作していてもよい。
計算資源に係る操作の例としては、仮想計算機の作成、仮想計算機の起動、仮想計算機のシャットダウン、仮想計算機の構成変更、仮想計算機のスナップショットの作成、スナップショットの複製、特定のスナップショットへの復元、仮想計算機の物理計算機間の移動(マイグレーション)、仮想ネットワークの作成、仮想ネットワークの構成変更、仮想ストレージの作成、仮想ストレージの構成変更、クラウドサービスの利用プランの指定などが挙げられる。例えば、CPU数、メモリサイズ、ストレージサイズ、仮想NICなどの計算資源を指定した上で、仮想計算機の作成を行うことが可能である。
なお、ユーザは、管理サーバ101を介さずに、直接、仮想計算機102および105にアクセスしてもよい。この場合、ユーザは、一般の物理計算機にアクセスする場合と同様、SSH(Secure Shell)などのプロトコル、KVM,ウェブインタフェースによって仮想計算機102および105で動作するOSおよびアプリケーションを操作することができる。
仮想計算機102では、IoTデバイスのデータ通信時の挙動をエミュレートするエミュレータ103が動作する。図2に示したように、ひとつの仮想計算機102上で複数のエミュレータ103を動作させてもよい。エミュレータ103は、OS上で動作するアプリケーションとして実装されていてもよいし、OS自体を仮想化したコンテナ内のアプリケーションであってもよい。例えば、仮想計算機102のOSに、コンテナ型仮想化ソフトウェアをインストールすると、仮想計算機102上に、複数のコンテナを動作させることができる。図2のように、複数の仮想計算機102を作成し、計算機プラットフォーム100上で動作させることが可能である。仮想計算機102の数を増やすと、より多くの台数のIoTデバイスをエミュレートすることができるようになる。
仮想計算機105上では、サービスアプリ106が動作する。サービスアプリ106は、SUT(Service Under Test)に相当するIoTサービスを提供するアプリケーションである。サービスアプリ106がOS自体を仮想化したコンテナ内のアプリケーションであってもよい点は、上述のエミュレータ103と同様である。
サービスアプリ106は、単一のアプリケーションではなく、複数のアプリケーションのグループであってもよい。例えば、IoTサービスの機能ごとに別個のアプリケーションが用意されていてもよい。また、実運用時のスケールアウトまたは分散されたシステム構成を想定し、同一の機能を実行するアプリケーションを複数個用意してもよい。図2に示したように、同一の仮想計算機105上で、複数のサービスアプリ106が動作していてもよい。また、複数の仮想計算機105を用意し、それぞれの仮想計算機105上でサービスアプリ106を動作させてもよい。
図2では、サービスアプリ106が仮想計算機上で動作しているが、サービスアプリ106は、必ず仮想計算機上で動作するものでなくてもよい。例えば、実運用時にサービスアプリ106が物理計算機上で動作することが想定される場合には、サービスアプリ106を直接いずれかの物理計算機201上で動作させることも可能である。
図2では、ハイパバイザ上に複数の仮想計算機(VM)が実行される計算機プラットフォームを例示した。ただし、計算機プラットフォームでは、代わりに、複数の物理計算機201にコンテナ型仮想化ソフトウェアをインストールし、複数のコンテナをユーザに提供してもよい。また、計算機プラットフォームは、VMとコンテナの両方をユーザに提供してもよい。この場合、VM上で動作するエミュレータ103と、コンテナ上で動作するエミュレータ103が混在していてもよい。
複数の仮想計算機102および仮想計算機105は、仮想ネットワーク104を介して、互いにデータ通信を行うことができる。したがって、エミュレータ103は、仮想ネットワーク104を介して、サービスアプリ106とデータ通信を行う。また、管理サーバ101も、仮想ネットワーク104を介して、それぞれの仮想計算機の制御を行ってもよい。仮想ネットワーク104は、仮想ブリッジを備えていてもよい。仮想ブリッジは、仮想ネットワーク104とネットワーク4とをまたがるデータ通信を実現するものであってもよい。また、仮想ブリッジは、仮想ネットワーク104と物理ネットワーク203とをまたがる通信を実現するものであってもよい。
なお、仮想ネットワーク104は、さらにデータ通信の帯域、伝送遅延、伝送揺らぎ、伝送エラー率の少なくともいずれかを含む通信品質を調整する機能を備えていてもよい。この場合、ユーザは、管理サーバ101を介して、仮想ネットワーク104における通信品質を制御することができる。なお、通信品質の調整をエミュレータ103側(通信モデル側)で行えるようにしてもよい。
次に、図1および図2を参照しながら、テストサーバ1の詳細について説明する。
通信モデルデータ12は、エミュレータ103がエミュレートするIoTデバイスのデータ通信時の挙動(通信モデル)を定義するデータと、当該IoTデバイスのエミュレーションに必要な計算資源に関する情報とを含む。図3のテーブルT1は、通信モデルデータ12の例を示している。通信モデルデータ12は、例えば、センサの計測値に相当するデータサンプルのサイズ、データサンプルがとる値、データサンプルの計算式、データサンプルがサービスアプリ106に送信されるタイミング、またはこれらの組み合わせを含むことができる。
通信モデルは、数理モデルに基づいて定義されていてもよい。例えば、アーラン分布に基づいて作成される待ち行列モデルを使い、通信モデルを定義することができる。通信モデルは、エミュレータ103に、動的にデータサンプルを生成させたり、データサンプルの送信タイミングを決定させたりするものであってもよい。また、エミュレータ103が送信するデータは、あらかじめ定義されたものであってもよい。例えば、通信モデルは、IoTデバイスの実測データまたは実測データを加工したデータを含んでいてもよい。
また、通信モデルデータ12は、異常系通信モデルを含んでいてもよい。異常系通信モデルは、例えば、IoTデバイスでの異常発生をエミュレートする。また、異常系通信モデルは、IoTデバイスとIoTサービスを提供するサーバ間の通信網における異常発生をエミュレートするものであってもよい。エミュレータ103は、IoTデバイスおよびIoTサービスが正常に動作しているときにおける、正常系通信モデルと、異常系通信モデルを切り替えながら使用してもよい。例えば、エミュレータ103は、ランダムな確率で異常系通信モデルに基づくデータ通信を行うことができる。また、通信モデルデータ12は、IoTサービスのリアルタイム性能をテストするための通信モデルを含んでいてもよい。
試験データ11は、計算機プラットフォーム100によって実行される試験シナリオを定義するデータである。試験データ11は、例えば、サービスアプリ106に対して実行されるテスト内容およびテストの実行手順を含む。試験シナリオは、正常系のテストだけでなく、異常系のテストや、サービスアプリ106のリアルタイム性能を確認するためのテストを含んでいてもよい。図4のテーブルT2は、試験データ11の例を示している。試験データ11は、試験シナリオにおいて使用される少なくともひとつの通信モデルを指定してもよい。例えば、試験データ11内に、いずれかの通信モデルデータ12に相当するファイル名または、ポインタが含まれていてもよい。
第1制御部22は、管理サーバ101にアクセスし、テストで使用する計算資源を制御する。第2制御部23は、複数のエミュレータ103を制御する。リソース計算部21は、テストに必要な計算資源を計算し、エミュレータ103が実行される条件を決定する。なお、計算資源は、例えば、CPU数、メモリサイズ、ストレージサイズ、仮想NICの設定などを含むものとする。なお、第2制御部23、第1制御部22およびリソース計算部21によって実行される処理の詳細については、後述する。
例えば、本実施形態に係る情報処理装置(テストサーバ)は、リソース計算部と、第1制御部と、第2制御部とを備えている。リソース計算部は、試験シナリオで規定されている通信モデルに基づきエミュレータにデータを送信させ、サービスにデータを受信させるテストを計算機プラットフォーム上で実行するために必要となる計算資源量を計算し、計算機プラットフォーム内の計算機におけるエミュレータの割り当てを決定する。第1制御部は、計算機プラットフォームにアクセスし、当該計算資源量を確保する。第2制御部は、計算機に割り当てられたエミュレータの設定を行う。
また、情報処理装置(テストサーバ)で実行されるプログラムは、試験シナリオで規定されている通信モデルに基づきエミュレータにデータを送信させ、サービスにデータを受信させるテストを計算機プラットフォーム上で実行するために必要となる計算資源量を計算するステップと、計算機プラットフォーム内の計算機におけるエミュレータの割り当てを決定するステップと、計算機プラットフォームにアクセスし、計算資源量を確保するステップと、計算機に割り当てられたエミュレータの設定を行うステップとを含んでいてもよい。
また、本実施形態による情報処理システムは、第1計算機と、第2計算機と、管理サーバと、テストサーバとを備えていてもよい。第1計算機は、試験シナリオで規定されている通信モデルに基づきデータを送信するエミュレータを実行する。第2計算機は、データを受信するサービスを実行する。管理サーバは、第1計算機への計算資源の割り当てを制御する。テストサーバは、試験シナリオに基づくテストを実行させるために必要となる計算資源量を計算し、第1計算機におけるエミュレータの割り当てを決定し、管理サーバに計算資源量の計算資源を確保させ、エミュレータの設定を行う。図2の仮想計算機102は、第1計算機の一例である。また、図2の仮想計算機105は、第2計算機の一例である。
ここで、計算資源量は、CPU数、CPU時間、プロセス数、メモリサイズ、ストレージサイズ、ネットワークの設定、ネットワーク帯域の少なくともいずれかを含んでいてもよい。また、少なくともいずれかの前記通信モデルは、待ち行列モデルに基づくものであってもよい。また、通信モデルは、エミュレータが送信するデータの通信品質を規定するものであってもよい。この場合、通信品質は、データ通信の帯域、伝送遅延、伝送揺らぎ、伝送エラー率の少なくともいずれかを含むことができる。
エミュレータは、例えば、IoTデバイスのデータ通信時における挙動をエミュレートする。サービスは、例えば、IoTデバイスに関連した処理を実行するIoTサービスである。例えば、プログラムをCPU上で実行することによって、エミュレータおよびサービスの機能を実現することができる。なお、計算機プラットフォーム内の少なくともいずれかの計算機は、仮想計算機またはコンテナであってもよい。
また、計算機プラットフォームは、仮想計算機またはコンテナによるデータ通信を実現する仮想ネットワークを含んでいてもよい。この場合、第1制御部は、通信モデルに基づき、仮想ネットワークのデータ通信の帯域、伝送遅延、伝送揺らぎ、伝送エラー率の少なくともいずれかを制御してもよい。
図5のフローチャートは、テストサーバ1によるテスト開始時までの処理の例を示している。以下では、図5のフローチャートを参照しながら、処理を説明する。
はじめに、第1制御部22は、管理サーバ101より計算資源に係る情報を取得する(ステップS101)。例えば、第1制御部22は、ステップS101でサービスアプリ106が実行される仮想計算機105に割り当てられた計算資源、エミュレータ103が実行される仮想計算機102に割り当てられた計算資源、仮想ネットワーク104の構成などの情報を取得することができる。
次に、第2制御部23は、サービスアプリ106の情報を取得する(ステップS102)。例えば、第2制御部23は、テスト対象であるサービスアプリ106を特定する情報、サービスアプリ106で利用可能となっているAPIの種類、APIの仕様、APIを使うために必要なネットワーク設定などを取得することができる。ネットワーク設定の例としては、使用する通信プロトコル、使用するポート番号などが挙げられる。第2制御部23がサービスアプリ106の情報を取得する方法については、問わない。例えば、サービスアプリ106が動作する仮想計算機105よりファイルをダウンロードしてもよいし、サービスアプリ106が提供するAPIを介して情報を取得してもよい。
そして、ユーザは、実行する試験シナリオを選択する(ステップS103)。ユーザは、試験データ11に含まれている複数の試験シナリオより実行する試験シナリオを選択することができる。例えば、ユーザは、情報端末5を介して、テストサーバ1にアクセスし、実行する試験シナリオを指定してもよい。また、ステップS103で、テストサーバ1が自動的に実行する試験シナリオを決定してもよい。例えば、複数のテストが所定の順序で実行される場合、ステップS103では、自動的に実行される試験シナリオが決定される。試験シナリオは、例えば、テスト中にサービスアプリ106とデータ通信を行うエミュレータ103の情報や、使用される通信モデルデータ12などの情報を含んでいる。試験シナリオは、例えば、テーブルT2(図4)のシナリオIDおよびテーブルT1(図3)のモデルIDの組み合わせによって特定される。
次に、リソース計算部21は、選択された試験シナリオの実行に必要な計算機プラットフォーム100の計算資源量を計算し、仮想計算機102におけるエミュレータ103の割り当てを決定する(ステップS104)。計算資源量の例としては、エミュレータ103を実行する仮想計算機102の数、仮想計算機102に割り当てられるCPU数、メモリサイズまたはストレージサイズ、仮想計算機102と仮想計算機105との間のデータ通信を実現する仮想ネットワーク104の構成などが挙げられる。ここでは、エミュレータ103が、仮想計算機102上のコンテナである場合を例にステップS104の処理を説明するが、エミュレータ103は、仮想計算機102上のアプリケーションなど、異なる形で実行されていてもよい。
リソース計算部21がステップS104で決定するエミュレータ103の割り当ての例としては、それぞれの仮想計算機102で実行されるエミュレータ103の数、それぞれの仮想計算機102で実行されるエミュレータ103の組み合わせ、仮想計算機102内の計算リソースの使用量などが挙げられる。
また、リソース計算部21は、ステップS104であわせてエミュレータ103で使用するネットワーク設定を決定してもよい。ネットワーク設定は、例えば、サービスアプリ106とのデータ通信時における通信品質、エミュレータ103が送信するデータのサイズ、エミュレータ103が送信するデータの値およびエミュレータ103がデータを送信するタイミングを含んでいてもよい。通信品質は、データ通信の帯域、伝送遅延、伝送揺らぎ、伝送エラー率の少なくともいずれかを含むことができる。例えば、リソース計算部21は、通信モデルのオプション、パラメータなどを調整してもよい。なお、ステップS103において、使用される通信モデルが特定されている場合には、ステップS104で当該処理をスキップしてもよい。
ステップS104が実行された後、第1制御部22は、計算機プラットフォーム100における計算資源の設定を行う(ステップS105)。例えば、第1制御部22は、管理サーバ101にアクセスし、エミュレータ103が実行される仮想計算機102に割り当てられる計算資源、サービスアプリ106が実行される仮想計算機105に割り当てられる計算資源、仮想ネットワーク104の設定の少なくともいずれかを変更することができる。なお、計算資源の割り当ての変更が不要である場合、ステップS105の少なくとも一部の処理をスキップしてもよい。例えば、テストモデルに対応付けられた通信モデルに調整を行わず、デフォルトの設定の通信モデルを使ってもよい。
次に、第2制御部23は、ステップS104の結果に基づきエミュレータ103の設定を行う(ステップS106)。エミュレータ103がコンテナ内のアプリケーションである場合、第2制御部23は、ひとつの仮想計算機102上で実行されるコンテナの数と、コンテナが使うことができる仮想計算機102内の計算資源を設定することができる。第2制御部23は、例えば、コンテナが生成することができるファイルサイズの上限、コンテナが生成することができるプロセス数の上限、コンテナが使用することができるメモリサイズの上限、コンテナが使用することができるCPU時間の上限、コンテナが使用することができるCPU数の上限などを設定することができる。また、第2制御部23は、ステップS106でエミュレータ103が使用する通信モデルの設定を行ってもよい。例えば、第2制御部23は、仮想計算機102のコンテナからアクセス可能なストレージ領域に、通信モデルデータ12を配置する。そして、コンテナ内のエミュレータ103は、通信モデルデータ12を取得することができる。
そして、第2制御部23は、エミュレータ103を実行し、サービスアプリ106のテストを開始する(ステップS107)。試験シナリオによって、テストの実行期間や使われる仮想計算機の数は、大きく異なる。図5のフローチャートに係る説明は、以上である。
ユーザは、ステップS104で求められる、試験シナリオの実行のために割り当てられる計算機プラットフォーム100の計算資源およびエミュレータ103の実行条件に基づいて、テストを実行するために必要なクラウドサービスの利用プランを決めることができる。一般に、エミュレートするシステムの規模(IoTデバイスの台数)が大きくなったり、要求されるテストの精度が高くなったりすると、必要な計算資源量が増大する。ユーザは、クラウドサービスにおいて、より高額な利用プランを選択すれば、利用することができる計算資源量を増やすことができる。ただし、IoTサービスがデータ通信を行うIoTデバイスの台数が数万台~数百万台以上に増えることが予想される場合、計算資源を効率的に利用し、クラウドサービスの利用にかかるコストを最小限にすることが望ましい。
そこで、以下では、テストサーバを使って、クラウドサービスの利用にかかるコストを最小化させる構成を求める場合を例に、説明をする。以下で説明する例は、クラウドサービスの利用にかかるコストを目的関数とした最適化問題の解を求める処理に等価であるといえる。コストは、クラウドサービスを提供する事業者に対して支払う対価であってもよいし、クラウドサービスの構築および運用に要するコストであってもよい。
なお、テストサーバ1は、これとは異なる最適化問題を解いてもよい。例えば、所定の量の計算資源を利用し、並列的に複数の試験シナリオを実行する場合、全試験シナリオの実行に要する時間を最小化させる構成を求めることができる。この場合、目的関数は、全試験シナリオの実行に要する時間となる。また、所定の量の計算資源を利用した場合に、テスト内容の精度が最も高くなる構成を求めることも可能である。
エミュレータ103に割り当てる計算資源量を最適化することによって、クラウドサービスの利用コストを最小化させることができる。例えば、ユーザは、エミュレータ103がエミュレートする製品(IoTデバイス)のデータ通信機能、データ通信設定および当該製品のデータ通信時の挙動をエミュレートするのに必要な計算資源との関係を含む通信モデルを作成し、あらかじめエミュレータ103が必要とする計算資源量を求めることができる。
図6のフローチャートは、クラウドサービスの利用コストを最小化する設定を求める処理の例を示している。以下では、図6のフローチャートを参照しながら、処理を説明する。なお、図6のフローチャートは、図5のフローチャートにおけるステップS104の処理を具体化したものに相当している。
はじめに、リソース計算部21は、記憶部10内の試験データ11を参照し、試験シナリオにおけるエミュレータ103の構成に関する情報を取得する(ステップS201)。試験シナリオにおけるエミュレータ103の構成に関する情報は、当該試験シナリオで使われるエミュレータ103の数Nseを含んでいてもよい。
例えば、試験シナリオでIoTデバイスD1、D2およびD3の挙動がエミュレートされるものとする。この場合、試験シナリオにおけるエミュレータ103の構成に関する情報は、例えば、IoTデバイスD1の正常系のデータ通信を模擬するエミュレータE1を100個、IoTデバイスD2の正常系のデータ通信を模擬するエミュレータE2を100個、IoTデバイスD3の正常系のデータ通信を模擬するエミュレータE3を100個のような、計算機プラットフォーム100内で割り当てられるべきエミュレータ103の情報を含むことができる。なお、リソース計算部21は、さらに並列的に実行されるエミュレータ103に関する情報や、エミュレータ103の実行順序に関する情報を取得してもよい。
次に、リソース計算部21は、記憶部10内の試験データ11および通信モデルデータ12を参照し、試験シナリオで使用する通信モデルの情報を取得する(ステップS202)。図3のテーブルT1に示したように、通信モデルは、ひとつのエミュレータ103を実行するために必要な計算資源量(例えば、CPU数、メモリサイズ、ストレージサイズ、ネットワーク帯域)の情報を含んでいてもよい。
そして、リソース計算部21は、第1制御部22に複数の利用プランの情報を取得させる(ステップS203)。利用プランの情報は、仮想計算機102に割り当てられる計算資源と当該仮想計算機102の利用コストに関する情報を含む。利用プランの情報は、例えば、「CPU数:1、メモリサイズ:1GB、NICの帯域:1GpbsのVMを1時間利用すると、2セントがかかる」といった内容を含むことができる。なお、ここで示した利用プランの情報は、一例にしかすぎない。例えば、事業者によっては、計算機プラットフォーム100の利用料を年額で請求する場合もある。また、ユーザがある期間において計算資源の使用量を一定の範囲内に抑制すると、利用料を割り引く事業者もある。したがって、利用プランの情報は、これより複雑な条件を含んだものであってもよい。
ここでは、第1制御部22が管理サーバ101より利用プランの情報を取得している場合を例に説明をしている。ただし、これとは異なる方法によって、利用プランの情報を取得してもよい。例えば、リソース計算部21は、クラウド事業者が提供するウェブサーバから、利用プランの見積もり情報などをダウンロードしてもよい。
次に、リソース計算部21は、それぞれの利用プランについて、ひとつの仮想計算機102で実行可能なエミュレータ103の数を計算する(ステップS204)。図7のテーブルT3は、ステップS204における計算結果の例を示している。例えば、それぞれの利用プランで使うことができる計算資源量CRpを、ステップS202で取得した、ひとつのエミュレータ103を実行するために必要な計算資源量CReで除算することにより、それぞれの利用プランで実行することが可能なエミュレータ103の数を求めることができる。なお、時刻または条件によって、計算資源量CReが増減する場合には、計算資源量CReの最大値を使って上述の計算が行えばよい。
例えば、テーブルT3の利用プランCP1において、図3のテーブルT1のモデルID2001の通信モデルを使うエミュレータ103が実行される場合を想定する。利用プランCP1では、仮想計算機102のメモリサイズが、実行可能なエミュレータ103の数の上限を定める。利用プランCP1では、ひとつの仮想計算機102で0.5GB=512MBのメモリを使うことができる。一方、モデルID2001の通信モデルを使うエミュレータ103は、ひとつ当たり50MBのメモリを必要としている。したがって、512MB/50MBを計算すると、利用プランCP1で実行することができるエミュレータ103の数は、10個になる。
また、テーブルT3の利用プランCP5において、図3のテーブルT1のモデルID2001の通信モデルを使うエミュレータ103が実行される場合を想定する。利用プランCP5では、仮想計算機102で使用することができるネットワーク帯域が、実行可能なエミュレータ103の数の上限を定める。利用プランCP5では、ひとつの仮想計算機102で1Gbps=1024Mbpsのネットワーク帯域を使うことができる。一方、モデルID2001の通信モデルを使うエミュレータ103は、ひとつ当たり10Mbpsのネットワーク帯域を必要としている。したがって、1024Mbps/10MMbpsを計算すると、クラウドプランCP5で実行することができるエミュレータ103の数は、100個になる。
モデルID2002またはモデルID2003の通信モデルでは、モデルID2001の通信モデルと、必要な計算資源量が異なっている。このため、エミュレータ103が使う通信モデルによって、異なる結果が得られる。
ここでは、単純化のために、ひとつの仮想計算機102で実行される複数のエミュレータ103が同じ通信モデルを使っていると想定し、説明を行った。ただし、同一の仮想計算機102上で、異なる通信モデルを使うエミュレータ103を実行してもよい。この場合、それぞれの種類の通信モデルを実行するエミュレータ103が必要とする計算資源量と、複数のエミュレータ103において実行される通信モデルの種類の割合に基づき、それぞれの利用プランの仮想計算機で実行することが可能なエミュレータの数を計算することができる。
そして、リソース計算部21は、試験シナリオを実行した場合におけるそれぞれの利用プランのコストを計算する(ステップS205)。例えば、試験シナリオで使われるエミュレータ103の数をNse、利用プランiで実行可能なエミュレータ103の数をNpとする。下記の式(1)は、利用プランiを選択した場合に、試験シナリオの実行に必要な仮想計算機102の数Mvを求める式の例である。
Figure 0007134937000001
ここで、ceiling(x)は、x以上の最小の整数を与える関数である。例えば、x=2.5であるとき、ceiling(x)=3となる。
利用プランにおいて、時間課金が行われる場合を例に、コストの計算方法を説明する。利用プランiの時間当たりの単価をct、試験シナリオの実行時間をtsとすると、試験シナリオを実行した場合における利用プランiのコストCは、例えば、下記の式(2)によって求めることが可能である。
Figure 0007134937000002
ステップS205で、複数の利用プランについて、試験シナリオを実行した場合におけるコストが計算されたら、リソース計算部21は、コストが最小の利用プランを選択する(ステップS206)。次に、リソース計算部21は、各仮想計算機102に割り当てるエミュレータ103の組み合わせを決定する(ステップS207)。例えば、ステップS207では、各仮想計算機102に割り付けられる、上述のエミュレータE1~E3の個数を決めることができる。また、試験シナリオで使われるエミュレータ103の数Nseを試験シナリオの実行に必要な仮想計算機102の数Mviで除算し、各仮想計算機102が実行するエミュレータ103の数を決めてもよい。また、ステップS207で、リソース計算部21は、通信モデルデータ12を参照し、それぞれのエミュレータに相当するIoTデバイスのデータ通信機能または通信設定に関する情報を取得してもよい。
図6のステップS201~S207の処理が実行されると、試験シナリオの実行に使われる仮想計算機102が特定され、仮想計算機102に割り当てられるエミュレータの組み合わせおよび個数が決定される。ステップS201~S207の処理で決定した内容に基づいて、計算機プラットフォーム100における計算資源の設定(ステップS105)および各仮想計算機102におけるエミュレータの設定(ステップS106)が行われる。
このように、試験シナリオは、テストの実行時に動作するエミュレータ103の数と、テストの実行時に動作するエミュレータ103で使用される通信モデルの種類とを含んでいてもよい。通信モデルの種類は、例えば、テーブルT1(図3)のモデルIDなどの識別子によって特定される。リソース計算部21は、計算機プラットフォーム100の利用プランごとに規定されている計算機の計算資源量およびいずれかの種類の通信モデルをエミュレータ103で使った場合に必要となる計算資源量に基づき、計算機で実行することができるエミュレータ103の数を計算してもよい。
リソース計算部21は、テストの実行時に動作するエミュレータ103の数および計算機で実行することができるエミュレータ103の数に基づき、テストを実行するために必要な計算機の数を計算してもよい。また、リソース計算部21は、テストを実行するために必要な計算機の数に基づき、コストが最小となる利用プランを選択してもよい。この場合、第1制御部は22、計算機プラットフォーム100にアクセスし、選択された利用プランの計算資源量を確保することができる。
本実施形態に係るテストサーバ、プログラムおよび情報処理システムは、該当のIoTデバイスが入手可能となる前から、クラウドサービスでIoTサービスの開発および検証を進めることを可能にする。このため、充分な数のIoTデバイスが用意できていない場合に、高価なIoTデバイスを購入したり、製造したりする必要がなくなる。したがって、IoTデバイスに関連した処理を実行するIoTサービスの開発および検証に要するコストを抑えることができる。また、通信モデルの選択および設定によって、正常系でなく異常系の評価、IoTサービスのリアルタイム性能の評価を行うことも容易である。
特に、仮想計算機上でIoTデバイスをエミュレートする場合、仮想計算機のスナップショット機能、スナップショットの複製機能、スナップショットの復元機能、仮想計算機のマイグレーション機能などを活用し、短期間で容易にテスト環境の構築およびテストの実行を行うことができる。コンテナについても、仮想計算機と同様に、スナップショットおよびマイグレーション機能を利用することが可能である。また、スクリプトを使って、上述の各処理を自動的に実行するテストサーバおよび情報処理システムを構築することも容易である。このため、本実施形態に係るテストサーバ、プログラムおよび情報処理システムを使うことにより、IoTサービスの開発および検証を効率的に進めることができるようになる。
図8のブロック図は、変形例によるテストサーバの構成を概略的に示している。図8のネットワーク4には、図2と同様に、計算機プラットフォーム100(図示せず)が接続されているものとする。図8のテストサーバ1Aは、図1のテストサーバ1の構成要素に加えて、開発連携部24を備えている。また、ネットワーク4には、開発サーバ6が接続されている。開発サーバ6は、SUTに相当するIoTサービスに係るソフトウェア(サービスアプリ106)の開発およびリリースを行うために使われているサーバである。開発サーバ6は、最新のソースコードをビルドした後、仮想計算機105上のサービスアプリ106を更新する機能を備えていてもよい。例えば、開発サーバ6は、管理サーバ101にアクセスし、仮想計算機105のイメージを更新してもよい。また、開発サーバ6は、対象の仮想計算機105に直接アクセスし、サービスアプリ106のプログラムを最新版のビルドに置き換えてもよい。
開発連携部24は、ネットワーク4を介して開発サーバ6にアクセスし、開発サーバ6よりサービス設定情報を取得する。サービス設定情報は、例えば、サービスアプリ106(IoTサービス)で利用することができるAPIの情報、サービスアプリ106のAPIを利用するためのネットワーク設定の情報を含む。また、開発連携部24は、開発サーバ6からテストの開始要求を受け付ける。開発連携部24は、テストの開始要求を受理したら、第2制御部23、第1制御部22およびリソース計算部21は、計算機プラットフォーム100におけるサービスアプリ106のテストの準備を開始する。なお、開発サーバ6が送信するテストの開始要求は、テスト対象とするサービスアプリ106を特定したり、特定の試験シナリオを指定したりするものであってもよい。
開発連携部24は、処理回路20の内部の構成要素である。例えば、処理回路20は、記憶部10に保存されたプログラムを実行することによって、ユーザに開発連携部24の機能を提供することができる。
図9のフローチャートは、テストサーバ1Aによって実行される処理の例を示している。以下では、図9のフローチャートを参照しながら、処理を説明する。
はじめに、第1制御部22は、管理サーバ101より計算機プラットフォーム100における計算資源に係る情報を取得する(ステップS301)。例えば、第1制御部22は、ステップS301でサービスアプリ106が実行される仮想計算機105およびエミュレータ103が実行される仮想計算機102に割り当てられた計算資源、仮想ネットワーク104の構成などの情報を取得することができる。
次に、開発連携部24は、開発サーバ6よりテスト対象のサービスアプリ106および試験シナリオを特定する情報(サービス設定情報)を取得する(ステップS302)。ステップS302で、テストサーバ1Aは、サービスアプリ106で利用することができるAPIの情報、サービスアプリ106のAPIを利用するためのネットワーク設定の情報を得ることができる。
開発連携部24は、サービスアプリ106で利用することができるAPIに基づき、選択するテーブルT2の試験シナリオIDを特定することができる。また、開発連携部24は、サービスアプリ106で利用できる状態となっているAPIに合わせ、既存の試験シナリオを修正する必要があるか否かを判定することができる。開発連携部24は、既存の試験シナリオの修正が必要であると判定した場合、試験シナリオの修正または、新しい試験シナリオを作成することができる。
また、開発連携部24は、サービスアプリ106のAPIを利用するためのネットワーク設定の情報に応じて、エミュレータ103で使用する通信モデルのモデルIDを特定することができる。また、開発連携部24は、通信モデルのパラメータ設定、オプション設定または、修正の必要性を判定することができる。すなわち、開発連携部24は、ステップS302で取得したサービス設定情報に応じて、試験データ11または通信モデルデータ12を変更してもよい。
そして、リソース計算部21は、テストの実行に必要な計算資源量を計算し、仮想計算機102におけるエミュレータ103の割り当てを決定する(ステップS303)。ステップS303では、図5のステップS104と同様の処理が実行される。また、ステップS303では、図6のフローチャート(ステップS201~ステップS207)の処理が実行されてもよい。
次に、第1制御部22は、ステップS303の計算結果に基づき、計算機プラットフォーム100における計算資源の設定を行う(ステップS304)。ステップS304では、図5のステップS105と同様の処理が実行される。そして、第2制御部23は、ステップS303の結果に基づき、エミュレータ103の設定をする(ステップS305)。ステップS305では、図5のステップS106と同様の処理が実行される。次に、第2制御部23は、エミュレータ103を実行し、サービスアプリ106のテストを開始する(ステップS306)。ステップS306では、図5のステップS107と同様の処理が実行される。
このように、本実施形態による情報処理装置(テストサーバ)は、サービスのソースコードのビルドが行われているサーバ(例えば、上述の開発サーバ6)よりテストの対象となるサービスおよび試験シナリオを指定する情報を取得する開発連携部24をさらに備えていてもよい。
テストサーバ1Aを使うことにより、ユーザは、上述のテストサーバ1を使った場合と同様のメリットを享受することができる。また、テストサーバ1Aは、IoTサービス(サービスアプリ106)の開発環境を提供する開発サーバ6と連携しているため、IoTサービスの開発状況に応じたテスト内容の選択、テストの準備およびテストの実行を行うことができる。また、スクリプトなどを使い、最新のソースコードによるソフトウェアのビルドと、当該ビルドを使った試験シナリオ(テスト)の実行を自動化することができる。これにより、継続的インテグレーション、DevOps、アジャイルソフトウェア開発などの手法を使って、IoTサービスの開発を効率的に進めることが可能となる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
1 テストサーバ
2 バス
3 通信回路
4 ネットワーク
5 情報端末
6 開発サーバ
10 記憶部
11 試験データ
12 通信モデルデータ
20 処理回路
21 リソース計算部
22 第1制御部
23 第2制御部
24 開発連携部
100 計算機プラットフォーム
101 管理サーバ
102、105 仮想計算機
103 エミュレータ
106 サービスアプリ
201 物理計算機
202 物理ストレージ
203 物理ネットワーク

Claims (17)

  1. 試験シナリオで規定されている通信モデルに基づきエミュレータにデータを送信させ、サービスに前記データを受信させるテストを計算機プラットフォーム上で実行するために必要となる計算資源量を計算し、前記計算機プラットフォーム内の計算機における前記エミュレータの割り当てを決定するリソース計算部と、
    前記計算機プラットフォームにアクセスし、前記計算資源量を確保する第1制御部と、
    前記計算機に割り当てられた前記エミュレータの設定を行う第2制御部とを備える、
    情報処理装置。
  2. 前記試験シナリオは、前記テストの実行時に動作する前記エミュレータの数と、前記テストの実行時に動作する前記エミュレータで使用される前記通信モデルの種類とを含む、
    請求項1に記載の情報処理装置。
  3. 前記リソース計算部は、前記計算機プラットフォームの利用プランごとに規定されている前記計算機の計算資源量およびいずれかの前記種類の前記通信モデルを前記エミュレータで使った場合に必要となる計算資源量に基づき、前記計算機で実行することができる前記エミュレータの数を計算する、
    請求項2に記載の情報処理装置。
  4. 前記リソース計算部は、前記テストの実行時に動作する前記エミュレータの数および前記計算機で実行することができる前記エミュレータの数に基づき、前記テストを実行するために必要な前記計算機の数を計算する、
    請求項3に記載の情報処理装置。
  5. 前記リソース計算部は、前記テストを実行するために必要な前記計算機の数に基づき、コストが最小となる前記利用プランを選択し、
    前記第1制御部は、選択された前記利用プランの前記計算資源量を確保する、
    請求項4に記載の情報処理装置。
  6. 前記サービスのソースコードのビルドが行われているサーバより前記テストの対象となる前記サービスおよび前記試験シナリオを指定する情報を取得する開発連携部をさらに備える、
    請求項1ないし5のいずれか一項に記載の情報処理装置。
  7. 前記通信モデルは、前記エミュレータが送信する前記データの通信品質を規定する、
    請求項1ないし6のいずれか一項に記載の情報処理装置。
  8. 前記通信品質は、データ通信の帯域、伝送遅延、伝送揺らぎ、伝送エラー率の少なくともいずれかを含む、
    請求項7に記載の情報処理装置。
  9. 前記計算機プラットフォーム内の少なくともいずれかの前記計算機は、仮想計算機またはコンテナである、
    請求項1ないし8のいずれか一項に記載の情報処理装置。
  10. 前記エミュレータは、前記仮想計算機上のコンテナ内のアプリケーションである、
    請求項9に記載の情報処理装置。
  11. 前記計算機プラットフォームは、前記仮想計算機または前記コンテナによるデータ通信を実現する仮想ネットワークを含む、
    請求項9または10に記載の情報処理装置。
  12. 前記第1制御部は、前記通信モデルに基づき、前記仮想ネットワークのデータ通信の帯域、伝送遅延、伝送揺らぎ、伝送エラー率の少なくともいずれかを制御する、
    請求項11に記載の情報処理装置。
  13. 前記計算資源量は、CPU数、CPU時間、プロセス数、メモリサイズ、ストレージサイズ、ネットワークの設定、ネットワーク帯域の少なくともいずれかを含む、
    請求項1ないし12のいずれか一項に記載の情報処理装置。
  14. 少なくともいずれかの前記通信モデルは、待ち行列モデルに基づいている、
    請求項1ないし13のいずれか一項に記載の情報処理装置。
  15. 前記エミュレータは、IoTデバイスのデータ通信時における挙動をエミュレートし、
    前記サービスは、前記IoTデバイスに関連した処理を実行するIoTサービスである、
    請求項1ないし14のいずれか一項に記載の情報処理装置。
  16. 試験シナリオで規定されている通信モデルに基づきエミュレータにデータを送信させ、サービスに前記データを受信させるテストを計算機プラットフォーム上で実行するために必要となる計算資源量を計算するステップと、
    前記計算機プラットフォーム内の計算機における前記エミュレータの割り当てを決定するステップと、
    前記計算機プラットフォームにアクセスし、前記計算資源量を確保するステップと、
    前記計算機に割り当てられた前記エミュレータの設定を行うステップとを含む、
    プログラム。
  17. 試験シナリオで規定されている通信モデルに基づきデータを送信するエミュレータを実行する第1計算機と、
    前記データを受信するサービスを実行する第2計算機と、
    前記第1計算機への計算資源の割り当てを制御する管理サーバと、
    試験シナリオに基づくテストを実行させるために必要となる計算資源量を計算し、前記第1計算機における前記エミュレータの割り当てを決定し、前記管理サーバに前記計算資源量の計算資源を確保させ、前記エミュレータの設定を行うテストサーバとを備える、
    情報処理システム。
JP2019197533A 2019-10-30 2019-10-30 情報処理装置、プログラムおよび情報処理システム Active JP7134937B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019197533A JP7134937B2 (ja) 2019-10-30 2019-10-30 情報処理装置、プログラムおよび情報処理システム
US17/007,666 US11635982B2 (en) 2019-10-30 2020-08-31 Information processing apparatus, program, and information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019197533A JP7134937B2 (ja) 2019-10-30 2019-10-30 情報処理装置、プログラムおよび情報処理システム

Publications (2)

Publication Number Publication Date
JP2021071872A JP2021071872A (ja) 2021-05-06
JP7134937B2 true JP7134937B2 (ja) 2022-09-12

Family

ID=75687327

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019197533A Active JP7134937B2 (ja) 2019-10-30 2019-10-30 情報処理装置、プログラムおよび情報処理システム

Country Status (2)

Country Link
US (1) US11635982B2 (ja)
JP (1) JP7134937B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004021523A (ja) 2002-06-14 2004-01-22 Canon Inc ネットワークサーバへの負荷テストシステム
WO2009011061A1 (ja) 2007-07-19 2009-01-22 Fujitsu Limited 負荷試験プログラムおよび負荷試験装置
JP2010271863A (ja) 2009-05-20 2010-12-02 Toshiba Corp 情報処理装置
JP2013232035A (ja) 2012-04-27 2013-11-14 Pfu Ltd 情報処理システム、情報処理装置、情報処理方法、及びプログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901583B1 (en) * 2001-07-19 2005-05-31 Hewlett-Packard Development Company, L.P. Method for testing of a software emulator while executing the software emulator on a target machine architecture
US20050216920A1 (en) * 2004-03-24 2005-09-29 Vijay Tewari Use of a virtual machine to emulate a hardware device
CA2764354A1 (en) * 2012-01-16 2013-07-16 Giovanni J. Morelli Host-emulator bridge system and method
US8743735B1 (en) * 2012-01-18 2014-06-03 Cadence Design Systems, Inc. Emulation system for verifying a network device
US9965302B2 (en) * 2013-03-28 2018-05-08 Sphere 3D Inc. Systems and methods for providing an emulator
US9952902B1 (en) * 2013-04-10 2018-04-24 Amazon Technologies, Inc. Determining a set of application resources
US9351186B2 (en) * 2013-05-16 2016-05-24 Ixia Methods, systems, and computer readable media for frequency selective channel modeling
US10261811B2 (en) * 2015-03-10 2019-04-16 Sphere 3D Inc. Systems and methods for contextually allocating emulation resources
US10193762B2 (en) * 2016-08-11 2019-01-29 Rescale, Inc. Dynamic optimization of simulation resources
US20200065123A1 (en) * 2017-01-04 2020-02-27 Intel Corporation Simulation of internet of things systems
EP3462705B1 (en) * 2017-09-27 2019-07-10 Siemens Aktiengesellschaft Provisioning of software applications on edge devices in an internet-of-things environment
JP6689246B2 (ja) 2017-12-20 2020-04-28 ヤフー株式会社 情報処理装置、情報処理方法、およびプログラム
US10728340B2 (en) * 2018-03-29 2020-07-28 Servicenow, Inc. Internet of things (IOT) platform for device configuration management and support
US10693795B2 (en) * 2018-06-01 2020-06-23 Fujitsu Limited Providing access to application program interfaces and Internet of Thing devices
EP3767889A1 (en) * 2019-07-18 2021-01-20 Siemens Aktiengesellschaft Testing iot-applications based on a fleet of iot-devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004021523A (ja) 2002-06-14 2004-01-22 Canon Inc ネットワークサーバへの負荷テストシステム
WO2009011061A1 (ja) 2007-07-19 2009-01-22 Fujitsu Limited 負荷試験プログラムおよび負荷試験装置
JP2010271863A (ja) 2009-05-20 2010-12-02 Toshiba Corp 情報処理装置
JP2013232035A (ja) 2012-04-27 2013-11-14 Pfu Ltd 情報処理システム、情報処理装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
US20210132977A1 (en) 2021-05-06
US11635982B2 (en) 2023-04-25
JP2021071872A (ja) 2021-05-06

Similar Documents

Publication Publication Date Title
US9921809B2 (en) Scaling a cloud infrastructure
CN107533480B (zh) 服务器选择装置、服务器选择方法及记录介质
US8839042B2 (en) Dynamic load calculation and predictive scaling
US10462029B2 (en) Device cloud monitoring and stability
US9454469B2 (en) Cloud-based test execution
US20130074046A1 (en) Application protoyping suite
US20150341229A1 (en) Load generation application and cloud computing benchmarking
US20090300423A1 (en) Systems and methods for software test management in cloud-based network
US20170068521A1 (en) Optimization of application workflow in mobile embedded devices
US10394971B2 (en) Hybrid simulation of a computing solution in a cloud computing environment with a simplified computing solution and a simulation model
US9954757B2 (en) Shared resource contention
US12032883B1 (en) Optimization of configurable distributed computing systems
US20140244791A1 (en) Method for intercepting an instruction produced by an application on a computer
US10055327B2 (en) Evaluating fairness in devices under test
Schmidt et al. Performance analysis of an openstack private cloud
JP7134937B2 (ja) 情報処理装置、プログラムおよび情報処理システム
Tao et al. Cloud-based infrastructure for mobile testing as a service
JP2014174609A (ja) ハードウェア構成見積システム、ハードウェア構成見積方法及びハードウェア構成見積プログラム
Chandrasekar et al. A comparative study of baremetal provisioning frameworks
Frincu et al. Evaluating Distributed Systems and Applications through Accurate Models and Simulations
US20240345820A1 (en) Self-adaptive simulation system configured to support large scale remote site upgrades of a distributed container orchestration system
US10901803B2 (en) Allocation of resources among logical partitions
Sitaram et al. OpenSim: a simulator of openstack services
Tamanampudi et al. Performance Optimization of a Service in Virtual and Non-Virtual Environment
Samadi Khah Performance Modelling of the OpenStack Controller

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220713

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220802

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220831

R151 Written notification of patent or utility model registration

Ref document number: 7134937

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151