JP2022036800A - Api選定システム及びapi選定方法 - Google Patents

Api選定システム及びapi選定方法 Download PDF

Info

Publication number
JP2022036800A
JP2022036800A JP2020141181A JP2020141181A JP2022036800A JP 2022036800 A JP2022036800 A JP 2022036800A JP 2020141181 A JP2020141181 A JP 2020141181A JP 2020141181 A JP2020141181 A JP 2020141181A JP 2022036800 A JP2022036800 A JP 2022036800A
Authority
JP
Japan
Prior art keywords
api
application
processing unit
candidate
resource
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.)
Pending
Application number
JP2020141181A
Other languages
English (en)
Inventor
里奈 上野
Rina Ueno
恵介 畑崎
Keisuke Hatasaki
弘志 那須
Hiroshi Nasu
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2020141181A priority Critical patent/JP2022036800A/ja
Priority to US17/206,247 priority patent/US11281507B2/en
Publication of JP2022036800A publication Critical patent/JP2022036800A/ja
Pending legal-status Critical Current

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • 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/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Figure 2022036800000001
【課題】アプリケーション開発者が求めるAPIとAPI開発者が定義したAPIの対応付けを容易化する。
【解決手段】API(Application Programming Interface)を選定するAPI選定システムは、APIを該APIが有する機能要件と対応付けて蓄積するAPIリポジトリと、アプリケーション開発者が開発するアプリケーションが連携するAPIに求められる機能要件及び非機能要件を定義するAPI要求定義の入力を前記アプリケーション開発者から受け付けて記憶部に保存する保存処理部と、前記保存処理部によって前記記憶部に保存された前記API要求定義の機能要件と一致又は類似する機能要件を有する複数の候補APIを前記APIリポジトリから抽出する候補API抽出処理を実行する候補API抽出処理部とを有する。
【選択図】 図5

Description

本発明は、API選定システム及びAPI選定方法に関する。
近年、頻繁に変化する顧客ニーズに応える迅速なアプリケーション開発が求められている。このため、短期間でサービスの改修、仕様変更、及びリリースを繰り返し、継続的にアプリケーションを改良するアプリケーション開発手法(継続的インテグレーション、継続的デリバリー)が重要とされている。
そしてアプリケーション開発において、用途や目的ごとに開発された小さなサービスを疎に結合して1つのアプリケーションを構成するマイクロサービスアーキテクチャが普及している。マイクロサービスアーキテクチャを用いたマイクロサービス開発では、サービスが提供しているAPI(Application Program Interface)を利用してサービスを呼び出すことで、サービス同士を結合し、サービスの機能を利用できる。
マイクロサービス開発においてAPIが利用されことから、利用可能なAPIの利用頻度と種類が増加している。マイクロサービス開発において、頻繁に行われるAPIの追加や変更のサイクルに追随し、迅速かつ継続的にアプリケーションが利用するAPIをより最適なものへ入れ替えることが望ましい。
このような利用可能なAPIの利用頻度と種類の増加に伴い、APIマーケットプレイスの普及が進んでいる。APIマーケットプレイスは、API開発者に便利な管理機能を提供し、API利用者に多種多様なAPIを提供するサービスである。APIマーケットプレイスは、キーワード検索といった抽象的な表現を用いた検索方法によって、ユーザが求める機能や処理などを持つ可能性があるAPIを抽出できる。
米国特許出願公開第2013/0132584号明細書
"RapidAPI", [online], [2020年7月2日検索],インターネット<URL: https://rapidapi.com/>
複数のサービスAPI(アプリケーションがサービスを呼び出すために、サービスによって提供されるAPI)の組み合わせから構成されるアプリケーション(以降、API連携型アプリケーション)の開発において、変化する顧客ニーズに合わせてアプリケーションを改善するためには、API連携型アプリケーションに適用するAPIの選定が重要となる。
そこで、API連携型アプリケーションへ適用するAPIの選定において、アプリケーション開発者は、APIマーケットプレイスを活用し、ドキュメント確認、動作や性能のテスト等のAPIに関するより具体的な調査を、選定した個々のAPIに対して行う必要がある。
アプリケーション仕様やAPIの変更や追加等の開発サイクルが迅速化する今後のAPI連携型アプリケーションの開発において、API選定のために人手で行う作業の工数が膨大になることが予想される。これは、アプリケーション開発者が求めるAPIについて、非機能要件やテスト要件等の様々な要求をAPI開発者が定義したAPIに対応付けることが難しいためである。
本発明は上記の課題に鑑みてなされたもので、アプリケーション開発者が求めるAPIとAPI開発者が定義したAPIの対応付けを容易化することを目的とする。
上記目的を達成するために、本発明においては、API(Application Programming Interface)を選定するAPI選定システムであって、APIを該APIが有する機能要件と対応付けて蓄積するAPIリポジトリと、アプリケーション開発者が開発するアプリケーションが連携するAPIに求められる機能要件及び非機能要件を定義するAPI要求定義の入力を前記アプリケーション開発者から受け付けて記憶部に保存する保存処理部と、前記保存処理部によって前記記憶部に保存された前記API要求定義の機能要件と一致又は類似する機能要件を有する複数の候補APIを前記APIリポジトリから抽出する候補API抽出処理を実行する候補API抽出処理部とを有することを特徴とする。
本発明によれば、アプリケーション開発者が求めるAPIとAPI開発者が定義したAPIの対応付けを容易化できる。
本発明の実施例に係る動的API選定システムの概要を説明するための図である。 マニフェストのうちのAPI要求定義の記述内容の一例を示す図である。 動的API選定システムにAPIを登録するためのAPI登録画面GUIの一例を示す図である。 動的API選定システムに登録されているAPIの設定変更及び削除を実行するためのAPI設定変更画面GUIの一例を示す図である。 本発明の実施例に係る動的API選定システムの構成の一例を示すブロック図である。 アプリケーションリソースデータベースが有するAPI要求テーブルの構成の一例を示す図である。 APIリポジトリが有するAPIテーブルの構成の一例を示す図である。 アプリケーション管理ノードのマニフェスト保存処理の処理手順の一例を示すフローチャートである。 アプリケーション管理ノードのAPI選定・アプリケーションデプロイ処理の処理手順の一例を示すフローチャートである。 アプリケーション管理ノードの候補API抽出処理の処理手順の一例を示すフローチャートである。 アプリケーション管理ノードのアプリケーションリソースデプロイ処理の処理手順の一例を示すフローチャートである。 アプリケーション管理ノードのアプリケーション動作テスト処理の処理手順の一例を示すフローチャートである。 アプリケーション管理ノードのアプリケーションリリーステスト処理の処理手順の一例を示すフローチャートである。 アプリケーション管理ノードのアプリケーションリソースアンデプロイ処理の処理手順の一例を示すフローチャートである。 アプリケーション管理ノードのアプリケーションリソース監視処理の処理手順の一例を示すフローチャートである。 API管理ノードのAPI参照処理の処理手順の一例を示すフローチャートである。 API管理ノードのAPI登録処理の処理手順の一例を示すフローチャートである。 API管理ノードのAPI情報更新処理の処理手順の一例を示すフローチャートである。 API管理ノードのAPI削除処理の処理手順の一例を示すフローチャートである。 API管理ノードのAPIリソースデプロイ処理の処理手順の一例を示すフローチャートである。 API管理ノードのAPIリソースアンデプロイ処理の処理手順の一例を示すフローチャートである。 API選定システムを実現するコンピュータのハードウェアの一例を示す図である。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。また、発明の構成に必須だが周知である構成については、図示及び説明を省略する場合がある。
以下の説明において、「xxxテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明において、「プログラム」を主語として処理を説明する場合がある。プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び/又はインターフェース部などを用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有するコントローラのようなデバイス)又はxxx部とされてもよい。
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、「プロセッサ部」は、1又は複数のプロセッサである。プロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。また、プロセッサは、シングルコアでもよいしマルチコアでもよい。また、プロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)が採用されてもよい。
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。また各図に示す各要素の数は一例であって、図示に限られるものではない。
(1)発明概要
図1は、本発明の実施例に係る動的API(Application Program Interface)選定システムSの概要を説明するための図である。動的API選定システムSは、API連携型アプリケーションの開発において、アプリケーション開発者6のAPI要求に基づき動的にAPIを選定する。
動的API選定システムSは、アプリケーション管理サーバ11及びアプリケーションリソースデータベース12を含むアプリケーション管理ノード1と、API管理サーバ21及びAPIリポジトリ22を含むAPI管理ノード2とを有する。
動的API選定システムSは、アプリケーションインスタンス31及びAPIゲートウェイ32を含むアプリケーション実行環境3と、1以上のAPI41を含むAPI実行環境4と連携して、アプリケーションをアプリケーション実行環境3へデプロイし、実行する。
また動的API選定システムSは、API要求に基づいて、アプリケーションリソース状態の監視やAPI情報の収集を実行し動的にAPI選定を実行する。API要求は、アプリケーション開発者6によってアプリケーションリソース構成定義ファイル(以降、マニフェスト7)内に記述される。マニフェスト7は、APIに関するアプリケーションリソースの構成要求(API要求定義)、及び、API以外に関するアプリケーションリソースの構成要求(API以外要求定義)を含むリソース定義情報が記述される。マニフェスト7の内容は、アプリケーション管理サーバ11へ入力され、アプリケーションリソースデータベース12に蓄積される。
API情報9は、API開発者8によってAPI登録画面GUI(Graphical User Interface)91(図3)を介してAPI管理サーバ21に入力され、APIリポジトリ22に蓄積される。またAPI情報9は、API開発者8によってAPI設定変更画面GUI92(図4)を介してAPI管理サーバ21に入力され、動的API選定システムS内に蓄積されているAPI設定の変更やAPI削除が行われる。
図2は、マニフェスト7のうちのAPI要求定義71の記述内容の一例を示す図である。API要求定義71とは、API連携型アプリケーション開発において、動的API選定システムSを用いる際に使用するマニフェスト7に定義されるリソース定義情報のうち、開発アプリケーションが求めるAPIの要件である。API要求定義71の記述内容は、アプリケーションが呼び出すAPIのエンドポイント(格納位置を示すURL(Uniform Resource Locator)等の情報)の設定及びAPI要求等である。図2の場合、1~5行にエンドポイント設定が記述され、7~18行にAPI要求が記述されている。
API要求定義71では、2行目のデータ項目kindに記述された情報がAPIの属性を表している。エンドポイント設定は、主に5行目のtypeのデータ項目を有して構成される。API要求は、主に12行目のrepository、13行目のdescription、14行目のinput、15行目のoutput、16行目のsuccess_rate、17行目のlatency、18行目のreleaseの各データ項目を有して構成される。
エンドポイントのデータ項目について説明する。5行目のデータ項目typeには、アプリケーションが呼び出すAPIのエンドポイントの指定方法が指定される。図2の場合、dynamicと定義されていることから、エンドポイントはAPI要求定義71に従って動的に指定され、動的にAPIが選定されることを表している。
API要求のデータ項目について説明する。12行目のデータ項目repositoryには、探索の対象となるAPIを管理しているサーバ(API管理サーバ21)のURLが設定される。13行のデータ項目descriptionには、APIを単語検索するために利用するキーワードが設定される。例えば、APIが呼び出すサービスの目的に含まれていることを期待する単語や関連語が設定される。
14行目のデータ項目inputには、APIに入力するデータの形式が設定される。図2の例では、入力のデータ形式は画像である。15行目のデータ項目outputには、APIが出力するデータの形式が設定される。図2の例では、出力のデータ形式は数値である。16行目のデータ項目success_rateには、APIの処理結果に対する成功率の目標性能が設定される。17行目のデータ項目latencyには、APIが与えられたデータに対する処理の遅延時間の目標性能値が設定される。18行目のデータ項目releaseには、API連携型アプリケーションのデプロイ又はリリースに用いるアルゴリズムや処理方法が設定される。
図3は、動的API選定システムSにAPIを登録するためのAPI登録画面GUI91の一例を示す図である。API入力画面GUI91は、API開発者8が、動的API選定システムSに、API開発者8自身が開発したAPIを登録するためのGUIである。図3に示すように、API情報9は、API名911、API説明912、APIが利用される分野913、入力形式914、出力形式915、API仕様定義ファイル916等の各項目の入力領域を有する。
API名911及びAPI説明912は、テキストで入力される。分野913、入力形式914、及び出力形式915は、ドロップダウンリストからの選択によって入力される。API仕様定義ファイル916は、ファイルのアップロードによって入力される。API仕様定義ファイル916は、API開発者8によってSwaggerファイル等で事前作成される。
API入力画面GUI91内の「保存918a」ボタンが押下されると、API入力画面GUI91を介して入力されたAPI情報9が動的API選定システムSに保存される。一方、画面GUI91内の「キャンセル918b」ボタンが押下されると、API入力画面GUI91を介して入力されたAPI情報9が破棄される。
図4は、動的API選定システムSに登録されているAPIの設定変更及び削除を実行するためのAPI設定変更画面GUI92の一例を示す図である。API設定変更画面GUI92は、API開発者8が、動的API選定システムSに登録されているAPIの設定変更もしくは削除を操作するためのGUIである。図4に示すように、API設定変更画面GUI92は、API名921、API説明922、APIが利用される分野923、入力形式924、出力形式925、API仕様定義ファイル926等の各項目の領域を有する。API設定変更画面GUI92に表示される項目は、API登録画面91と同様である。
図4の場合、変更可能な項目は、API説明922、分野923、入力形式924、出力形式925、API仕様定義ファイル926である。API説明922は、テキストで更新情報が入力される。分野923、入力形式924、出力形式925は、ドロップダウンリストから選択することによって入力される。API仕様定義ファイル926は、ファイルのアップロードによって入力される。
API仕様定義ファイル926は、API開発者8によってSwaggerファイル等で事前に作成もしくは編集される。API設定変更画面GUI92内の「保存928a」ボタンが押下されると、API設定変更画面GUI92を介して入力されたAPI情報9の変更が動的API選定システムSに保存及び反映される。一方、画面GUI92内の「キャンセル928b」ボタンが押下されると、API設定変更画面GUI92を介して入力されたAPI情報9の変更が破棄される。また画面GUI92内の「API削除929」ボタンが押下されると、該当のAPI情報9が動的API選定システムSから削除される。
(2)全体システム構成
図5は、本発明の実施例に係る動的API選定システムの構成の一例を示すブロック図である。図5を用いて動的API選定システムS、アプリケーション実行環境3、及びAPI実行環境4を含む全体システムS1の構成を説明する。図5に示すように、全体システムS1は、アプリケーション管理ノード1、API管理ノード2、アプリケーション実行環境3、API実行環境4、及びユーザ端末5が、ネットワークスイッチNを介して接続されて構成される。
本実施例に係る動的API選定システムS、アプリケーション実行環境3、及びAPI実行環境4は、アプリケーション管理ノード1、API管理ノード2、アプリケーション実行環境3、及びAPI実行環境4を含んで構成されるが、ユーザ端末5も含む構成であってもよい。
アプリケーション管理ノード1は、アプリケーション管理サーバ11及びアプリケーションリソースデータベース12を有する計算機の集合である。アプリケーション管理サーバ11は、ユーザ端末5から受け取ったマニフェスト7とアプリケーションリソースへの指示情報に基づいて、API選定、アプリケーション実行環境3及びAPI実行環境4で実行するアプリケーションリソースの管理といった各処理を実行する計算機である。
アプリケーション管理サーバ11は、マニフェスト保存処理部111、API選定・アプリケーションデプロイ処理部112、候補API抽出処理部113、アプリケーションリソースデプロイ処理部114、アプリケーション動作テスト処理部115、アプリケーションリリーステスト処理部116、アプリケーションリソース監視処理部117、アプリケーションリソースアンデプロイ処理部118を有する。アプリケーション管理サーバ11のこれらの処理部の処理の具体的な説明は、図8~図15を参照して後述する。
アプリケーションリソースデータベース12は、リソース構成テーブル121及びAPI要求テーブル122を有する永続記憶装置である。アプリケーションリソースデータベース12は、アプリケーション実行環境3及びAPI実行環境4で実行されるアプリケーションリソースの状態維持及び永続化のための、アプリケーションリソースの構成や設定、要求に関する情報を保持する。
アプリケーションリソースデータベース12のリソース構成テーブル121の具体的な一例は、Kubernetesのetcdであり、一貫性、高可用性を持ったキーバリューストアであって、アプリケーションリソース情報のデータストアとして利用する。アプリケーションリソースデータベース12のAPI要求テーブル122の具体例は、図6に示し、具体的な説明は後述する。
API管理ノード2は、API管理サーバ21及びAPIリポジトリ22を有する計算機の集合である。API管理サーバ21は、API開発者8がAPIリポジトリ22に対してAPI登録、API情報更新、API削除を指示するためのAPI登録画面GUI91及びAPI設定変更画面GUI92の提供、APIリポジトリ22内のAPIの管理、アプリケーション管理ノード1から受け取った指示情報に基づきAPI実行環境4で実行されるAPIリソースの管理といった各処理を実行する計算機である。
API管理サーバ21は、API参照処理部211、API登録処理部212、API情報更新処理部213、API削除処理部214、APIリソースデプロイ処理部215、APIリソースアンデプロイ処理部216を有する。API管理サーバ21のこれらの処理部の処理の具体的な説明は、図16~図21を参照して後述する。
APIリポジトリ22は、APIテーブル221を持つ永続記憶装置である。APIテーブル221の具体例は、図7に示し、具体的な説明は後述する。
アプリケーション実行環境3は、本実施例におけるアプリケーションの実行環境を提供するためのプログラムが揃った環境である。アプリケーション実行環境3は、アプリケーション管理サーバ11の指示情報に従い、処理を実行する。アプリケーション実行環境3は、アプリケーションの実体であるアプリケーションインスタンス31、APIゲートウェイ32、アプリケーションを構成するコンテナの実行管理を行うコンテナ管理機能部33、コンテナ管理機能部33の指示に従いカーネルの機能等を用いながらコンテナの生成や直接操作等を実行するコンテナランタイム34を有する。
API実行環境4は、本実施例におけるAPI実行環境4を提供するためのプログラムが揃った環境である。API実行環境4は、API管理サーバ21の指示情報に従い、APIリソースを実行するための環境をAPI管理サーバ21に提供する。API実行環境4に、複数のAPIリソース(図5ではAPI41-1、API41-2)をデプロイすることが可能である。
ユーザ端末5は、API開発者8が操作する計算機である。ユーザ端末5は、接続されている表示装置に、API管理サーバ21が提供するAPI登録画面GUI91及びAPI設定変更画面GUI92を表示させ、これらのGUIを介して、API情報の登録、参照、更新、削除等の操作を受け付ける。
ネットワークスイッチNは、アプリケーション管理サーバ11、API管理サーバ21、アプリケーション実行環境3、API実行環境4、及びユーザ端末5が接続されるネットワークのスイッチである。ネットワークスイッチNは、具体的には、例えばローカルネットワーク(例えばLAN(Local Area Network))におけるスイッチでよい。
なお図5は、アプリケーション管理サーバ11、API管理サーバ21、アプリケーション実行環境3、API実行環境4、及びユーザ端末5がそれぞれ物理的な計算機で実現される場合の各ノードの機能構成例を示したものである。しかし、これらは必ずしも全てが物理的な計算機で実現される必要はなく、少なくとも一部が仮想マシンやコンテナ等の仮想環境に置き換えて実現されてもよい。
(3)API要求定義情報と登録情報
図6~図7を参照して、アプリケーションリソースデータベース12が有するAPI要求テーブル122、及び、APIリポジトリ22が有するAPIテーブル221とそのデータを説明する。
図6は、アプリケーションリソースデータベース12が有するAPI要求テーブルの構成の一例を示す図である。API要求テーブル122は、API連携型アプリケーションが利用するAPIの要求(API要求定義情報)を管理するためのテーブルであり、アプリケーションで利用するAPI毎にエントリを有する。
図6の場合、API要求テーブル122は、API要求ID1221、ラベル1222、入力形式1223、出力形式1224、キーワード1225、テストデータ1226、成功率1227、遅延1228、リリース方式1229のデータ項目を有して構成される。
API要求ID1221は、1つのAPIの要求定義の識別子(レコードが登録される際に本システムが生成した識別子)である。ラベル1222は、該当レコードと結びついている(該当レコードのAPI要求を持つAPIを呼び出している)アプリケーションリソースに付与されているラベル情報である。
入力形式1223は、APIへ入力するデータのデータ形式である。出力形式1224は、APIが出力するデータのデータ形式である。キーワード1225は、APIリポジトリ22のAPIテーブル221の説明2215に格納されているAPIの処理内容の記述に含まれることが想定される単語のリストである。
入力形式1223は、マニフェスト7のデータ項目input(図2の14行目)から入力される。出力形式1224は、API要求定義71のデータ項目output(図2の15行目)から入力される。キーワード1225は、API要求定義71のデータ項目description(図2の13行目)から入力される。
テストデータ1226は、動作検証及び性能検証のためにAPIに与えるテストデータのファイルが格納されているアドレスである。成功率1227は、動作検証及び性能検証で得た結果に対する成功率についての目標性能値である。遅延1228は、与えられたデータに対するAPIの処理の遅延について目標性能値を格納する。リリース方式1229は、API連携型アプリケーションのデプロイ又はリリースに用いるアルゴリズムや処理内容に関する情報である。
テストデータ1226は、API要求定義71のデータ項目repository(図2の12行目)から入力される。成功率1227は、API要求定義71のデータ項目success_rate(図2の16行目)から入力される。遅延1228は、API要求定義71のデータ項目latency(図2の17行目)から入力される。リリース方式1229は、API要求定義71のデータ項目release(図2の18行目)から入力される。
図6の場合、入力形式1223、出力形式1224、及びキーワード1225がAPIの機能要件に分類され、テストデータ1226、成功率1227、遅延1228、及びリリース方式1229がAPIの非機能要件に分類される。
図7は、APIリポジトリ22が有するAPIテーブル221の構成の一例を示す図である。APIテーブル221は、1又は複数のAPI開発者8が開発したAPIを保持し、API毎にエントリを有する。図7の場合、APIテーブル221は、API ID2211、API名2212、入力形式2213、出力形式2214、及び説明2215のデータ項目を有して構成される。
APIテーブル221の各データ項目について説明する。API ID2211は、APIの識別子である。API名2212は、APIの名前である。入力形式2213は、APIに入力されるデータの要求形式である。出力形式2214は、APIが出力するデータの形式である。説明2215は、APIの処理内容を記述したものである。
(4)動的API選定システムSが実行する処理
本実施例に係るAPI連携型アプリケーションのための動的API選定システムSが実行する処理について説明する。なお、以降の説明では、全体システムS1のリソース構成が、図5に例示したリソース構成であることを想定している。
図8~図21を用いて、アプリケーション管理ノード1のアプリケーション管理サーバ11、及び、API管理ノード2のAPI管理サーバ21が実行する処理を説明する。
(4-1)アプリケーション管理サーバ11の処理
図8~図15は、アプリケーション管理ノード1のアプリケーション管理サーバ11が主に実行する処理のフローチャートを示す。
(4-1-1)マニフェスト保存処理
図8は、アプリケーション管理ノード1のマニフェスト保存処理の処理手順の一例を示すフローチャートである。アプリケーション管理サーバ11のマニフェスト保存処理部111は、入力データであるアプリケーションリソース構成定義ファイル(マニフェスト7)を受信し、データベースに保存する処理、マニフェスト7に基づいてAPIを選定しアプリケーションをデプロイするAPI選定・アプリケーションデプロイ処理を呼び出す処理を実行する。
マニフェスト保存処理は、ユーザ端末5を介してマニフェスト7が入力されたことでアプリケーションリソースの作成が命令されたことを契機として実行される。
まずステップS101では、マニフェスト保存処理部111は、ユーザ端末5がマニフェスト保存処理の開始命令を実行したことを契機として、本処理を開始する。
次にステップS102では、マニフェスト保存処理部111は、ユーザ端末5を介してアプリケーション開発者6によって入力されたマニフェスト7を受け付ける。次に、ステップS103では、マニフェスト保存処理部111は、アプリケーションリソースデータベース12にリソース構成の設定(リソース定義情報)を保存する。リソース定義情報は、マニフェスト7内で定義されているアプリケーションリソースに関する情報である。具体的には、マニフェスト保存処理部111は、マニフェスト7に定義されているリソース定義情報のうちのAPI要求定義71をAPI要求テーブル122に書き込み、API外要求外情報をリソース構成テーブル121に書き込む。
次にステップS104では、マニフェスト保存処理部111は、API選定・アプリケーションデプロイ処理部112に、マニフェスト7を送信する。API選定・アプリケーションデプロイ処理部112は、受信したマニフェスト7に基づいてAPI選定・アプリケーションデプロイ処理を実行する。API選定・アプリケーションデプロイ処理の詳細については図9を参照して後述する。ステップS105では、マニフェスト保存処理部111は、マニフェスト保存処理を終了する。
(4-1-2)API選定・アプリケーションデプロイ処理
図9は、アプリケーション管理ノード1のAPI選定・アプリケーションデプロイ処理の処理手順の一例を示すフローチャートである。API選定・アプリケーションデプロイ処理部112は、入力されたマニフェスト7に基づいて、APIの動的選定並びにアプリケーションリソース及びAPIリソースのデプロイを実行する処理である。
まずステップS201では、API選定・アプリケーションデプロイ処理部112は、API選定・アプリケーションデプロイ処理の開始命令とマニフェスト7を受信したことを契機として、本処理を開始する。
次にステップS202では、API選定・アプリケーションデプロイ処理部112は、候補API抽出処理部113に、マニフェスト7内に定義されているAPI要求定義71を送信する。候補API抽出処理部113は、API要求定義71を受信すると、候補APIを算出し、候補APIリストを作成する候補API抽出処理を実行する。候補API抽出処理の詳細については、図10を参照して後述する。
次にステップS203では、API選定・アプリケーションデプロイ処理部112は、アプリケーションリソースデプロイ処理部114に、マニフェスト7と、ステップS202で抽出された候補APIリストを送信する。アプリケーションリソースデプロイ処理部114は、アプリケーション実行環境3にマニフェスト7の要求を満たすアプリケーションリソースをデプロイし、API実行環境4に候補APIリストに挙げられたAPIリソースをデプロイするアプリケーションリソースデプロイ処理を実行する。アプリケーションリソースデプロイ処理の詳細については、図11を参照して後述する。
次にステップS204では、API選定・アプリケーションデプロイ処理部112は、アプリケーション動作テスト処理部115に、アプリケーションリソースデプロイ処理(ステップS203)でデプロイされたアプリケーションリソースの情報、APIリソースの情報、アプリケーション開発者6が入力したテストデータ、及び候補APIリストを送信する。アプリケーション動作テスト処理部115は、候補APIリストに挙げられたAPIの動作テストを行い、正常に動作しないAPIを候補APIリストから除外することで、候補APIリストを整理するアプリケーション動作テスト処理を実行する。アプリケーション動作テスト処理の詳細については、図12を参照して後述する。
次にステップS205では、API選定・アプリケーションデプロイ処理部112は、アプリケーションリリーステスト処理部116に、アプリケーション動作テスト処理(ステップS204)でテストしたアプリケーションリソース及びAPIリソースの情報を送信する。アプリケーションリリーステスト処理部116は、受信したアプリケーションリソース及びAPIリソースの情報に基づく評価対象のAPIへのトラフィックを徐々に増やすよう制御することで、最終的に最適なAPIを一意に決定するアプリケーションリリーステスト処理を実行する。アプリケーションリリーステスト処理の詳細については、図13を参照して後述する。アプリケーションリリーステスト処理は、アプリケーション動作テスト処理で使用された実行環境を引き続き使用して実行される。
次にステップS206では、API選定・アプリケーションデプロイ処理部112は、APIリソースアンデプロイ処理部216に、候補API抽出処理(ステップS202)で抽出された候補APIリスト及びアプリケーションリリーステスト処理で決定された一意のAPIの情報を送信する。APIリソースアンデプロイ処理部216は、アプリケーションリソースデプロイ処理でAPI実行環境4にデプロイしたAPIリソースのうちアプリケーションリリーステスト処理で決定された一意のAPIリソース以外のAPIリソースをアンデプロイするアプリケーションリソースアンデプロイ処理を実行する。APIリソースアンデプロイ処理の詳細については、図21を参照して後述する。
次にステップS207では、API選定・アプリケーションデプロイ処理部112は、ユーザ端末5に、アプリケーションリリーステスト処理(ステップS205)で算出した一意のAPIの情報を送信する。ステップS208では、API選定・アプリケーションデプロイ処理部112は、API選定・アプリケーションデプロイ処理を終了する。
(4-1-3)候補API抽出処理
図10は、アプリケーション管理ノード1の候補API抽出処理の処理手順の一例を示すフローチャートである。候補API抽出処理は、アプリケーション管理サーバ11がAPI要求の情報を受信したことを契機として実行される。候補API抽出処理部113は、APIリポジトリ22のAPIテーブル221のレコードからマニフェスト7のAPI機能要件に適合するAPIを抽出する処理である。
まずステップS301では、候補API抽出処理部113は、API要求の情報を受信したことを契機として、本処理を開始する。
次にステップS302では、候補API抽出処理部113は、API管理サーバ21にマニフェスト7のAPI要求のうち機能要件に関する情報とともにAPI参照処理の実行命令を送信する。
次にステップS303では、API管理サーバ21のAPI参照処理部211は、API参照処理の実行命令を受信したことを契機として、APIリポジトリ22のAPIテーブル221からマニフェスト7のAPI要求に適合するAPIのレコードを抽出する。具体的には、API参照処理部211は、API要求の機能要件の入力形式、出力形式、キーワードと、APIテーブル221の各レコードの入力形式、出力形式、説明のそれぞれを比較し、情報が一致又は類似するレコードをAPI要求に適合しているAPI(候補API)として抽出する。キーワードと説明の一致又は類似とは、説明の中にキーワードと一致する単語、又は、キーワードの類語が含まれていることをいう。API管理サーバ21は、抽出した候補APIの情報をアプリケーション管理サーバ11に送信する。API参照処理部211のAPI参照処理の詳細については、図16を参照して後述する。
次にステップS304では、候補API抽出処理部113は、API参照処理部211から受信した候補APIの情報に基づいて、候補APIリストを作成する。次にステップS305では、候補API抽出処理部113は、候補APIリストを出力する。ステップS306では、候補API抽出処理部113は、候補API抽出処理を終了する。
(4-1-4)アプリケーションリソースデプロイ処理
図11は、アプリケーション管理ノード1のアプリケーションリソースデプロイ処理の処理手順の一例を示すフローチャートである。以下の処理は、アプリケーション管理サーバ11がマニフェスト7と候補APIリストを受信したことを契機として実行する。アプリケーションリソースデプロイ処理は、アプリケーション実行環境3もしくはAPI実行環境4に、マニフェスト7で定義されているアプリケーションリソースと候補APIリストに挙げられているAPIリソースをデプロイする処理である。
まずステップS401では、アプリケーションリソースデプロイ処理部114は、マニフェスト7と候補APIリストを受信したことを契機に本処理を開始する。
次にステップS402において、アプリケーションリソースデプロイ処理部114は、マニフェスト7に基づいてAPI以外のアプリケーションリソースをアプリケーション実行環境3にデプロイする。
次にステップS403では、アプリケーションリソースデプロイ処理部114は、アプリケーション実行環境3にAPIゲートウェイ32をデプロイする。アプリケーション実行環境3にデプロイされたAPIゲートウェイ32は、アプリケーション実行環境3にデプロイされたアプリケーションリソースと、後の処理でAPI実行環境4にデプロイされるAPIリソースを連携させる処理を行う計算機である。
次にステップS404では、アプリケーションリソースデプロイ処理部114は、API管理サーバ21に候補APIリストとともに候補APIリストのAPIについてAPIリソースデプロイ処理の実行命令を送信する。
次にステップS405では、API管理サーバ21のAPIリソースデプロイ処理部215は、受信した候補APIリストに基づいて、候補APIリストで挙げられているAPIをAPI実行環境4にデプロイするAPIリソースデプロイ処理を実行する。APIリソースデプロイ処理の詳細については、図20を参照して後述する。APIリソースデプロイ処理部215は、APIリソースデプロイ処理の完了後、アプリケーションリソースデプロイ処理部114に、デプロイ完了情報を送信する。
次にステップS406では、アプリケーションリソースデプロイ処理部114は、候補APIリストに挙げられているAPIのデプロイ完了情報を受信する。次にステップS407では、アプリケーションリソースデプロイ処理部114は、アプリケーションリソースのデプロイ結果を出力する。ステップS408では、アプリケーションリソースデプロイ処理部114は、アプリケーションリソースデプロイ処理を終了する。
(4-1-5)アプリケーション動作テスト処理
図12は、アプリケーション管理ノード1のアプリケーション動作テスト処理の処理手順の一例を示すフローチャートである。以下の処理は、アプリケーション管理サーバ11のアプリケーション動作テスト処理部115が、デプロイ済みのアプリケーションリソースとAPIリソースの情報、アプリケーション開発者6が入力したテストデータ、及び候補APIリストを受信したことを契機として実行する。アプリケーション動作テスト処理は、API実行環境4にデプロイされたAPIがエラーなく正常に動作していることを確認するために行う検証の処理である。
まずステップS501では、アプリケーション動作テスト処理部115は、デプロイ済みのアプリケーションリソースとAPIリソースの情報、アプリケーション開発者6が入力したテストデータ、及び候補APIリストを受信したことを契機に、本処理を開始する。
次にステップS502では、アプリケーション動作テスト処理部115は、APIゲートウェイ32に、候補APIリストで挙げられているAPIのうちの未選択の1つのAPIとアプリケーションリソースの連携命令を送信する。APIゲートウェイ32は、受信したAPIとアプリケーションリソースの連携命令に従って連携処理を実行する。
次にステップS503では、アプリケーション動作テスト処理部115は、連携処理でAPIと連携させたアプリケーションリソースに、テストデータを送信する。
次にステップS504では、アプリケーション動作テスト処理部115は、テストデータを送信したアプリケーションリソースの処理性能や処理時間等のパフォーマンスを観測し、観測値がマニフェスト7のAPI性能要件を満たしているかを確認する。API性能要件とは、図6の例では、非機能要件のうちの成功率1227及び遅延1228である。アプリケーション動作テスト処理部115は、観測値がAPI性能要件を満たしていない場合(ステップS504NO)にステップS505へ処理を移す一方、観測値がAPI性能要件を満たしている場合(ステップS504YES)にはステップS506へ処理を移す。
ステップS505では、アプリケーション動作テスト処理部115は、API性能要件を満たさないと判定されたAPIのIDを候補APIリストから削除する。次に、ステップS506では、アプリケーション動作テスト処理部115は、候補APIリストに挙げられている全てのAPIに対してステップS502~S505の処理を実行したかを確認する。アプリケーション動作テスト処理部115は、候補APIリストに挙げられている全てのAPIに対してステップS502~S505の処理を実行した場合(ステップS506YES)にステップS507へ処理を移す一方、実行していない場合(ステップS506NO)にステップS502に処理を戻す。
ステップS507では、アプリケーション動作テスト処理部115は、API性能要件を充足しないAPIが除外された候補APIリストを出力する。次に、ステップS508では、アプリケーション動作テスト処理部115は、アプリケーション動作テスト処理を終了する。
(4-1-6)アプリケーションリリーステスト処理
図13は、アプリケーション管理ノード1のアプリケーションリリーステスト処理の処理手順の一例を示すフローチャートである。アプリケーションリリーステスト処理は、アプリケーション管理サーバ11がデプロイ済みのアプリケーションリソースとAPIリソースの情報、候補APIリストを受信したことを契機として実行される。アプリケーションリリーステスト処理は、アプリケーション動作テスト処理に引き続き、アプリケーション実行環境3にデプロイされたアプリケーション、及び、API実行環境4にデプロイされたAPI性能要件を充足するAPIに対して実行される。
アプリケーションリリーステスト処理部116は、アプリケーション実行環境3のアプリケーションリソースに接続されている複数のAPIの全てに対してトラフィックを流して、APIの性能を計測し、最良の計測値であるAPIへのトラフィックが徐々に増えていくように制御することで、最終的に最良な性能を持つAPIを一意に決定するために行う検証の処理である。ここで言う性能とは、開発対象のアプリケーションと連携するAPIの性能を定量的に計測可能な指標である。
まずステップS601では、アプリケーション管理サーバ11のアプリケーションリリーステスト処理部116は、デプロイ済みのアプリケーションリソースとAPIリソースの情報、及び候補APIリストを受信したことを契機に、本処理を開始する。
次にステップS602では、アプリケーションリリーステスト処理部116は、アプリケーション実行環境3のAPIゲートウェイ32に対して、APIゲートウェイ32を介してアプリケーションリソースと連携している全てのAPIに均一量のトラフィックが流れるようにする制御命令を送信する。例えば、候補APIリストにn個のAPIが挙げられている場合、n個の各APIに対して均一に(100/n)%ずつのトラフィックが流れる制御が行われる。
次にステップS603では、アプリケーションリリーステスト処理部116は、ステップS602で均一量のトラフィックを流した各APIの性能を計測し、計測値をメモリに保存する。
次にステップS604において、アプリケーションリリーステスト処理部116は、ステップS603でメモリに保存した候補APIの性能の各計測値を比較し、性能がより高いAPIに他のAPIよりも多くのトラフィックが流れるようにする制御命令をAPIゲートウェイ32に送信する。例えば、候補APIリストに挙げられているn個のAPIうちの1つであるAPI(A)の性能の計測値が最良であった場合、API(A)以外の(n-1)個のAPIに流すトラフィックをα%ずつ引き下げ、API(A)に流すトラフィックを(n-1)×α%だけ引き上げる制御が行われる。
次にステップS605では、アプリケーションリリーステスト処理部116は、性能が最良なAPIが一意に定まったかを確認する。APIが一意に定まるとは、APIゲートウェイ32から候補APIリストに挙げられている複数のAPIのうち1つのAPIに対して流されるトラフィックが、100%になったことをいう。つまり、APIゲートウェイ32から1つのAPIに対して100%のトラフィックが流されるようになったことをいう。APIが一意に定まった場合(ステップS605YES)にステップS606へ処理を移す一方、APIが一意に定まっていない場合(ステップS605NO)にステップS604に処理を戻す。
次にステップS606では、アプリケーションリリーステスト処理部116は、ステップS605で一意に定まったとされたAPIのIDを出力する。ステップS607では、アプリケーションリリーステスト処理部116は、アプリケーションリリーステスト処理を終了する。
(4-1-7)アプリケーションリソースアンデプロイ処理
図14は、アプリケーション管理ノード1のアプリケーションリソースアンデプロイ処理の処理手順の一例を示すフローチャートである。アプリケーションリソースアンデプロイ処理は、アプリケーション管理サーバ11がマニフェスト7又は候補APIリストを受信したことを契機として実行される。アプリケーションリソースアンデプロイ処理は、アプリケーション実行環境3もしくはAPI実行環境4から、マニフェスト7で定義されているアプリケーションリソース又は候補APIリストに挙げられているAPIリソースをアンデプロイする処理である。
まずステップS701では、アプリケーション管理サーバ11のアプリケーションリソースアンデプロイ処理部118は、マニフェスト7又はAPIリストを受信したことを契機に本処理を開始する。
次にステップS702では、アプリケーションリソースアンデプロイ処理部118は、受信したマニフェスト7又は候補APIリストに基づいて、APIリソースアンデプロイ処理部216に対してAPIリソースアンデプロイ命令を送信する。APIリソースアンデプロイ処理部216は、API実行環境4にデプロイされているAPIをアンデプロイするAPIリソースアンデプロイ処理を実行する。APIリソースアンデプロイ処理の詳細については、図21を参照して後述する。
次にステップS703では、アプリケーションリソースアンデプロイ処理部118は、ステップS701において入力されたデータがマニフェスト7であるかを確認する。アプリケーションリソースアンデプロイ処理部118は、入力データがマニフェスト7である場合(ステップS703YES)にステップS704へ処理を移す一方、入力データが候補APIリストである場合(ステップS703NO)にステップS706に処理を移す。
次にステップS704では、アプリケーションリソースアンデプロイ処理部118は、アプリケーション実行環境3上のAPIゲートウェイ32をアンデプロイする。次にステップS705では、アプリケーションリソースアンデプロイ処理部118は、ステップS701で入力されたマニフェスト7に基づいてアプリケーション実行環境3上のアプリケーションリソースをアンデプロイする。
次にステップS706では、アプリケーションリソースアンデプロイ処理部118は、アンデプロイ結果をユーザ端末5に出力する。ステップS707では、アプリケーションリソースアンデプロイ処理部118は、アプリケーションリソースアンデプロイ処理を終了する。
(4-1-8)アプリケーションリソース監視処理
図15は、アプリケーション管理ノード1のアプリケーションリソース監視処理の処理手順の一例を示すフローチャートである。アプリケーションリソース監視処理は、アプリケーション管理サーバ11がアプリケーションリソース監視命令を受信したことを契機として実行される。アプリケーションリソース監視では、アプリケーションの状態、アプリケーションリソースデータベース12、APIリポジトリ22の監視を行う。
アプリケーションリソース監視処理部117は、アプリケーションリソース監視処理を定期的(例えば10秒に1回)に実行する。アプリケーションリソース監視処理は、下記(a)、(b)、及び(c)の条件を定期的に監視し、何れかの条件に該当することを検知したことを契機として、API選定・アプリケーションデプロイ処理部112が、API選定・アプリケーションデプロイ処理を実行するものである。
(a)アプリケーション実行環境3上にデプロイ済みのアプリケーションの性能の観測値が、マニフェスト7のAPI性能要件を満たさなくなったこと。
(b)APIリポジトリ22のAPIテーブル221において、レコードが新規登録、情報更新、又は削除されたこと(APIの新規登録、更新、及び削除)。
(c)アプリケーションリソースデータベース12のAPI要求テーブル122において、レコードが新規登録、情報更新、又は削除されたこと(API要求の新規登録、更新、及び削除)。
まずステップS80S801では、アプリケーションリソース監視処理部117は、アプリケーションリソース監視命令を受信したことを契機に、本処理を開始する。
次にステップS802では、アプリケーションリソース監視処理部117は、アプリケーション実行環境3のアプリケーションリソースの動作状態等の情報を取得し、アプリケーションの状態に異常がないか、及び、アプリケーションのパフォーマンスがマニフェスト7のAPI性能要件を満たしているかを確認する。
アプリケーションリソース監視処理部117は、アプリケーションの状態に異常がなく、なおかつアプリケーションのパフォーマンスがマニフェスト7のAPI性能要件を満たしている場合(ステップS802YES)にステップS803へ処理を移す。一方、アプリケーションリソース監視処理部117は、アプリケーションの状態に異常がある、又は、アプリケーションのパフォーマンスがマニフェスト7のAPI性能要件を満たしていない場合(ステップS802NO)にステップS805に処理を移す。
ステップS803では、アプリケーションリソース監視処理部117は、API管理サーバ21を介して、APIリポジトリ22のAPIテーブル221においてレコードの追加、更新、又は削除があるかを確認する。
具体的には、アプリケーションリソース監視処理部117は、API管理サーバ21に、APIリポジトリ22の状態情報の要求命令を送信する。API管理サーバ21は、APIリポジトリ22の状態情報の要求命令を受信すると、API参照処理部211を用いてAPIリポジトリ22のAPIテーブル221においてレコードの追加、更新、又は削除がないかを確認し、アプリケーションリソース監視処理部117へ送信する。
アプリケーションリソース監視処理部117は、APIリポジトリ22のAPIテーブル221においてレコードの追加、更新、又は削除があるかの確認結果を受信し、確認結果に応じて次の処理を実行する。すなわち、アプリケーションリソース監視処理部117は、APIリポジトリ22のAPIテーブル221においてレコードの追加、更新、又は削除がない場合(ステップS803NO)にステップS804に処理を移す。一方、アプリケーションリソース監視処理部117は、APIリポジトリ22のAPIテーブル221においてレコードの追加、更新、又は削除がある場合(ステップS803YES)にステップS805に処理を移す。
ステップS804では、アプリケーションリソース監視処理部117は、アプリケーションリソースデータベース12のリソース構成テーブル121及びAPI要求テーブル122でレコードの追加、更新、又は削除があるかを確認する。アプリケーションリソース監視処理部117は、アプリケーションリソースデータベース12のリソース構成テーブル121及びAPI要求テーブル122においてレコードの追加、更新、又は削除がない場合(ステップS804NO)にステップS806へ処理を移す。一方、アプリケーションリソース監視処理部117は、アプリケーションリソースデータベース12のリソース構成テーブル121及びAPI要求テーブル122においてレコードの追加、更新、又は削除がある場合(ステップS804YES)にステップS805に処理を移す。
ステップS805では、アプリケーションリソース監視処理部117は、API選定・アプリケーションデプロイ処理の開始命令と、ステップS802~S804の何れかでNOと判定されたケースに該当するリソースのマニフェスト7をAPI選定・アプリケーションデプロイ処理部112に送信する。API選定・アプリケーションデプロイ処理部112は、API選定・アプリケーションデプロイ処理の開始命令と該当リソースのマニフェスト7を受信すると、図9を参照して説明したAPI選定・アプリケーションデプロイ処理を実行する。
ステップS805の完了後は、アプリケーションリソース監視処理部117は、ステップS802に処理を戻し、各ステップを繰り返し処理する。ステップS806では、アプリケーションリソース監視処理部117は、アプリケーションリソース監視処理を終了する。
上述のアプリケーションリソース監視処理によって、アプリケーションリソース監視処理を定期的に実施し、アプリケーションと連携させるAPIを、類似性及び性能要件の充足度がより高いAPIへと再選定することで、アプリケーション性能を継続的に改善する効果が期待できる。
(4-2)API管理サーバ21の処理
図16~図21は、API管理ノード2のAPI管理サーバ21が実行する処理のフローチャートである。
(4-2-1)API参照処理
図16は、API管理ノード2のAPI参照処理の処理手順の一例を示すフローチャートである。API参照処理は、図10のステップS303の処理であり、API管理サーバ21のAPI参照処理部211がAPI参照要求を受信したことを契機として実行される。API参照処理は、APIリポジトリ22のAPIテーブル221のレコードをAPI参照要求の送信元に提供する処理である。
まずステップS901では、API管理サーバ21のAPI参照処理部211は、API参照要求を受信したことを契機に本処理を開始する。
次にステップS902では、API参照処理部211は、処理の要求元より入力された参照要求の対象のAPIに関する情報(API関連情報)の入力を受け付ける。次にステップS903では、API参照処理部211は、ステップS902で入力を受け付けたAPI関連情報を用いてステートメントを作成し、このステートメントを用いてAPIリポジトリ22のAPIテーブル221から条件に合致するAPIを抽出する。
次にステップS904では、API参照処理部211は、API参照の要求先に、ステップS903の処理で抽出したAPIに関する情報を送信する。ステップS905では、API参照処理部211は、API参照処理を終了する。
(4-2-2)API登録処理
図17は、API管理ノード2のAPI登録処理の処理手順の一例を示すフローチャートである。API登録処理は、API管理サーバ21のAPI登録処理部212がAPI登録要求を受信したことを契機として実行される。API登録処理は、API登録画面GUI91(図3)を介して入力された情報に基づきAPIリポジトリ22のAPIテーブル221に新規レコードを登録する処理である。
まずステップS1001では、API登録処理部212は、API登録要求を受信したことを契機に本処理を開始する。次に、ステップS1002では、API登録処理部212は、要求元より入力された新規APIのAPI情報9の入力を、API登録画面GUI91を介して受け付ける。
次にステップS1003では、API登録処理部212は、ステップS1002で入力を受け付けたAPI情報9を用いて、APIリポジトリ22のAPIテーブル221に新規レコードを追加するためのステートメントを作成する。次にステップS1004では、API登録処理部212は、ステップS1003で作成されたステートメントを用いて、APIリポジトリ22のAPIテーブル221に新規レコードを追加する。
次にステップS1005では、API登録処理部212は、API登録処理の要求元に、API登録の処理結果に関する情報を送信する。ステップS1006では、API登録処理部212は、API参照処理を終了する。
(4-2-3)API情報更新処理
図18は、API管理ノード2のAPI情報更新処理の処理手順の一例を示すフローチャートである。API情報更新処理は、API管理サーバ21のAPI情報更新処理部213がAPI参照要求を受信したことを契機として実行される。API情報更新処理は、API設定変更画面GUI92(図4)を介して入力された情報に基づきAPIリポジトリ22のAPIテーブル221に存在するレコードの情報を更新する処理である。
まずステップS1101では、API情報更新処理部213は、API参照要求を受信したことを契機としてAPI情報更新処理を開始する。
次にステップS1102では、API情報更新処理部213は、ユーザによるユーザ端末5の操作に応じて、API参照処理部211に対してAPI参照要求を送信してAPI参照処理(図16)を呼び出す。そして、API情報更新処理部213は、該当ユーザのIDをAPI関連情報としてAPI参照処理に入力し、該当ユーザが管理するAPIの一覧情報を取得する。
次にステップS1103では、API情報更新処理部213は、ユーザ端末5を用いた該当ユーザによる情報更新の対象となるAPIの選択を受け付ける。次にステップS1104では、API情報更新処理部213は、ステップS1103の処理により選択されたAPIについて取得されたAPI情報9を用いて該当APIのAPI詳細情報をAPI設定変更画面GUI92に表示する。
次にステップS1105では、ユーザ端末5は、その表示部に表示するAPI設定変更画面GUI92上でAPI詳細情報の変更を受け付け、API詳細情報とAPI更新情報を用いて、該当APIに関する情報更新要求を生成し、API情報更新処理部213に送信する。
次にステップS1106では、API情報更新処理部213は、情報更新要求を受信し、API詳細情報とAPI更新情報を用いてAPI情報を更新するためのステートメントを作成する。次にステップS1107では、API情報更新処理部213は、ステップS1106で作成されたステートメントを用いてAPIリポジトリ22のAPIテーブル221の該当レコード情報を更新する。
次にステップS1108では、API情報更新処理部213は、API情報更新処理の要求元に、API情報更新結果に関する情報を送信する。ステップS1109では、API情報更新処理部213は、API情報更新処理を終了する。
(4-2-4)API削除処理
図19は、API管理ノード2のAPI削除処理の処理手順の一例を示すフローチャートである。以下の処理は、API管理サーバ21がAPI参照要求を受信したことを契機として実行される。API削除処理は、API設定変更画面GUI92(図4)を介して入力された情報に基づきAPIリポジトリ22のAPIテーブル221に存在するレコードを削除する処理である。
まずステップS1201では、API管理サーバ21のAPI削除処理部214は、API参照要求を受信したことを契機としてAPI削除処理を開始する。
次にステップS1202では、API削除処理部214は、ユーザによるユーザ端末5の操作に応じて、API参照処理部211に対してAPI参照要求を送信してAPI参照処理(図16)を呼び出す。そして、API削除処理部214は、該当ユーザのIDをAPI関連情報としてAPI参照処理に入力し、該当ユーザが管理するAPIの一覧情報を取得する。
次にステップS1203では、API削除処理部214は、ユーザ端末5を用いた該当ユーザによる削除対象のAPIの選択を受け付ける。次にステップS1204では、API削除処理部214は、ステップS1203の処理により選択されたAPIについて取得されたAPI情報9を用いて該当APIのAPI詳細情報をAPI設定変更画面GUI92に表示する。
次にステップS1205では、ユーザ端末5は、その表示部に表示するAPI設定変更画面GUI92上でAPIの削除指示を受け付け、API削除処理部214にAPIの削除要求を送信する。次にステップS1206では、API削除処理部214は、APIの削除要求を受信し、API詳細情報を用いてAPI情報を削除するためのステートメントを作成する。
次にステップS1207では、API削除処理部214は、ステップS1206で作成されたステートメントを用いてAPIリポジトリ22のAPIテーブル221の該当レコード情報を削除する。次にステップS1208では、API削除処理部214は、API削除処理の要求元に、API削除結果に関する情報を送信する。ステップS1209では、API削除処理部214は、API削除処理を終了する。
(4-2-5)APIリソースデプロイ処理
図20は、API管理ノード2のAPIリソースデプロイ処理の処理手順の一例を示すフローチャートである。APIリソースデプロイ処理は、API管理サーバ21がAPIリソースデプロイ要求を受信したことを契機として実行する。APIリソースデプロイ処理は、入力された情報に基づきAPIリポジトリ22のAPIテーブル221から適切なAPIを参照し、API仕様定義ファイルなどのデータを含むAPIに関する情報のパッケージを用いてAPIリソースをAPI実行環境4へデプロイする処理である。
まずステップS1301では、API管理サーバ21のAPIリソースデプロイ処理部215は、APIリソースデプロイ要求を受信したことを契機としてAPIリソースデプロイ処理を開始する。
次にステップS1302では、APIリソースデプロイ処理部215は、API参照処理部211に対してAPI参照要求を送信してAPI参照処理(図16)を呼び出し、APIリソースデプロイ要求に含まれる情報を用いてAPIテーブル221を探索し、適切なAPIのパッケージを取得する。
次にステップS1303では、APIリソースデプロイ処理部215は、ステップS1302で取得されたパッケージを用いて、API実行環境4にAPIをデプロイする。次にステップS1304では、APIリソースデプロイ処理部215は、APIリソースデプロイ処理の要求元に、APIリソースデプロイ結果に関する情報を送信する。ステップS1305では、APIリソースデプロイ処理部215は、APIリソースデプロイ処理を終了する。
(4-2-6)APIリソースアンデプロイ処理
図21は、API管理ノード2のAPIリソースアンデプロイ処理の処理手順の一例を示すフローチャートである。APIリソースアンデプロイ処理は、API管理サーバ21のAPIリソースアンデプロイ処理部216がAPIリソースアンデプロイ要求を受信したことを契機として実行される。APIリソースアンデプロイ処理は、APIリソースアンデプロイ処理部216へ入力された情報に基づき、API実行環境4から目的のAPIリソースをアンデプロイする処理である。
まずステップS1401では、APIリソースアンデプロイ処理部216は、APIリソースアンデプロイ要求を受信したことを契機としてAPIリソースアンデプロイ処理を開始する。
次にステップS1402では、APIリソースアンデプロイ処理部216は、APIリソースアンデプロイ要求に含まれる情報を用いて、API実行環境4に存在する目的のAPIリソースのアンデプロイを実行する。次にステップS1403では、APIリソースアンデプロイ処理部216は、APIリソースアンデプロイ処理の要求元に、APIアンリソースデプロイ結果に関する情報を送信する。ステップS1404では、APIリソースアンデプロイ処理部216は、APIリソースアンデプロイ処理を終了する。
以上の本実施例では、API連携型アプリケーションの開発において、アプリケーションから他のアプリケーション(API)を呼び出すに際し、呼び出し元のアプリケーションの開発者の要求に最適なアプリケーションを選定することを支援する。このため、アプリケーション開発者が求めるAPI性能要件とAPI開発者が定義したAPIの対応付けを、API要求テーブル122の機能要件とAPIテーブル221の記載内容とを対応付ける。
そして本実施例では、様々なAPIに対して仕様確認(例えば候補API抽出処理)やテスト(アプリケーション動作テストやアプリケーションリリーステスト等)を自動実行しアプリケーション開発者の要求に合致するAPIを選定することで、API選定を迅速化する動的API選定システムを実現する。
よって本実施例によれば、API要求テーブル122及びAPIテーブル221の追加や更新に応じて、アプリケーションが利用するAPIを動的・継続的に変更できる。これによって、迅速化するAPIの新規提供や、改修、仕様変更等のサイクルに追随しながら、変化の激しい顧客要求に継続的に応えるように、アプリケーション動作テストとアプリケーションリリーステストを同一環境上でシームレスに行って最適なAPIを迅速に選定する。そして、アプリケーションの開発者の負担を軽減し開発効率を向上させることができる。
図22は、API選定システムSを実現するコンピュータのハードウェアの一例を示す図である。コンピュータ5000では、プロセッサ5100、メモリ5200、ストレージ5300、ネットワークインターフェース5400、入力装置5500、及び出力装置5600が、バス5700を介して接続されている。プロセッサ5100は、CPU(Central Processing Unit)等である。メモリ5200は、RAM(Random Access Memory)等である。ストレージ5300は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、媒体読取装置等である。入力装置5500は、キーボード、マウス、タッチパネル等である。出力装置5600は、ディスプレイ等である。
コンピュータ5000において、API選定システムSを実現するためのプログラムがストレージ5300から読み出されて、プロセッサ5100及びメモリ5200の協働により実行されることにより、API選定システムSが実現される。あるいは、API選定システムSを実現するためのプログラムは、ネットワークインターフェース5400を介した通信により外部のコンピュータから取得されてもよい。あるいは、アプリケーション管理サーバ11及びAPI管理サーバ21を実現するための各プログラムは、可搬型の記録媒体(光学ディスク、半導体記憶媒体等)に記録され、媒体読取装置により読み出されて、プロセッサ5100及びメモリ5200の協働により実行されてもよい。
なおアプリケーション管理サーバ11、アプリケーションリソースデータベース12、API管理サーバ21、APIリポジトリ22、アプリケーション実行環境3、及びAPI実行環境4のそれぞれは、1つのコンピュータ5000上で実現されてもよいし、各機能部が複数のコンピュータ5000に適宜分散配置されて実現されてもよい。またアプリケーションリソースデータベース12、API管理サーバ21、APIリポジトリ22、アプリケーション実行環境3、及びAPI実行環境4は、クラウドで構築されてもよいし、オンプレミスで構築されてもよい。
本発明は上述の実施形態に限定されるものではなく、様々な変形例を含む。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、矛盾しない限りにおいて、ある実施形態の構成の一部を他の実施形態の構成で置き換え、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、構成の追加、削除、置換、統合、又は分散をすることが可能である。また実施形態で示した構成及び処理は、処理効率又は実装効率に基づいて適宜分散、統合、又は入れ替えることが可能である。
S:動的API選定システム、1:アプリケーション管理ノード、2:API管理ノード、3:アプリケーション実行環境、4:API実行環境、5:ユーザ端末、7:アプリケーションリソース構成定義ファイル(マニフェスト)、11:アプリケーション管理サーバ、12:アプリケーションリソースデータベース、21:API管理サーバ、22:APIリポジトリ、31:アプリケーションインスタンス、32:APIゲートウェイ、32:アプリケーションインスタンス、33:コンテナ管理機能部、34:コンテナランタイム

Claims (7)

  1. API(Application Programming Interface)を選定するAPI選定システムであって、
    APIを該APIが有する機能要件と対応付けて蓄積するAPIリポジトリと、
    アプリケーション開発者が開発するアプリケーションが連携するAPIに求められる機能要件及び非機能要件を定義するAPI要求定義の入力を前記アプリケーション開発者から受け付けて記憶部に保存する保存処理部と、
    前記保存処理部によって前記記憶部に保存された前記API要求定義の機能要件と一致又は類似する機能要件を有する複数の候補APIを前記APIリポジトリから抽出する候補API抽出処理を実行する候補API抽出処理部と
    を有することを特徴とするAPI選定システム。
  2. 前記API要求定義は、
    探索対象のAPIを保存する前記APIリポジトリのアドレスと、
    前記機能要件として、APIのデータの入出力形式及び該APIの探索のためのキーワードと、
    前記非機能要件として、APIの性能要件及びリリース方式と
    が記述されており、
    前記候補API抽出処理部は、前記候補API抽出処理において、
    前記アドレスの前記APIリポジトリに保存されているAPIのなかから、前記API要求定義に記述されている入出力形式及びキーワードと一致又は類似する入出力形式及び単語が対応付けられているAPIを抽出する
    ことを特徴とする請求項1に記載のAPI選定システム。
  3. 前記アプリケーション、APIゲートウェイ、及び前記複数の候補APIを実行環境にデプロイするデプロイ処理を実行するアプリケーションデプロイ処理部と、
    前記APIゲートウェイを介して前記アプリケーションと前記候補APIを連携してアプリケーションの動作テストを行い、APIを連携した前記アプリケーションの性能の観測値が前記性能要件を充足するかを判定し、前記性能要件を充足しないと判定されたAPIを前記候補APIから除外する動作テスト処理を実行するアプリケーション動作テスト処理部と
    を有することを特徴とする請求項2に記載のAPI選定システム。
  4. 前記アプリケーション動作テスト処理部によって前記性能要件を充足しないと判定されたAPIが除外された前記候補APIに含まれる全てのAPIにトラフィックを流してAPIの性能を計測し、最良の計測値である一意のAPIを決定するリリーステスト処理を行うアプリケーションリリーステスト処理部
    を有することを特徴とする請求項3に記載のAPI選定システム。
  5. 前記アプリケーションリリーステスト処理部は、
    前記リリーステスト処理を、前記動作テスト処理に引き続き、前記実行環境にデプロイされた前記アプリケーション及びAPIに対して実行することを特徴とする請求項4に記載のAPI選定システム。
  6. 下記(a)、(b)、及び(c)を定期的に監視するアプリケーションリソース監視処理部を有し、
    前記アプリケーションリソース監視処理部によって下記(a)、(b)、及び(c)の何れかの条件に該当することが検知されたことを契機として、前記候補API抽出処理、前記デプロイ処理、前記動作テスト処理、及び、前記リリーステスト処理を再実行することを特徴とする請求項4に記載のAPI選定システム。
    (a)前記実行環境にデプロイ済みの前記アプリケーションの性能の観測値が、前記性能要件を満たさなくなったこと。
    (b)前記APIリポジトリにおいて、APIが新規登録、情報更新、又は削除されたこと。
    (c)前記記憶部において、前記API要求定義が新規登録、情報更新、又は削除されたこと。
  7. API(Application Programming Interface)を選定するAPI選定システムが実行するAPI選定方法であって、
    前記API選定システムが、
    アプリケーション開発者が開発するアプリケーションが連携するAPIに求められる機能要件及び非機能要件を定義するAPI要求定義の入力を前記アプリケーション開発者から受け付けて記憶部に保存する保存処理ステップと、
    前記保存処理ステップによって前記記憶部に保存された前記API要求定義の機能要件と一致又は類似する機能要件を有する複数の候補APIを。APIを該APIが有する機能要件と対応付けて蓄積するAPIリポジトリから抽出する候補API抽出処理を実行する候補API抽出処理ステップと
    を有することを特徴とするAPI選定方法。
JP2020141181A 2020-08-24 2020-08-24 Api選定システム及びapi選定方法 Pending JP2022036800A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020141181A JP2022036800A (ja) 2020-08-24 2020-08-24 Api選定システム及びapi選定方法
US17/206,247 US11281507B2 (en) 2020-08-24 2021-03-19 API selection system and API selection method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020141181A JP2022036800A (ja) 2020-08-24 2020-08-24 Api選定システム及びapi選定方法

Publications (1)

Publication Number Publication Date
JP2022036800A true JP2022036800A (ja) 2022-03-08

Family

ID=80270713

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020141181A Pending JP2022036800A (ja) 2020-08-24 2020-08-24 Api選定システム及びapi選定方法

Country Status (2)

Country Link
US (1) US11281507B2 (ja)
JP (1) JP2022036800A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240031443A1 (en) * 2022-07-20 2024-01-25 Bentley Systems, Incorporated Workspace databases

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11656975B2 (en) * 2021-03-05 2023-05-23 Jpmorgan Chase Bank, N.A. System and method for automatically generating executable tests in Gherkin format
US11456911B1 (en) * 2021-09-01 2022-09-27 Jpmorgan Chase Bank, N.A. System and method for implementing a platform and language agnostic smart resiliency module
US20240061732A1 (en) * 2022-08-18 2024-02-22 Red Hat, Inc. Industry opinionated api managed service

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3299285B2 (ja) * 1991-04-23 2002-07-08 株式会社日立製作所 半導体記憶装置
US8302111B2 (en) * 2003-11-24 2012-10-30 Time Warner Cable Inc. Methods and apparatus for hardware registration in a network device
US20060015940A1 (en) * 2004-07-14 2006-01-19 Shay Zamir Method for detecting unwanted executables
US8413172B2 (en) * 2008-08-20 2013-04-02 Sharp Laboratories Of America, Inc. Method and system for socket API call emulation
US20120082306A1 (en) * 2010-10-05 2012-04-05 Andrew William Hulse Data Encryption and Input System
US9077773B2 (en) 2011-11-17 2015-07-07 Mashape, Inc. Cloud-based hub for facilitating distribution and consumption of application programming interfaces
US10417060B2 (en) * 2016-06-27 2019-09-17 Verizon Patent And Licensing Inc. Automated API publication for Internet of Things platform
US10616230B2 (en) * 2018-01-23 2020-04-07 Salesforce.Com, Inc. Managing authorization tokens for calling third-party vendors
US11113029B2 (en) * 2019-04-10 2021-09-07 International Business Machines Corporation Probabilistic matching of web application program interface code usage to specifications

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20240031443A1 (en) * 2022-07-20 2024-01-25 Bentley Systems, Incorporated Workspace databases
US11936741B2 (en) * 2022-07-20 2024-03-19 Bentley Systems, Incorporated Workspace databases
US11943305B2 (en) 2022-07-20 2024-03-26 Bentley Systems, Incorporated Workspace databases

Also Published As

Publication number Publication date
US20220058064A1 (en) 2022-02-24
US11281507B2 (en) 2022-03-22

Similar Documents

Publication Publication Date Title
JP2022036800A (ja) Api選定システム及びapi選定方法
US10990644B2 (en) Systems and methods for contextual vocabularies and customer segmentation
JP6695437B2 (ja) 管理計算機及びテスト環境決定方法
KR101355273B1 (ko) 컴퓨팅 시스템 및 그 실행 제어 방법과, 그 실행 제어 프로그램을 기록한 기록 매체
US9910821B2 (en) Data processing method, distributed processing system, and program
US10437709B2 (en) Mobile application optimization platform
JP2010044532A (ja) メモリ管理方法、メモリ管理プログラム、および、メモリ管理装置
US11797566B2 (en) Attribute sharing platform for data processing systems
JP6094593B2 (ja) 情報システム構築装置、情報システム構築方法および情報システム構築プログラム
US20180329873A1 (en) Automated data extraction system based on historical or related data
US11687848B2 (en) Identifying correlated roles using a system driven by a neural network
JP6890557B2 (ja) 分析モデル作成システム、プログラミング装置および分析モデル作成方法
US11200527B2 (en) Platform for evaluating and recommending process automations
JP5397782B2 (ja) 業務プロセス管理装置、業務プロセス管理方法、及び業務プロセス管理プログラム
KR102006972B1 (ko) 사용자 태그 관리 방법 및 장치
US10769054B1 (en) Integrated program code marketplace and service provider network
CN114791915B (zh) 数据归集方法、装置、计算机设备和存储介质
JP7340952B2 (ja) テンプレート検索システムおよびテンプレート検索方法
CN113297226A (zh) 数据存储方法、数据读取方法、装置、电子设备及介质
JP5996094B2 (ja) 仮想マシンイメージ管理サーバ、及び仮想マシンイメージ管理方法
JP2015082290A (ja) 端末装置、情報処理装置、情報処理システム、表示制御方法および表示制御プログラム
JP6455087B2 (ja) 帳票情報処理プログラム、帳票情報処理装置、および帳票情報処理方法
JP7261710B2 (ja) データ仲介装置およびデータ仲介方法
JP2023177712A (ja) レコメンド生成システム、レコメンド生成方法、およびレコメンド生成プログラム
JP6575099B2 (ja) 運用操作管理プログラム、運用操作管理装置および運用操作管理方法