JP2019101541A - Api管理システムおよびapi管理方法 - Google Patents

Api管理システムおよびapi管理方法 Download PDF

Info

Publication number
JP2019101541A
JP2019101541A JP2017228969A JP2017228969A JP2019101541A JP 2019101541 A JP2019101541 A JP 2019101541A JP 2017228969 A JP2017228969 A JP 2017228969A JP 2017228969 A JP2017228969 A JP 2017228969A JP 2019101541 A JP2019101541 A JP 2019101541A
Authority
JP
Japan
Prior art keywords
api
flow control
information
user
time
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.)
Granted
Application number
JP2017228969A
Other languages
English (en)
Other versions
JP6815975B2 (ja
Inventor
秀行 坂井
Hideyuki Sakai
秀行 坂井
角谷 有司
Yuji Sumiya
有司 角谷
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 JP2017228969A priority Critical patent/JP6815975B2/ja
Publication of JP2019101541A publication Critical patent/JP2019101541A/ja
Application granted granted Critical
Publication of JP6815975B2 publication Critical patent/JP6815975B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】マッシュアップの含む各APIの属性やエンドユーザのニーズを踏まえ、マッシュアップ全体の処理効率を好適なものとする。【解決手段】API管理システム1において、APIの各ユーザに関する流量制御状態の情報を格納した記憶部103と、APIのマッシュアップに関するユーザからのリクエストを所定装置より受け付けて、前記リクエストが含む当該マッシュアップの定義と、前記ユーザの該当APIに関する前記流量制御状態の情報とを所定アルゴリズムに適用し、前記定義におけるAPI間の依存関係を制約条件とし、前記流量制御状態の情報における流量制御解除までの待機時間を最小化する、APIの処理スケジュールを生成する演算部102を含む構成とする。【選択図】図1

Description

本発明は、API管理システムおよびAPI管理方法に関するものであり、具体的には、マッシュアップの含む各APIの属性やエンドユーザのニーズを踏まえ、マッシュアップ全体の処理効率を好適なものとする技術に関する。
あるソフトウェアの機能やデータを、他のソフトウェアから呼び出して利用するための規約をAPI(Application Programming Interface)と呼ぶ。ソフトウェア開発者は、そうしたAPIを利用する簡易なプログラムを、開発対象のソフトウェアに記述するだけで、当該APIに対応した機能やデータを利用したソフトウェアの開発が可能である。
一方、近年では、自社の情報サービスがもつ機能やデータを、ネットワーク経由で呼び出せるAPI(WebAPIとも呼ばれる)を公開する企業が増えている。そのため、それらAPIを他社から利用してもらうことで、自社サービスの価値向上を図るビジネスモデルが広まりを見せている。
上述のごとき技術背景を踏まえたソフトウェア開発者は、様々な新ビジネスのアイデアを迅速にソフトウェアとして実現すべくAPIを適宜利用することになる。そのため、APIへのニーズは多様であり、そのニーズへの迅速な対応が求められる。
しかしながら、APIの公開企業では、上述のニーズに対応したAPIの改修や追加に時間を要することが多い。よって、APIの公開側と利用側とで、そのスピード感がずれてしまうケースも多くなる。
そのようなケースに対し、複数個の公開済みAPIを組合せて新しいAPIを構成するという、APIマッシュアップ技術が注目されている。この技術により、API公開側での追加開発無しで、API利用側のニーズに対応する新しいAPIを迅速に公開できる。また、API利用側にとっては、従来であれば複数回のリクエストが必要であった機能を、1回のリクエストで利用可能となる。これに付随して、通信効率向上の効果も期待できる。
こうしたAPIマッシュアップに関する従来技術としては、例えば、所定の目的を少なくとも通信を行って実現するイネーブラに繋がるAPIを複数組合せたアプリケーションが、所望の情報を取得するためのリクエスト情報を前記APIを介して前記イネーブラへ送信し、当該送信されたリクエスト情報を受信した前記イネーブラが前記リクエスト情報に応じたレスポンス情報を、前記APIを介して前記アプリケーションへ返信する通信システムにおいて、前記アプリケーションと前記イネーブラとの間に少なくとも前記APIを介して接続されたAPI集約装置であって、前記APIが前記イネーブラに対して行う前記リクエスト情報及び前記レスポンス情報の送受信中継の実行回数を計数し、この計数された実行回数から、前記APIが独立で実行した独立実行回数と、前記APIが組合されて実行した組合せ実行回数を求め、前記独立実行回数が予め定められた第1回数より小さく、且つ前記組合せ実行回数が予め定められた第2回数より大きい条件に当て嵌まるAPIを、マッシュアップするAPI処理機能部を備えることを特徴とするAPI集約装置(特許文献1参照)などが提案されている。
また、複数個のAPIリクエストを1回のリクエストで処理可能とする、バッチ処理の技術(非特許文献1)も開示されている。
特開2016−151885号公報
「Graph API, Making Batch Requests−Facebook for Developers」、online、Facebook、平成29年6月30日検索、インターネット<URL: https://developers.facebook.com/docs/graph−api/making−multiple−requests>
ところで、API公開時には、API公開側のシステムに過負荷が掛からぬよう、所定の管理システムにて流量制御を行うことが一般的である。この流量制御は、指定時間あたりのAPIリクエスト数を制限する制御となる。例えば、API利用ソフトウェアごとに10回/分のリクエスト数を上限とし、それ以上のリクエストに対しては対応せず、当該API利用ソフトウェアへエラーを返す。
マッシュアップが含むAPIに関し、このような流量制御が実施された場合、マッシュアップ全体としてはエラーとなり、該当リクエストに関して処理を終了する事態となる。
このような問題に対して、いずれの従来技術も適宜に対処する構成を備えていない。例えば、非特許文献1に記載の技術では、複数のAPIリクエストの中で、成功したものはそのレスポンスが、失敗したものはエラーが、列挙された形で得られるが、最終的なレスポンスとしてはエラーとなってしまう。
また、そのようなバッチ処理にかかる時間に対して、タイムアウトは考慮されているが、そのタイムアウト内にバッチ処理が完了するような工夫はなされていない。また、マッシュアップ全体の処理時間に関しては、「追加費用がかかっても早く処理を完了したい」、逆に、「遅くても構わないが安く処理をしたい」、といったAPI利用ソフトウェアのエンドユーザ毎のニーズに応えることもできていない。
そこで本発明の目的は、マッシュアップの含む各APIの属性やエンドユーザのニーズを踏まえ、マッシュアップ全体の処理効率を好適なものとする技術を提供することにある。
上記課題を解決する本発明のAPI管理システムは、APIの各ユーザに関する流量制御状態の情報を格納した記憶部と、APIのマッシュアップに関するユーザからのリクエストを所定装置より受け付けて、前記リクエストが含む当該マッシュアップの定義と、前記ユーザの該当APIに関する前記流量制御状態の情報とを所定アルゴリズムに適用し、前記定義におけるAPI間の依存関係を制約条件とし、前記流量制御状態の情報における流量制御解除までの待機時間を最小化する、APIの処理スケジュールを生成する演算部と、を備えることを特徴とする。
また、本発明のAPI管理方法は、APIの各ユーザに関する流量制御状態の情報を格納した記憶部を備えた情報処理システムが、APIのマッシュアップに関するユーザからのリクエストを所定装置より受け付けて、前記リクエストが含む当該マッシュアップの定
義と、前記ユーザの該当APIに関する前記流量制御状態の情報とを所定アルゴリズムに適用し、前記定義におけるAPI間の依存関係を制約条件とし、前記流量制御状態の情報における流量制御解除までの待機時間を最小化する、APIの処理スケジュールを生成する、ことを特徴とする。
本発明によれば、マッシュアップの含む各APIの属性やエンドユーザのニーズを踏まえ、マッシュアップ全体の処理効率を好適なものとできる。
第1実施形態におけるAPI管理システムを含むネットワーク構成例を示す図である。 第1実施形態におけるAPI定義テーブルのデータ構造例を示す図である。 第1実施形態におけるAPI流量制御設定テーブルのデータ構造例を示す図である。 第1実施形態におけるマッシュアップ定義テーブルのデータ構造例を示す図である。 第1実施形態の推定処理時間テーブルのデータ構造例を示す図である。 第1実施形態の流量制御状態テーブルのデータ構造例1を示す図である。 第1実施形態の流量制御状態テーブルデータ構造例2を示す図である。 第1実施形態における仮想流量制御状態テーブルのデータ構造例を示す図である。 第1実施形態のスケジュールテーブルのデータ構造例1を示す図である。 第1実施形態のスケジュールテーブルのデータ構造例2を示す図である。 第1実施形態のAPI管理方法のフロー例1を示す図である。 第1実施形態のAPI管理方法のフロー例2を示す図である。 第1実施形態のAPI管理方法のフロー例3を示す図である。 第1実施形態のAPI実行スケジュールの作成処理フローの具体例を示す図である。 第2実施形態におけるAPI管理システムを含むネットワーク構成例を示す図である。 第2実施形態のユーザ条件テーブルのデータ構造例を示す図である。 第2実施形態における画面例を示す図である。 第2実施形態のAPI管理方法のフロー例を示す図である。
−−−第1実施形態−−−
以下に本発明の第1実施形態について図面を用いて詳細に説明する。図1は、第1実施形態におけるAPI管理システム1を含むネットワーク構成図である。図1に示すAPI管理システム1は、マッシュアップの含む各APIの属性やエンドユーザのニーズを踏まえ、マッシュアップ全体の処理効率を好適なものとするコンピュータシステムである。
なお、本実施形態においてAPIは、HTTP(Hypertext Transfer Protocol)の規約に従うWebAPIであるとして説明を行う。
図1にて例示するネットワーク構成において、API管理システム1は、アプリケーションサーバ2、エンドユーザ端末3、APIサーバ4、および、管理者端末5、と接続されている。
このうちアプリケーションサーバ2は、API管理システム1が公開するAPIを利用
するクライアントアプリケーションを提供するサーバ装置である。
また、エンドユーザ端末3は、エンドユーザが上述のアプリケーションサーバ2におけるクライアントアプリケーションを利用するユーザの端末である。
また、APIサーバ4は、API管理システム1を介してアプリケーションサーバ2にAPIを提供するサーバ装置である。
また、管理者端末5は、API管理システム1の管理者がAPI管理システム1を利用する端末である。
上述のアプリケーションサーバ2は、インターネットなどの適宜なネットワーク10を通じてAPI管理システム1と通信可能に接続されている。
同様に、エンドユーザ端末3は、企業内ネットワークなど適宜なネットワーク11を介してアプリケーションサーバ2と通信可能に接続されている。
また、APIサーバ4は、企業内ネットワークなど適宜なネットワーク11を介して、API管理システム1と通信可能に接続されている。同様に、管理者端末5は、企業内ネットワークなど適宜なネットワーク11を介して、API管理システム1と通信可能に接続されている。
なお、上述のアプリケーションサーバ2、エンドユーザ端末3、および、APIサーバ4は、それぞれ複数でも構わないが、本実施形態では説明の簡便化のため、それぞれ1つ配置した構成としている。
続いて、こうしたネットワーク構成に含まれる各機器の詳細について説明する。まず、アプリケーションサーバ2は、ネットワークインターフェイスなど適宜な通信装置で構成される通信部201と、CPUなど演算装置がプログラムを実行して実装される、画面生成部202およびAPIリクエスト生成部203とを備えた、一般的なWebアプリケーションサーバである。
このうち通信部201は、API管理システム1に対し、APIを利用するためのリクエストを送信し、そのレスポンスを受信したり、エンドユーザ端末3に画面を送信し、エンドユーザの入力操作を受信したりする。
また、画面生成部202は、クライアントアプリケーションの画面を生成する機能部である。また、APIリクエスト生成部203は、API管理システム1が公開するAPIを利用するためのリクエストを生成する機能部である。
また、エンドユーザ端末3は、上述のアプリケーションサーバ2にエンドユーザの入力操作を送信し、クライアントアプリケーションの画面を受信する通信部301と、クライアントアプリケーションの画面を表示する表示部302と、エンドユーザの入力操作を行う入力部303とからなる。これらは、例えばスマートフォンのような通信部を備えたデバイスや、インターネットに接続されたPCで構成する。
なお、本実施形態において、上述のクライアントアプリケーションは、サーバサイドアプリケーションとしている。ただし、例えばスマートフォンにインストールしたネイティブアプリケーションや、PCにインストールしたWebブラウザで動作するアプリケーションのような、クライアントサイドアプリケーションとしても構わない。その場合、アプリケーションサーバ2とエンドユーザ端末3をひとまとめにしてクライアントアプリケーションと考えればよい。
また、APIサーバ4は、複数のAPIを公開しているサーバであり、各APIへのリクエストを受信し、そのレスポンスを送信する通信部401と、各APIへのリクエスト
に応じた処理を行い、レスポンスを生成するAPIレスポンス生成部402とからなる。これらは一般的なWebアプリケーションサーバで構成する。
また、管理者端末5は、上述のAPI管理システム1に対して管理者の入力操作を送信し、API管理システム1の管理画面を受信する通信部501と、API管理システム1の管理画面を表示する表示部502と、管理者の入力操作を行う入力部503とからなる。これらは、例えばスマートフォンのような通信部を備えたデバイスや、インターネットに接続されたPCで構成する。
一方、API管理システム1は、ネットワークインターフェイスなどで実装された通信部101、CPUなどの適宜な演算装置でプログラムを実行することで実装される演算部102、および、適宜な記憶装置で実装される記憶部103から構成されている。
このうち通信部101は、上述のアプリケーションサーバ2から受信したAPIリクエストをAPIリクエスト処理部1021に転送する機能、APIリクエスト処理部1021から受信したAPIリクエストをAPIサーバ4に転送するとともにその時刻をAPIリクエスト処理部1021に送信する機能、APIサーバ4から受信したAPIレスポンスをアプリケーションサーバ2に転送するとともにその時刻をAPIリクエスト処理部1021に送信する機能、管理者端末5から受信した処理内容をAPI設定部1025やマッシュアップ設定部1026に転送する機能、および、画面生成部1027から受信した管理画面を管理者端末5に転送する機能、をそれぞれ実装するプログラムと、通信モジュールで構成されている。
また、演算部102は、APIリクエスト処理部1021、流量制御部1022、スケジュール部1023、処理時間推定部1024、API設定部1025、マッシュアップ設定部1026、および、画面生成部1027を備えている。
このうち、APIリクエスト処理部1021は、上述の通信部101からAPIリクエストを受信した際に記憶部103のAPI定義テーブル1031を参照し、単体のAPIへのリクエストであれば、これを流量制御部1022に転送し、当該流量制御部1022からの流量制御結果が制御不要である場合、適切な転送先に振分けて通信部101へ返送する機能、一方、上述の流量制御結果が制御要である場合、エラーレスポンスを通信部101へ返送する機能、通信部101からAPIリクエストのAPIサーバ4への送信時刻とAPIレスポンスのAPIサーバからの受信時刻とを受信し、これを処理時間推定部1024に転送する機能、上述の通信部101から受信したAPIリクエストがマッシュアップであれば、これをスケジュール部1023に転送する機能、および、スケジュール部1023からのスケジューリング完了通知を受けて、記憶部103のスケジュールテーブル1036を参照し、スケジュール内容に応じてマッシュアップを構成する単体のAPIリクエスト処理や待機を行う機能、をそれぞれ実装するプログラムで構成されている。
また、流量制御部1022は、上述のAPIリクエスト処理部1021からAPIリクエストを受信した場合にAPI流量制御設定テーブル1032を参照し、当該APIに流量制御設定がなければ、当該リクエストをAPIリクエスト処理部1021に返送する機能、一方、当該APIに流量制御設定があれば、リクエスト元のクライアントアプリケーションに対応する流量制御状態テーブル1035の当該APIの1回目の時刻を参照し、現在時刻からAPI流量制御設定テーブルに規定された時間が経過していたらカウンタ値を1に上書きし、1回目の時刻も現在時刻に上書きした後に、当該リクエストをAPIリクエスト処理部1021に返送し、現在時刻からAPI流量制御設定テーブルに規定された時間が経過しておらず、カウンタ値がAPI流量制御設定テーブルの上限値であればエラーをAPIリクエスト処理部1021に返送し、カウンタ値が前記上限値未満であれば
カウンタ値に1を加算し、当該リクエストをAPIリクエスト処理部1021に返送する機能、をそれぞれ実装するプログラムで構成されている。
また、スケジュール部1023は、上述のAPIリクエスト処理部1021からマッシュアップのリクエストを受信した場合に、マッシュアップ定義テーブル1033、API流量制御設定テーブル1032、推定処理時間テーブル1034、流量制御状態テーブル1035、および、スケジュールテーブル1036を参照し、マッシュアップを構成する複数のAPIの実行順序のスケジューリングを行い、スケジュールテーブル1036を更新し、スケジューリング完了の通知をAPIリクエスト処理部1021に送信する機能、を実装するプログラムで構成されている。こうしたスケジューリングの詳細は後述する。
また、処理時間推定部1024は、上述の通信部101からAPIリクエスト処理部1021経由で各APIリクエストのAPIサーバ4への送信時刻および対応するレスポンスの受信時刻を受信した場合、受信時刻と送信時刻の差分時間を当該APIの処理時間の実績値とし、例えばそれまでの実績値との平均値を当該APIの時間帯毎の推定処理時間とし、推定処理時間テーブル1034を生成および更新するプログラムで構成する。尚、そのような処理時間推定に関する技術は、例えば特開2016−151780公報に開示されている。
なお、こうした処理時間の考え方は同期APIと非同期APIとで異なるが、以下の理由により、本実施形態では区別しないものとする。まず、同期APIでは、上述のような送受信時刻の差(受信時刻−送信時刻)を処理時間とすればよい。次に、非同期APIでは、送信時間は同期APIと同様でよいが、APIサーバ4からはリクエストを受け付けたことのレスポンスのみが返ってくるため、その時刻を実際の処理が完了したことに対応するレスポンス受信時刻とすることはできない。但し、非同期APIでは通常、上記リクエスト受付のレスポンスに含まれる受付番号等をパラメタにして、APIサーバ4の処理状態を問い合わせることができる。そのため、例えば通信部101からその問合せを定期的に行うことで非同期APIに対応する処理の完了を確認し、完了時の時刻をレスポンス受信時刻とすればよい。
また、API設定部1025は、上述のAPI管理システム1の管理者(例えば、APIサーバ4の管理者と同じでもよい)による管理者端末5の入力内容を通信部101より受信し、API定義テーブル1031およびAPI流量制御設定テーブル1032を生成および更新するプログラムで構成する。
また、マッシュアップ設定部1026は、上述のAPI管理システム1の管理者による管理者端末5の入力内容を通信部101より受信し、マッシュアップ定義テーブル1033を生成および更新するプログラムで構成する。
また、画面生成部1027は、上述のAPI管理システム1の管理者による管理者端末5の入力内容を通信部101より受信して、管理画面を生成し、通信部101に返送するプログラムで構成する。
他方、記憶部103は、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの記憶装置で実装され、詳細後述するAPI定義テーブル1031、API流量制御設定テーブル1032、マッシュアップ定義テーブル1033、推定処理時間テーブル1034、流量制御状態テーブル1035、および、マッシュアップを構成する複数のAPIの実行スケジュールたるスケジュールテーブル1036を格納している。
なお、上述の各テーブルを概説すると、管理者による管理者端末5からの入力を通じてAPI設定部1025が生成するのがAPI定義テーブル1031およびAPI流量制御設定テーブル1032である。また、管理者による管理者端末5からの入力を通じてマッシュアップ設定部1026が生成するのがマッシュアップ定義テーブル1033である。また、処理時間推定部1024がAPIリクエストの処理時間の実績値を元にして生成および更新するのが推定処理時間テーブル1034である。また、APIリクエスト毎に流量制御部1022が更新するのが流量制御状態テーブル1035である。また、スケジュール部1023がマッシュアップを構成する複数のAPIの実行順序のスケジューリングによって生成し、各APIの処理完了時にAPIリクエスト処理部1021が進行状況を更新するのがスケジュールテーブル1036である。
また、記憶部103にて蓄積するデータは、電子ファイルの形態でもよいし、データベースシステムで管理してもよい。
続いて、本実施形態のAPI管理システム1が用いるテーブル類について説明する。図2に、本実施形態におけるAPI定義テーブル1031のデータ構成例を示す。
このAPI定義テーブル1031は、API毎に、API利用者(アプリケーションサーバ2)への公開仕様と、それに対応したAPI提供者(APIサーバ4)の内部仕様と、ヘッダやペイロードの仕様をまとめたリストである。
本実施形態では、API提供者の提供するAPIとして、「API−A」〜「API−E」が定義されている。条件登録APIおよび料金照会APIについては第2実施形態で説明する。
続いて図3に、API流量制御設定テーブル1032のデータ構成例を示す。ここで、本実施形態におけるAPIの流量制御とは、規定単位時間内に規定回数より多くのAPIリクエストを受けた場合、規定単位時間が過ぎるまでは規定回数を超えた分のAPIリクエストはエラーとする制御である。
この流量制御の対象はAPI単位、クライアントアプリケーション単位、エンドユーザ単位等、様々な単位が考えられるが、本実施形態では、設定はAPI単位、回数のカウントはクライアントアプリケーション単位とする。図3にて示す例では、例えば「API−A」の流量制御は1分間にリクエスト10回を上限とすることを示している。また、「API−B」には流量制御は設定されていないことを示している。
続いて図4は、マッシュアップ定義テーブル1033のデータ構成例を示す図である。マッシュアップは通常、複数のAPIのレスポンスを演算して組み合わせる等、ワークフローのような一連の処理を行った結果を全体としてのレスポンスとするものである。しかしながら本実施形態では、演算は割愛し、どのAPIをどのような依存関係で実施するかという定義のみとする。
図4に示す例では、API同士の依存関係を次の記号で表現している。まず、「A,B」という記号は、「API−A」と「API−B」を実行するが、その実行順序は任意であることを表現している。例えば、何らかのデータを取得するAPIは、実行順序に制限がないことが多い。
また、「A→B」という記号は、「API−A」の後に「API−B」を実行するという順序の依存関係を表現しているが、「API−A」と「API−B」の間に別のAPIを実行することを許すものとする。例えば、何らかのデータの更新を行うAPIを実行し、その更新後のデータを取得するAPIを実行する、という時には順序の依存関係が発生
する。定義中の()は、()内の依存関係を満たしたまま、()外の依存関係を満たす、ということを表現している。例えば、「(A,B)→C」は、「API−A」と「API−B」の実行順序は任意であるが、どちらも「API−C」よりは先に実行完了とすることを表現している。
このように実行順序に関して任意の部分がある場合に、流量制御の対象となっているAPIを先に実行しようとしてしまうと、マッシュアップ全体としてエラーで終了してしまったり、マッシュアップ全体としての処理時間が長くなってしまうという課題がある。そこで、そのような課題を解決するためのAPIの実行順序のスケジューリングを行うことが本実施形態の目的である。
続いて図5は、推定処理時間テーブル1034のデータ構成例を示す図である。この推定処理時間テーブル1034は、API毎、時間帯毎に、当該APIの平均処理時間を対応付けたリストであり、数字の単位は秒としている。
また、図6Aは、流量制御状態テーブル1035のデータ構成例を示す図である。この流量制御状態テーブル1035は、クライアントアプリケーション毎、API毎に、流量制御の規定回数に対するカウント数と、1回目の時刻とを対応付けたリストである。APIリクエストを受信する毎に流量制御部1022に更新されるものである。なお、図6Bにも同様の流量制御状態テーブル1035Aを例示しているが、図6Cには、進行中のマッシュアップに関して生成した流量制御状態テーブル1035Bを例示している。これらについては後述する。
また図7は、スケジュールテーブル1036のデータ構成例を示す図である。このスケジュールテーブル1036は、マッシュアップに含まれるAPIを直列処理する場合のスケジュールとなる。
スケジュールテーブル1036は、マッシュアップのリクエスト毎の、当該マッシュアップを構成する各APIの処理順序と、リクエスト送信時刻と、現在時刻におけるマッシュアップ全体の進行状態のリストである。このうちリクエスト送信時刻は、現在時刻において未実行のAPIでは、リクエスト送信予定時刻に相当する。
ここで、複数のAPIの実行順序に関して、直列処理と並列処理とについて説明する。このうち直列処理は、複数のAPIにおいて、前のAPIの処理が完了してから次のAPIを実行する、という処理方式である。つまり、API管理システム1とAPIサーバ4との通信は、マッシュアップを構成する複数のAPIの処理を1つのスレッドを用いて行うことになる。
通常、同時に送信できるHTTPのリクエスト数には上限(例えば一般的なWebブラウザであれば「6」)があり、リクエストを受信するサーバ側にも、負荷分散の観点で、比較的大きな数字ではあるが、同時に受信できる数には上限が設けられることが多い。従って、スレッド数を抑えるという観点で直列処理の必要性があると考えられる。
これに対して並列処理は、複数のAPIにおいて、実行順序に依存関係がないAPI同士は、同時にリクエストを送信する、つまり複数のスレッドを用いて行う処理方式である。 こうした並列処理は通常、スレッド数に余裕がある場合に、マッシュアップ全体の完了までの時間を抑えることができるため、利用可能なスレッド数を管理することで直列処理と並列処理を使い分けることができるとよい。
続いて、図8は、マッシュアップに含まれているAPIを並列処理する場合のスケジュールテーブル1036のデータ構成例を示す図である。
この場合のスケジュールテーブル1036は、上述の図7にて直列処理の場合のスケジュールテーブルと同様であるが、同じリクエストID「20170630−1」に対して直列処理のスケジュールは「C⇒B⇒A」という1スレッドであるが、並列処理のスケジュールでは「B⇒A」と「C」の2スレッドとなっている。
以下、本実施形態におけるAPI管理方法の実際手順について図に基づき説明する。以下で説明するAPI管理方法に対応する各種動作は、API管理システム1が実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
図9は、本実施形態におけるAPI管理方法のフロー例1を示す図である。ここでは、マッシュアップを構成する複数のAPIの実行スケジューリング処理の概略フローについて説明する。なお、以降の説明においては、マッシュアップに含まれているAPIを直列処理する場合を前提としてスケジューリングするケースについて示すものとする。
この場合、API管理システム1のスケジュール部1023は、APIリクエスト処理部1021からマッシュアップのリクエストを受信した場合、スケジュールテーブル1036、流量制御状態テーブル1035、および、API流量制御設定テーブル1032を参照し、その時点で既に計画されているスケジューリングを考慮した仮想流量制御状態テーブルを作成する(S901)。この詳細は図10で説明する。
次に、API管理システム1のスケジュール部1023は、マッシュアップ定義テーブル1033、API流量制御設定テーブル1032、仮想流量制御状態テーブル1035B(図6C)、および、推定処理時間テーブル1034を参照し、API実行スケジュール(本発明においてAPIの処理スケジュール)を作成し、スケジュールテーブル1036を更新し(S902)、処理を終了する。この詳細は図11で説明する。
図10は、仮想流量制御状態テーブルの作成フローを示す図である。この場合、API管理システム1のスケジュール部1023は、スケジュールテーブル1036を参照し、リクエスト元のクライアントアプリケーションの、状態が「進行中」であるスケジュールに含まれる「未実行」のAPIと、その実行予定時刻と、その実行予定回数を取得する(S1001)。
図7に示すスケジュールテーブル1036の、クライアントアプリケーション「Client−1」の場合、リクエストID「20170630−3」の「D(16:21:52)」、「C(16:21:59)」、「A(16:22:19)」、およびリクエストID「20170630−5」の「A(16:21:54)」、「C(16:21:57)」が該当し、実行予定回数は「A」が2回、「C」が2回、「D」が1回となる。
次に、スケジュール部1023は、流量制御状態テーブル1035を参照し、リクエスト元のクライアントアプリケーションに対する、各APIのカウンタ値と1回目の時刻を取得する(S1002)。ここでは、図6Bに示す流量制御状態テーブル1035Aを例に取って説明する。
続いて、スケジュール部1023は、上述のS1002で取得した各APIのカウンタ値に、S1001で取得した未実行APIの実行予定回数を加算し、その値を各APIの仮想カウンタ値とする(S1003)。但し、上述の加算を行った結果、カウンタ値が流量制御の上限を超えたら、1からカウントを継続する。
図6Bの流量制御状態テーブル1035Aにおいては、「API−A」はカウンタ「9」に2を加算して11になるが流量制御の上限が「10」(図3:API流量制御設定テーブル1032)であるため、仮想カウンタ値は「1」となる。一方、「API−C」はカウンタが10から12に、「API−D」はカウンタが4から5になる。
次に、スケジュール部1023は、上述のS1003において、カウンタ値が流量制御の上限を超えたAPIについて、仮想カウンタにおける1回目の実行予定時刻を、1回目の仮想時刻とする(S1004)。
図6Bの流量制御状態テーブル1035Aにおいては、上述のS1001で取得したリクエストID「20170630−3」の「A(16:22:19)」が該当するため、「API−A」の1回目の仮想時刻は「16:22:19」となる。
続いて、スケジュール部1023は、未実行API毎に、最後に実行される予定の時刻を、最後の仮想時刻とする(S1005)。上述のS1001で取得したスケジュールテーブル1036では、「API−A」は「16:22:19」、「API−C」は「16:21:59」、「API−D」は「16:21:52」となる。
次に、スケジュール部1023は、API流量制御設定テーブル1032を参照し、各APIの制御単位時間を取得する。そして、仮想カウンタ値が制御状態ではないAPIに対して、「最後の仮想時刻−現在時刻」を算出し、その算出値を当該APIの待機時間とする(S1006)。図6Bの流量制御状態テーブル1035Aにおいては、「API−A」、「API−C」が該当し、「API−A」は33秒、「API−C」は13秒となる。
この待機時間は、各APIに対して、スケジュールテーブル1036で予定されている分が実行されるまでの時間であり、予定されている分が実行される前に、当該APIへの新しいリクエストを割り込ませてしまい、それによって流量制御が発生してしまうことで、先に予定されていた分が実行できなくなる問題を回避するための時間と言える。
なお、「API−C」のように、当該APIの仮想カウンタ値が、上限値を超えなかった場合の値であり、なおかつ上限値未満であれば、割り込みがあっても上記の問題は発生せず、その場合は待機時間を0秒としても構わないが、本実施形態では、簡単のため、この場合は考慮しないものとする。
また、スケジュール部1023は、仮想カウンタ値が制御状態であるAPIに対しては、「制御単位時間−(現在時刻−1回目の仮想時刻)」を算出し、その算出値をAPIの待機時間とする。図6Bの流量制御状態テーブル1035Aにおいては、「API−D」、「API−E」が該当し、「API−D」は34秒、「API−E」は15秒となる。この待機時間は、各APIの流量制御が解除される時間である。
また、スケジュール部1023は、流量制御が設定されていないAPIや、設定されていても制御状態ではなく、スケジュールテーブル1036で未実行でもないAPIは、待機時間は0秒とする。
次に、スケジュール部1023は、ここまでで算出した仮想値や待機時間を流量制御状態テーブルに追記および上書きし、仮想流量制御状態テーブル1035Bを生成する(S1007)。図6Bの流量制御状態テーブル1035Aに対して、図6Cの流量制御状態テーブル1035Cが生成されることになる。
以上の手順により、スケジューリングを行う時点の流量制御状態に加えて、その後に実行されるスケジュールも考慮した仮想流量制御状態テーブルを生成できる。そのため、スケジューリング済みのAPI群の処理が実行できなくなることを回避することができるようになる。なお、マッシュアップのリクエスト時について説明したが、単体のAPIのリクエスト時に対しても、スケジュールに割り込まないように、同様の処理を行うべきである。
続いて、APIの実行スケジュール(すなわち処理スケジュール)の生成フローについて説明する。図11は、直列処理の場合の、API実行スケジュール作成の処理フロー図である。
この場合、API管理システム1のスケジュール部1023は、マッシュアップ定義テーブル1033を参照し、リクエストされたマッシュアップの定義を取得する。(S1101)
次に、スケジュール部1023は、上述のS1007で作成した仮想流量制御状態テーブル1035Cを参照し、各APIの待機時間を取得する(S1102)
次に、スケジュール部1023は、上述のS1101で取得したマッシュアップ定義に対して、S1103〜S1106を行う。
具体的には、スケジュール部1023は、S1101で得たマッシュアップ定義の一番内側の()内において、実行順序が任意であるAPI群に対して、S1104に従って実行順序を決定し、同様の処理をマッシュアップ定義の一番外側まで繰り返す。(S1103、S1104〜S1106)
S1104〜S1106におけるスケジュール部1023は、マッシュアップ定義の一番内側の()内において、実行順序に依存関係のあるAPI群を1単位とし、各単位の先頭のAPIの中で、待機時間が一番短いAPIを1番目とする。以降、そのAPIを除いて同様の判定を繰返し、2番目以降を決定する。
スケジュール部1023は、上述のS1103〜S1106を通じてマッシュアップを構成する複数のAPIの実行順序を決定したら、推定処理時間テーブル1034を参照し、各APIの実行予定時刻を付記し、スケジュールテーブル1036を更新する(S1107)。1つ前のAPI完了後、次のAPI開始までに待機時間が含まれることもある。
なお、こうした、マッシュアップにおける各APIの実行順序の決定アルゴリズムの具体的なパターン例を図12に示している。この図12で示す例では、マッシュアップ定義におけるAPI実行の制約(すなわち依存関係)に応じて、どのような方針で実行順序の決定を行うか示している。基本的には、待機時間の短い順にAPIを実行するよう順序決定することとなる。
また、並列処理の場合は、実行順序が任意であるAPI同士を別スレッドで実行するだけでも直列処理よりも高速化を実現できるが、更に、例えば待機時間が無く、推定処理時間の1番長いAPIを1つのスレッド、残りを直列処理でスケジューリングをする等、組合せることで、高速化とスレッド数の抑制を行うことも可能である。
また、本実施形態ではマッシュアップを構成する複数のAPIは全て異なるものであったが、同じAPIを複数回実行するマッシュアップであっても、当該APIの実行順序が決まる毎に仮想流量制御テーブルを更新しながら同様の処理を行えばよい。
なお、上述の例では、仮想流量制御状態テーブルを生成したことを契機にAPIの実行
スケジュールを生成する例を示したが、そうした仮想流量制御状態テーブルではなく、当初の流量制御状態テーブル1035(図6Aや図6B)に基づいて、APIの実行スケジュールを生成するとしてもよい。
例えば、図6Aの流量制御状態テーブル1035Aを利用するとした場合、スケジュール部1023は、カウンタがいずれも流量制御設定の回数に到達済みで、流量制御対象となっている「API−A」、「API−D」、「API−E」、について、「現在時刻−1回目の時刻」の計算を行ってそれぞれの待機時間を算定する。その上で、図11のフローと同様の処理を実行することで、マッシュアップにおけるAPIの実行スケジュールを生成することとなる。
−−−第2実施形態−−−
本発明の第2実施形態として、API管理システム1が、複数個の既存APIのマッシュアップ全体としての処理時間について、エンドユーザの志向を条件に加えて、最適化する方式について説明する。以降、第1実施形態と異なる部分のみを説明する。
なお、上述のエンドユーザの条件とは、マッシュアップの遂行に関して当該エンドユーザが望む、マッシュアップ処理時間の下限や、当該エンドユーザの課金条件といった条件である。以後、こうした条件をユーザ条件と称する。
図13は、第2実施形態におけるAPI管理システム1を含むネットワーク構成図である。第2実施形態におけるAPI管理システム1には、第1実施形態のAPI管理システム1に対して、演算部102におけるユーザ条件設定部1028と、記憶部103におけるユーザ条件テーブル1037が追加されている。
また、第2実施形態におけるアプリケーションサーバ2には、第1実施形態のアプリケーションサーバ2に対して、ユーザ条件蓄積部204が追加されている。
また、API管理システム1は、図2のAPI定義テーブル1031に示した条件登録APIと料金照会APIを公開する。
このうち条件登録APIは、ユーザ条件を記憶部103のユーザ条件テーブル1037に設定する機能を提供する。また、料金照会APIは、後述する流量制御の解除時に発生する料金等、API管理システム1の利用に伴って発生する料金を照会する機能を提供する。
本実施形態では、あるAPIが流量制御のためにエラーとなる時に、エンドユーザがその意思によって追加料金を支払うことで、一時的に該当制御を回避できる機能をAPI管理システム1が有していることを前提とする。そのような機能は、例えば特開2015−130073号公報に記載されている。
本実施形態において追加された構成のうち、API管理システム1のユーザ条件設定部1028は、上述のエンドユーザによるエンドユーザ端末3の操作に応じてアプリケーションサーバ7から送信される条件登録APIのリクエストを通信部101経由で受信し、記憶部103のユーザ条件テーブル1037(図14)の生成や更新を行うプログラムで構成する。
また、アプリケーションサーバ2のユーザ条件蓄積部204は、画面生成部202が生成する業務処理方式設定画面140(図15)に対する、エンドユーザによるエンドユーザ端末3を通じた操作に応じて設定されたユーザ条件のデータを蓄積するプログラムと記憶装置で構成する。ここで蓄積されたユーザ条件のデータは、業務処理方式設定画面140の再表示時に画面生成部202から参照されたり、API管理システム1への条件登録
APIのリクエスト時に参照されたりする。
図14は、第2実施形態におけるユーザ条件テーブル1037のデータ構成例を示す図である。このユーザ条件テーブル1037は、エンドユーザ毎に、API管理システム1の有償機能の利用方針を列挙したリストであり、本実施形態では特に、上述の流量制御の一時的な解除に対するユーザ毎の志向を示している。
例えば、エンドユーザ「User01」は、流量制御の有償解除は利用するが、その料金は月に累計「3000円」までとし、更に、有償解除を利用するのは、解除した場合のマッシュアップ全体の処理時間が「45秒」以内である場合に限定する、ということを示している。また、有償解除を利用しなくても45秒以内に収まる場合には、有償解除は利用しないことも示している。
API管理システム1は、このようなユーザ条件を考慮することで、エンドユーザやタイミングやAPIによって様々である、費用優先または時間優先に関するエンドユーザの志向を、マッシュアップにおけるAPIのスケジューリングに取り込むことが可能である。これによりAPI管理システム1は、エンドユーザにとってより好適なAPI利用環境を提供することができる。
図15は、業務処理方式設定画面140の例である。ユーザ条件テーブル1037は、エンドユーザの志向を取り込んだものである。そのため、API管理システム1は、何らかの形で、エンドユーザからユーザ条件に関して入力を受け付けておく必要がある。
そこで、例えば、アプリケーションサーバ2は、そのようなユーザ条件の入力用の画面として、業務処理方式設定画面140をエンドユーザ端末3に配信し、その業務処理方式設定画面140での入力内容を、条件登録APIを用いてAPI管理システム1に送信する、といった構成を採用すれば好適である。
この時、例えば現在および過去の料金を当該画面に表示しておくことで、エンドユーザの判断の補助とすることができる。そのような料金に関するデータは、API管理システム1が保持しており、クライアントアプリケーション7が、料金照会APIを用いて取得すればよい。
続いて、第2実施形態におけるAPI管理方法のフロー例について説明する。図16は、第2実施形態におけるAPI管理方法のフロー例を示す図であり、具体的には、エンドユーザの志向、すなわちユーザ条件を踏まえた、マッシュアップを構成する複数のAPIの実行スケジューリング処理を示す概略フロー図である。なお、本フローにおいて、S901およびS902は第1実施形態と同様であり、その説明は省略し、S903に関して説明する。
このS903において、API管理システム1のスケジュール部1023は、今回の処理対象、すなわちAPIの実行スケジュール生成対象としたエンドユーザに関して、ユーザ条件テーブル1037の「有料制御解除」欄の値を参照し、有料での流量制御解除サービスの利用可否を判定する(S9031)。
上述の判定の結果、有料での流量制御解除サービスを利用可能であることが判明した場合(S9032:y)、スケジュール部1023は、上述のS902で作成した実行スケジュール内で流量制御の解除対象、すなわち待機時間が0ではないAPIに対して流量制御の解除処理(API管理システム1で予め規定した処理で、既存のもの)を実行する(S9033)。
他方、上述の判定の結果、有料での流量制御解除サービスを利用不可であることが判明した場合(S9032:n)、スケジュール部1023は、処理を終了する。
続いて、スケジュール部1023は、上述のS9032にて、所定のAPIに関して待機時間を0とした上で、S902と同様にAPIの実行スケジュールを生成し、すなわち実行スケジュールを書き換え、スケジュールテーブル1036を更新し(S9034)、処理を終了する。
この時、スケジューリング前に上述の流量制御の解除を行うよりも、S902によるスケジューリング後のスケジュールに対して流量制御の解除を行った方が、待機時間が抑制されていることから、料金を抑制することができる。
なお、流量制御の解除に対する待機時間を単純に0にすると、既存スケジュールのAPI実行に割り込む可能性もある。その場合は、上述の流量制御の解除を伴うマッシュアップを構成するAPIの実行は、カウンタの対象外にする等の例外を設けてもよい。
また、本実施形態において、ユーザ条件は、API管理システム1に登録されたユーザ条件テーブル1037を参照するとした。しかしながら、例えば、エンドユーザ端末3でにおける所定のクライアントアプリケーションの操作を通じて、その1回のマッシュアップリクエストのみ、有料での流量制御解除を有効にするような方式としてもよい。
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
こうした本実施形態によれば、マッシュアップの含む各APIの属性やエンドユーザのニーズを踏まえ、マッシュアップ全体の処理効率を好適なものとできる。
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態のAPI管理システムにおいて、前記演算部は、所定の処理スケジュールに基づき進行中のマッシュアップに関して、当該処理スケジュールと、該当ユーザの該当APIに関する流量制御状態の情報とに基づき、当該マッシュアップにおける未実行のAPIによって以後生じる流量制御状態を、仮想流量制御状態として特定し、当該仮想流量制御状態の情報と前記進行中のマッシュアップの定義とを前記所定アルゴリズムに適用して、前記所定の処理スケジュールを更新する処理を更に実行するものである、としてもよい。
これによれば、進行中のマッシュアップにおける状況を踏まえた将来的な流量制御状態を特定した上で、APIの処理スケジュールを生成することが可能となる。ひいては、マッシュアップの含む各APIの属性やエンドユーザのニーズを踏まえ、マッシュアップ全体の処理効率を更に好適なものとできる。
また、本実施形態のAPI管理システムにおいて、前記記憶部は、前記流量制御状態の情報として、各ユーザにおける各APIに関して、その1回目の実行から所定時間までに実行された実行回数、および、前記1回目の実行時刻、の各情報を格納するものであり、前記演算部は、前記仮想流量制御状態の情報を特定するに際し、前記所定の処理スケジュールに含まれる未実行のAPIの実行予定回数および実行予定時刻に基づいて、前記流量制御状態の情報に含まれる前記APIの実行回数と前記1回目の実行時刻を更新して、前記APIの仮想実行回数と前記1回目の仮想実行時刻を特定する処理と、前記未実行のAPIが最後に実行される予定時刻を特定する処理と、前記1回目の仮想実行時刻と、前記最後の実行時刻と、現在時刻とに基づいて該当APIの待機時間を算定する処理と、を実行するものである、としてもよい。
これによれば、進行中のマッシュアップにおける状況を踏まえた将来的な流量制御状態を効率的に特定した上で、APIの処理スケジュールを生成することが可能となる。ひいては、マッシュアップの含む各APIの属性やエンドユーザのニーズを踏まえ、マッシュアップ全体の処理効率を更に好適なものとできる。
また、本実施形態のAPI管理システムにおいて、前記記憶部は、前記マッシュアップの遂行に関してユーザが望む条件であるユーザ条件の情報を更に格納するものであり、前記演算部は、前記処理スケジュールの生成に際し、当該生成した処理スケジュールに沿って遂行した場合の前記マッシュアップの処理時間が、前記ユーザ条件で示す下限を上回るものであった場合、当該処理スケジュールに含まれる所定APIに関する待機時間を、当該ユーザへの所定の課金処理によって低減ないし解消し、前記処理スケジュールを更新する処理を更に実行するものである、としてもよい。
これによれば、ユーザごとのニーズに応える形で、マッシュアップの処理速度やユーザのコスト負担とのバランスをとったスケジューリング処理を行って、APIの処理スケジュールを生成することが可能となる。ひいては、マッシュアップの含む各APIの属性やエンドユーザのニーズを的確に踏まえ、マッシュアップ全体の処理効率を更に好適なものとできる。
また、本実施形態のAPI管理システムにおいて、前記演算部は、前記ユーザの端末に、前記ユーザ条件の入力画面を配信し、当該入力画面を介して入力された情報をユーザ条件の情報として格納する処理を更に実行するものである、としてもよい。
これによれば、ユーザごとのニーズを直接受け付けて取得し、これに的確に応える形で、マッシュアップの処理速度やユーザのコスト負担とのバランスをとったスケジューリング処理を行って、APIの処理スケジュールを生成することが可能となる。ひいては、マッシュアップの含む各APIの属性やエンドユーザのニーズをさらに的確に踏まえ、マッシュアップ全体の処理効率を更に好適なものとできる。
また、本実施形態のAPI管理方法において、前記情報処理システムが、所定の処理スケジュールに基づき進行中のマッシュアップに関して、当該処理スケジュールと、該当ユーザの該当APIに関する流量制御状態の情報とに基づき、当該マッシュアップにおける未実行のAPIによって以後生じる流量制御状態を、仮想流量制御状態として特定し、当該仮想流量制御状態の情報と前記進行中のマッシュアップの定義とを前記所定アルゴリズムに適用して、前記所定の処理スケジュールを更新する処理を更に実行する、としてもよい。
また、本実施形態のAPI管理方法において、前記情報処理システムが、前記記憶部において、前記流量制御状態の情報として、各ユーザにおける各APIに関して、その1回目の実行から所定時間までに実行された実行回数、および、前記1回目の実行時刻、の各情報を格納し、前記仮想流量制御状態の情報を特定するに際し、前記所定の処理スケジュールに含まれる未実行のAPIの実行予定回数および実行予定時刻に基づいて、前記流量制御状態の情報に含まれる前記APIの実行回数と前記1回目の実行時刻を更新して、前記APIの仮想実行回数と前記1回目の仮想実行時刻を特定する処理と、前記未実行のAPIが最後に実行される予定時刻を特定する処理と、前記1回目の仮想実行時刻と、前記最後の実行時刻と、現在時刻とに基づいて該当APIの待機時間を算定する処理と、を実行する、としてもよい。
また、本実施形態のAPI管理方法において、前記情報処理システムが、前記記憶部に
おいて、前記マッシュアップの遂行に関してユーザが望む条件であるユーザ条件の情報を更に格納し、前記処理スケジュールの生成に際し、当該生成した処理スケジュールに沿って遂行した場合の前記マッシュアップの処理時間が、前記ユーザ条件で示す下限を上回るものであった場合、当該処理スケジュールに含まれる所定APIに関する待機時間を、当該ユーザへの所定の課金処理によって低減ないし解消し、前記処理スケジュールを更新する処理を更に実行する、としてもよい。
また、本実施形態のAPI管理方法において、前記情報処理システムが、前記ユーザの端末に、前記ユーザ条件の入力画面を配信し、当該入力画面を介して入力された情報をユーザ条件の情報として格納する処理を更に実行する、としてもよい。
10〜12 ネットワーク
1 API管理システム
101 通信部
102 演算部
1021 APIリクエスト処理部
1022 流量制御部
1023 スケジュール部
1024 処理時間推定部
1025 API設定部
1026 マッシュアップ設定部
1027 画面生成部
1028 ユーザ条件設定部
103 記憶部
1031 API定義テーブル
1032 API流量制御設定テーブル
1033 マッシュアップ定義テーブル
1034 推定処理時間テーブル
1035 流量制御状態テーブル
1036 スケジュールテーブル
1037 ユーザ条件テーブル
2 アプリケーションサーバ
201 通信部
202 画面生成部
203 APIリクエスト生成部
3 エンドユーザ端末
301 通信部
302 表示部
303 入力部
4 APIサーバ
401 通信部
402 APIレスポンス生成部
5 管理者端末
501 通信部
502 表示部
503 入力部

Claims (10)

  1. APIの各ユーザに関する流量制御状態の情報を格納した記憶部と、
    APIのマッシュアップに関するユーザからのリクエストを所定装置より受け付けて、前記リクエストが含む当該マッシュアップの定義と、前記ユーザの該当APIに関する前記流量制御状態の情報とを所定アルゴリズムに適用し、前記定義におけるAPI間の依存関係を制約条件とし、前記流量制御状態の情報における流量制御解除までの待機時間を最小化する、APIの処理スケジュールを生成する演算部と、
    を備えることを特徴とするAPI管理システム。
  2. 前記演算部は、
    所定の処理スケジュールに基づき進行中のマッシュアップに関して、当該処理スケジュールと、該当ユーザの該当APIに関する流量制御状態の情報とに基づき、当該マッシュアップにおける未実行のAPIによって以後生じる流量制御状態を、仮想流量制御状態として特定し、当該仮想流量制御状態の情報と前記進行中のマッシュアップの定義とを前記所定アルゴリズムに適用して、前記所定の処理スケジュールを更新する処理を更に実行するものである、
    ことを特徴とする請求項1に記載のAPI管理システム。
  3. 前記記憶部は、
    前記流量制御状態の情報として、各ユーザにおける各APIに関して、その1回目の実行から所定時間までに実行された実行回数、および、前記1回目の実行時刻、の各情報を格納するものであり、
    前記演算部は、
    前記仮想流量制御状態の情報を特定するに際し、前記所定の処理スケジュールに含まれる未実行のAPIの実行予定回数および実行予定時刻に基づいて、前記流量制御状態の情報に含まれる前記APIの実行回数と前記1回目の実行時刻を更新して、前記APIの仮想実行回数と前記1回目の仮想実行時刻を特定する処理と、前記未実行のAPIが最後に実行される予定時刻を特定する処理と、前記1回目の仮想実行時刻と、前記最後の実行時刻と、現在時刻とに基づいて該当APIの待機時間を算定する処理と、を実行するものである、
    ことを特徴とする請求項2に記載のAPI管理システム。
  4. 前記記憶部は、
    前記マッシュアップの遂行に関してユーザが望む条件であるユーザ条件の情報を更に格納するものであり、
    前記演算部は、
    前記処理スケジュールの生成に際し、当該生成した処理スケジュールに沿って遂行した場合の前記マッシュアップの処理時間が、前記ユーザ条件で示す下限を上回るものであった場合、当該処理スケジュールに含まれる所定APIに関する待機時間を、当該ユーザへの所定の課金処理によって低減ないし解消し、前記処理スケジュールを更新する処理を更に実行するものである、
    ことを特徴とする請求項1に記載のAPI管理システム。
  5. 前記演算部は、
    前記ユーザの端末に、前記ユーザ条件の入力画面を配信し、当該入力画面を介して入力された情報をユーザ条件の情報として格納する処理を更に実行するものである、
    ことを特徴とする請求項4に記載のAPI管理システム。
  6. APIの各ユーザに関する流量制御状態の情報を格納した記憶部を備えた情報処理シス
    テムが、
    APIのマッシュアップに関するユーザからのリクエストを所定装置より受け付けて、前記リクエストが含む当該マッシュアップの定義と、前記ユーザの該当APIに関する前記流量制御状態の情報とを所定アルゴリズムに適用し、前記定義におけるAPI間の依存関係を制約条件とし、前記流量制御状態の情報における流量制御解除までの待機時間を最小化する、APIの処理スケジュールを生成する、
    ことを特徴とするAPI管理方法。
  7. 前記情報処理システムが、
    所定の処理スケジュールに基づき進行中のマッシュアップに関して、当該処理スケジュールと、該当ユーザの該当APIに関する流量制御状態の情報とに基づき、当該マッシュアップにおける未実行のAPIによって以後生じる流量制御状態を、仮想流量制御状態として特定し、当該仮想流量制御状態の情報と前記進行中のマッシュアップの定義とを前記所定アルゴリズムに適用して、前記所定の処理スケジュールを更新する処理を更に実行する、
    ことを特徴とする請求項6に記載のAPI管理方法。
  8. 前記情報処理システムが、
    前記記憶部において、前記流量制御状態の情報として、各ユーザにおける各APIに関して、その1回目の実行から所定時間までに実行された実行回数、および、前記1回目の実行時刻、の各情報を格納し、
    前記仮想流量制御状態の情報を特定するに際し、前記所定の処理スケジュールに含まれる未実行のAPIの実行予定回数および実行予定時刻に基づいて、前記流量制御状態の情報に含まれる前記APIの実行回数と前記1回目の実行時刻を更新して、前記APIの仮想実行回数と前記1回目の仮想実行時刻を特定する処理と、前記未実行のAPIが最後に実行される予定時刻を特定する処理と、前記1回目の仮想実行時刻と、前記最後の実行時刻と、現在時刻とに基づいて該当APIの待機時間を算定する処理と、を実行する、
    ことを特徴とする請求項7に記載のAPI管理方法。
  9. 前記情報処理システムが、
    前記記憶部において、前記マッシュアップの遂行に関してユーザが望む条件であるユーザ条件の情報を更に格納し、
    前記処理スケジュールの生成に際し、当該生成した処理スケジュールに沿って遂行した場合の前記マッシュアップの処理時間が、前記ユーザ条件で示す下限を上回るものであった場合、当該処理スケジュールに含まれる所定APIに関する待機時間を、当該ユーザへの所定の課金処理によって低減ないし解消し、前記処理スケジュールを更新する処理を更に実行する、
    ことを特徴とする請求項6に記載のAPI管理方法。
  10. 前記情報処理システムが、
    前記ユーザの端末に、前記ユーザ条件の入力画面を配信し、当該入力画面を介して入力された情報をユーザ条件の情報として格納する処理を更に実行する、
    ことを特徴とする請求項9に記載のAPI管理方法。
JP2017228969A 2017-11-29 2017-11-29 Api管理システムおよびapi管理方法 Active JP6815975B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017228969A JP6815975B2 (ja) 2017-11-29 2017-11-29 Api管理システムおよびapi管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017228969A JP6815975B2 (ja) 2017-11-29 2017-11-29 Api管理システムおよびapi管理方法

Publications (2)

Publication Number Publication Date
JP2019101541A true JP2019101541A (ja) 2019-06-24
JP6815975B2 JP6815975B2 (ja) 2021-01-20

Family

ID=66976901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017228969A Active JP6815975B2 (ja) 2017-11-29 2017-11-29 Api管理システムおよびapi管理方法

Country Status (1)

Country Link
JP (1) JP6815975B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023073653A1 (en) * 2021-10-30 2023-05-04 Jio Platforms Limited System and method of application programming interface scheduling

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023073653A1 (en) * 2021-10-30 2023-05-04 Jio Platforms Limited System and method of application programming interface scheduling

Also Published As

Publication number Publication date
JP6815975B2 (ja) 2021-01-20

Similar Documents

Publication Publication Date Title
CN110402431B (zh) 使用有向无环图进行事件驱动的调度
JP7202369B2 (ja) マルチテナントapiゲートウェイにおいてテナント分離を提供するためのマイクロサービスコンテナの活用
JP5627187B2 (ja) 情報処理装置、情報処理方法及びプログラム
US9268584B2 (en) Methods and systems for dynamically managing requests for computing capacity
US8938510B2 (en) On-demand mailbox synchronization and migration system
US9491313B2 (en) Optimizing storage between mobile devices and cloud storage providers
US10616139B1 (en) Reducing quota access
US9300759B1 (en) API calls with dependencies
US9722886B2 (en) Management of cloud provider selection
JP5449283B2 (ja) クラウド共用型リソース提供システム
US8881182B1 (en) Deferred API calls
US20200065870A1 (en) Managing use of software components
US20130066828A1 (en) Scale-out system to acquire event data
JP6815975B2 (ja) Api管理システムおよびapi管理方法
US8863133B2 (en) License management in a cluster environment
US20180027049A1 (en) Computing system and method of operating the computer system
US10394597B1 (en) Flexible batch job scheduling in virtualization environments
GB2552357A (en) Computing system and method of operating the computing system
JP6595419B2 (ja) Api提供装置及びapiリクエスト制御方法
JP7334260B2 (ja) 複数のデータ構造を管理するための通信装置、通信方法、コンピュータプログラム、非一時的な記憶媒体および通信システム
JP2018081431A (ja) プログラム部品管理装置および管理方法
JP2015225436A (ja) リソース提供支援装置、リソース提供支援システム、リソース提供支援方法
WO2020118432A1 (en) Data set access for updating machine learning models
Klein-Halmaghi Cooperative Resource Management for Parallel and Distributed Systems
Susa et al. Closing the Gap between Cloud Providers and Scientific Users

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200214

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201125

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201223

R150 Certificate of patent or registration of utility model

Ref document number: 6815975

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150