IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特許7606133APIアダプタ生成装置及びAPIアダプタ生成方法並びにAPIアダプタ生成プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-17
(45)【発行日】2024-12-25
(54)【発明の名称】APIアダプタ生成装置及びAPIアダプタ生成方法並びにAPIアダプタ生成プログラム
(51)【国際特許分類】
   G06F 8/30 20180101AFI20241218BHJP
【FI】
G06F8/30
【請求項の数】 8
(21)【出願番号】P 2023512573
(86)(22)【出願日】2021-04-07
(86)【国際出願番号】 JP2021014763
(87)【国際公開番号】W WO2022215194
(87)【国際公開日】2022-10-13
【審査請求日】2023-09-12
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】100083806
【弁理士】
【氏名又は名称】三好 秀和
(74)【代理人】
【識別番号】100129230
【弁理士】
【氏名又は名称】工藤 理恵
(72)【発明者】
【氏名】武 直樹
(72)【発明者】
【氏名】加藤 能史
(72)【発明者】
【氏名】大谷 未稚
(72)【発明者】
【氏名】斎藤 清隆
(72)【発明者】
【氏名】近藤 悟
(72)【発明者】
【氏名】三好 優
【審査官】今川 悟
(56)【参考文献】
【文献】国際公開第2020/026778(WO,A1)
【文献】国際公開第2019/163793(WO,A1)
【文献】特開2016-207202(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/30
(57)【特許請求の範囲】
【請求項1】
オーケストレータのデータモデルと、管理対象のAPI仕様を取得し、前記オーケストレータのデータスキーマ、及び前記API仕様のデータスキーマに基づいてスキーママッチングを行い、モデル変換ルールを算出する変換ルール算出部と、
前記モデル変換ルールに基づいて、APIアダプタ実行ロジックを記述したAPI呼出ロジック部のソースコードを書き換える生成部と、
前記ソースコードが書き換えられたAPI呼出ロジック部に基づいて、前記管理対象のAPIアダプタを生成するAPIアダプタ生成部と、
を備えたAPIアダプタ生成装置。
【請求項2】
前記変換ルール算出部は、前記オーケストレータのデータモデル及び前記管理対象のAPI仕様を、リソース及びパラメータの少なくとも一方の単位でスキーママッチングを行い、前記モデル変換ルールを算出する請求項1に記載のAPIアダプタ生成装置。
【請求項3】
前記変換ルール算出部は、前記管理対象のAPI仕様に含まれる複数のリソースを、可変寄与率、及び依存関係グラフ情報を用いてマッチングして一つのリソースに集約し、
リソース集約後の前記管理対象のAPI仕様のデータスキーマと、前記オーケストレータのデータスキーマに基づいてスキーママッチングを行う請求項1または2に記載のAPIアダプタ生成装置。
【請求項4】
前記生成部は、所定のソースコードのテンプレートを設定し、前記管理対象のAPI仕様のリソース、パラメータ名、パラメータ値の少なくとも一つを、前記テンプレートに書き込むことにより前記所定のソースコードを書き換えて前記API呼出ロジック部を生成する請求項1~3のいずれか1項に記載のAPIアダプタ生成装置。
【請求項5】
前記オーケストレータに含まれるオーケストレータAPの情報から、インスタンス情報及び構成情報グラフを抽出する情報抽出部と、
前記構成情報グラフに基づいて、前記オーケストレータAPに含まれる各リソース間の類似度を算出する類似度算出部と、
を更に備え、
前記変換ルール算出部は、前記インスタンス情報、及び前記類似度に基づいて、前記モデル変換ルールを生成する請求項1~4のいずれか1項に記載のAPIアダプタ生成装置。
【請求項6】
前記スキーママッチングは、Graph-Based手法、Instance-based手法、及び、前記Instance-based手法とスキーマ情報を組み合わせた「Hybrid」手法、のうちの少なくとも一つを用いる請求項1~5のいずれか1項に記載のAPIアダプタ生成装置。
【請求項7】
コンピュータが行うAPIアダプタ生成方法であって、
オーケストレータのデータモデルと、管理対象のAPI仕様を取得するステップと、
前記オーケストレータのデータスキーマ、及び前記API仕様のデータスキーマに基づいてスキーママッチングを行い、モデル変換ルールを算出するステップと、
前記モデル変換ルールに基づいて、APIアダプタ実行ロジックを記述したAPI呼出ロジック部のソースコードを書き換えるステップと、
前記ソースコードが書き換えられたAPI呼出ロジック部に基づいて、前記管理対象のAPIアダプタを生成するステップと、
を備えたAPIアダプタ生成方法。
【請求項8】
請求項1~6のいずれか1項に記載のAPIアダプタ生成装置としてコンピュータを機能させるAPIアダプタ生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、APIアダプタ生成装置及びAPIアダプタ生成方法並びにAPIアダプタ生成プログラムに関する。
【背景技術】
【0002】
複数の卸パートナサービスを組み合わせてサービスを構築、運用するために、複数サービスを連携するオーケストレータが用いられている。オーケストレータでは、新規に卸サービス(管理対象サービス)を追加する場合、及び既存サービスの仕様変更が行われる場合には、低コスト且つ短期間でAPIアダプタを追加、変更することが求められる。
【0003】
非特許文献1には、利用する各種サービス毎のAPIの仕様差分を吸収するAPIアダプタを自動生成する技術について開示されている。また、非特許文献2には、APIアダプタと卸サービス間の制御信号やデータ信号についての試験の一部を自動化することが開示されている。
【先行技術文献】
【非特許文献】
【0004】
【文献】武 他, “Web APIアダプタ開発容易化に関する一考察,”2017.9, 電子情報通信学会 NWS研究会
【文献】金丸翔,池谷友基,高橋謙輔,豊嶋剛,「APIアダプタのC-PlaneおよびU-Planeの包括的な試験自動化手法の提案」,信学技報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、APIアダプタを生成する工程には、設計工程、実装工程、及び試験工程があり、上述した非特許文献1に開示された技術では、上記設計工程の自動化について記載されておらず、設計工程についてはユーザが手動で実施する必要がある。このため、APIアダプタの追加、仕様変更について低コスト化及び期間の短縮化を図ることが難しいという問題があった。
【0006】
本発明は、上記事情に鑑みてなされたものであり、その目的とするところは、APIアダプタの追加、仕様変更を低コスト且つ短期間で実施することが可能なAPIアダプタ生成装置及びAPIアダプタ生成方法並びにAPIアダプタ生成プログラムを提供することにある。
【課題を解決するための手段】
【0007】
本発明の一態様のAPIアダプタ生成装置は、オーケストレータのデータモデルと、管理対象のAPI仕様を取得し、前記オーケストレータのデータスキーマ、及び前記API仕様のデータスキーマに基づいてスキーママッチングを行い、モデル変換ルールを算出する変換ルール算出部と、前記モデル変換ルールに基づいて、APIアダプタ実行ロジックを記述したAPI呼出ロジック部のソースコードを書き換える生成部と、前記ソースコードが書き換えられたAPI呼出ロジック部に基づいて、前記管理対象のAPIアダプタを生成するAPIアダプタ生成部と、を備える。
【0008】
本発明の一態様のAPIアダプタ生成方法は、コンピュータが行うAPIアダプタ生成方法であって、オーケストレータのデータモデルと、管理対象のAPI仕様を取得するステップと、前記オーケストレータのデータスキーマ、及び前記API仕様のデータスキーマに基づいてスキーママッチングを行い、モデル変換ルールを算出するステップと、前記モデル変換ルールに基づいて、APIアダプタ実行ロジックを記述したAPI呼出ロジック部のソースコードを書き換えるステップと、前記ソースコードが書き換えられたAPI呼出ロジック部に基づいて、前記管理対象のAPIアダプタを生成するステップと、を備える。
【0009】
本発明の一態様は、上記APIアダプタ生成装置としてコンピュータを機能させるためのAPIアダプタ生成プログラムである。
【発明の効果】
【0010】
本発明によれば、APIアダプタの追加、使用変更を低コスト且つ短期間で実施することが可能になる。
【図面の簡単な説明】
【0011】
図1図1は、実施形態に係るAPIアダプタ生成装置が採用されるネットワークシステムの構成を示すブロック図である。
図2図2は、実施形態に係るAPIアダプタ生成装置、及びAPIアダプタの構成を示すブロック図である。
図3図3は、第1実施形態に係るAPIアダプタ生成装置の構成を示すブロック図である。
図4図4は、オープンAPIスペック形式で記述されたAPI仕様をUML形式のデータモデルに変換する例を示す説明図である。
図5A図5Aは、A社及びB社による管理対象サービスのAPIアダプタを生成する際の、各社のデータモデルM1、M2のリソース設計、パラメータ設計を示す説明図である。
図5B図5Bは、A社及びB社による管理対象サービスのAPIアダプタを生成する際の、各社のデータモデルM1、M2のパラメータ値の変換を示す説明図である。
図5C図5Cは、オーケストレータAPとオーケストレータの関係を示す説明図である。
図6A図6Aは、複数のAPIをまとめて管理する場合の、APIの実行順序を示す説明図である。
図6B図6Bは、C社、D社、E社による管理対象サービスを追加する際の、各データモデルのロジック設計を示す説明図である。
図7A図7Aは、データモデルM1のリソース及びパラメータを、オーケストレータのデータモデルM3のリソース及びパラメータに変換する際の対応関係を示す説明図である。
図7B図7Bは、図7Aに示したリソース及びパラメータを記述したソースコードを示す説明図である。
図8A図8Aは、データモデルM1のパラメータ値を、オーケストレータのデータモデルM3のパラメータ値に変換する際の対応関係を示す説明図である。
図8B図8Bは、図8Aに示したパラメータ値を記述したソースコードを示す説明図である。
図9図9は、第1実施形態に係るAPIアダプタ生成装置の処理手順を示すフローチャートである。
図10図10は、第2実施形態に係るAPIアダプタ生成装置の構成を示すブロック図である。
図11図11は、データモデルM11~M13のリソース及びパラメータを、オーケストレータのデータモデルM14のリソース及びパラメータに変換する際の対応関係を示す説明図である。
図12図12は、第2実施形態に係り、変換ルールに従ってデータモデルのソースコードを生成する手順を示す説明図である。
図13図13は、図11に示したリソース及びパラメータを記述したソースコードを示す説明図である。
図14図14は、第3実施形態に係るAPIアダプタ生成装置の構成を示すブロック図である。
図15A図15Aは、第3実施形態に係り、オーケストレータAPとオーケストレータの関係を示す説明図である。
図15B図15Bは、図15Aに示したリソース及びパラメータを記述したソースコードを示す説明図である。
図15C図15Cは、図15Bに示したソースコードのインスタンス情報を示す説明図である。
図15D図15Dは、図15Bに示したソースコードの構成情報を示す説明図である。
図16A図16Aは、複数のオーケストレータAP203a、203b、203cのデータモデルを示す説明図である。
図16B図16Bは、オーケストレータAPの基本的なデータモデルの構成情報グラフを示す説明図である。
図16C図16Cは、パラメータ51、52、53の類似性に基づいて、コンピューティングリソース50を生成する説明図である。
図17図17は、本実施形態のハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【0012】
[ネットワークシステムの構成]
以下、本発明の実施形態について説明する。図1は、実施形態に係るAPIアダプタ生成装置が採用されるネットワークシステム200の構成を示すブロック図である。初めに、図1を参照してネットワークシステム200について説明する。
【0013】
図1に示すネットワークシステム200において、サービスプロバイダ202に接続されたエンドユーザ201は、希望するサービスを要求すると、ネットワークまたはクラウド上に設定されている複数の卸サービス事業者220(220a~220d)から提供される管理対象サービスを受け取ることができる。
【0014】
なお、本実施形態では、2つの卸サービス事業者220a、220bが既にネットワークシステム200に存在しており、新たに2つの卸サービス事業者220c、220dを追加する例について説明する。卸サービス事業者220a、220dは、ネットワークによる管理対象サービスを提供する。卸サービス事業者220b、220cは、クラウドによる管理対象サービスを提供する。
【0015】
以下では、卸サービス事業者を特定して示す場合には「卸サービス事業者220a」のようにサフィックスを付して示し、特定しない場合及び総称して示す場合には「卸サービス事業者220」のようにサフィックスを付さずに示すことにする。他の符号についても同様とする。
【0016】
サービスプロバイダ202と各卸サービス事業者220との間には、オーケストレータ210、及び各卸サービス事業者220に対応したAPIアダプタ211(211a~211d)が設けられている。
【0017】
オーケストレータ210は、サービスプロバイダ202から提供されるオーケストレータAP203を取得し、各卸サービス事業者220のネットワーク、及びクラウド、アプリを組み合わせたサービスを一括で連携する。
【0018】
即ち、各卸サービス事業者220が提供する管理対象サービスは、各卸サービス事業者220ごとにその仕様が異なっている。このため、サービスプロバイダ202が複数の管理対象サービスを組み合わせて新たなサービスを提供する場合には、上記仕様の相違を吸収し、複数の管理対象サービスを連携させる必要がある。オーケストレータ210は、この連携を行う。
【0019】
オーケストレータAP203は、後述するノースバウンドAPI204を利用して生成されるアプリケーションである。オーケストレータAP203は、構築設定AP及び自律運用APを含む。オーケストレータAP203は、例えばカタログである。カタログは、複数の管理対象サービスを連携させるために必要な各管理対象サービスの仕様を記述したデータファイルである。
【0020】
サービスプロバイダ202と、オーケストレータ210との間には、ノースバウンドAPI204が設けられている。ノースバウンドAPI204は、サービスプロバイダ202と、オーケストレータ210を接続するインターフェースである。
【0021】
各卸サービス事業者220と、オーケストレータ210との間には、サウスバウンドAPI212が設けられている。サウスバウンドAPI212は、各卸サービス事業者220とオーケストレータ210を接続するインターフェースである。
【0022】
オーケストレータ210は、内部API213(図2参照)を介して、各卸サービス事業者220に対応して設置されたAPIアダプタ211に接続されている。APIアダプタ211は、各卸サービス事業者220ごとに生成され、各卸サービス事業者220が提供するAPI仕様差分を吸収する。
【0023】
オーケストレータ210は、サービスプロバイダ202が発行したオーダを、各卸サービス事業者220用のAPIアダプタ211が処理できる単位である「単体オーダ」に分解し、各卸サービス事業者220(220a~220d)のAPIアダプタ211(211a~211d)に送信する。
【0024】
各APIアダプタ211は、オーケストレータ210のデータモデルと、各卸サービス事業者220のデータモデルを相互に変換する機能を有している。
【0025】
上述したように、2つの卸サービス事業者220a、220bが既に設置されているネットワークシステム200において、2つの卸サービス事業者220c、220dにより提供される管理対象サービスを新たに追加する場合には、APIアダプタ211c、211dを生成する必要がある。即ち、図1に示すように、既存のAPIアダプタ211a、211bに加えて、新規にAPIアダプタ211c、211dを生成する必要がある。
【0026】
本実施形態では、APIアダプタ211c、211dの生成の少なくとも一部を自動化することより、作業者の労力を軽減し且つ低コスト化を図る。以下詳細に説明する。
【0027】
図2は、図1に示したAPIアダプタ211の詳細な構成を示すブロック図である。図2に示すように、APIアダプタ211は、オーダ受付部231と、API呼出ロジック部232と、サウスバウンドAPI実行部233を備える。APIアダプタ211は、本実施形態に係るAPIアダプタ生成装置100に接続されている。
【0028】
オーダ受付部231は、オーケストレータ210に送信されるオーダN1を受け付け、オーダN1の内容を取得する。オーダ受付部231は、オーケストレータ210への応答処理を行う。具体的には、オーダ受付部231は、連携オーダ受付/応答処理として、オーケストレータ210との間で予め決められた手順に従って、オーダN1の受信からオーダN1の実行完了までの状態管理および通知、実行結果の流通を行う。
【0029】
オーダ受付部231は、オーダ内容の取得処理として、API呼出ロジック部232の要請を受け、詳細なオーダ内容(カタログなど)を取得する。
【0030】
API呼出ロジック部232は、サウスバウンドAPI212の起動条件をチェックし、予め設定された実行順序に従ってサウスバウンドAPI212を起動する。
【0031】
API呼出ロジック部232は、オーケストレータ210からのオーダN1からサウスバウンドAPI212の実行に必要なパラメータを取り出し、サウスバウンドAPI実行部233に送信する。API呼出ロジック部232は、サウスバウンドAPI212の実行結果をサウスバウンドAPI実行部233から取得する。API呼出ロジック部232は、取得した前記実行結果をオーケストレータ210に流通するための適切なデータ形式に変換する。
【0032】
サウスバウンドAPI実行部233は、API呼出ロジック部232から、サウスバウンドAPI212の実行に必要なデータを取得し、データ形式を変更して各卸サービス事業者220に送信する。
【0033】
サウスバウンドAPI実行部233は、各卸サービス事業者220からのレスポンスを受信し、適切な形式に変換してAPI呼出ロジック部232に返却する。
【0034】
サウスバウンドAPI実行部233は、各卸サービス事業者220との間で、各卸サービス事業者220のサウスバウンドAPI212を通して、個々のサウスバウンドAPI212に対応したリクエスト送信とレスポンス受信を行う。
【0035】
前述したように、図1に示したネットワークシステム200において、新規に卸サービス事業者220c、220dによる管理対象サービスが追加される場合には、オーケストレータ210に接続されるAPIアダプタ211c、211dを新規に生成する必要がある。
【0036】
本実施形態では、APIアダプタ生成装置100を設けることにより、API呼出ロジック部232の設計の少なくとも一部を自動化し、APIアダプタ211の生成を行う。
【0037】
APIアダプタ211を生成する際には、設計、実装、試験を実施する必要がある。また、設計の工程には、「リソース設計」、「パラメータ設計」、「ロジック設計」が含まれる。実装の工程には、API呼出ロジック部232の実装が含まれる。本実施形態では、「リソース設計」、「パラメータ設計」、「ロジック設計」の少なくとも一部を自動化する。また、API呼出ロジック部232の実装を自動化する。
【0038】
[第1実施形態]
次に、本実施形態に係るAPIアダプタ生成装置100の具体的な構成について説明する。図3は、第1実施形態に係るAPIアダプタ生成装置100、及びその周辺機器の詳細な構成を示すブロック図である。
【0039】
図3に示すように、本実施形態に係るAPIアダプタ生成装置100は、データモデル記憶部11と、API仕様記憶部12と、APIスキーマ変換部13と、スキーマ情報記憶部14と、外部情報記憶部15を備えている。APIアダプタ生成装置100は、変換ルール算出部16と、変換ルール記憶部17と、変換ルール可視化部18と、呼出ロジック部生成部19(生成部)と、API実行部生成部20と、APIアダプタ生成部21と、APIアダプタ記憶部22を備えている。APIアダプタ生成装置100には、確認画面33が接続されている。
【0040】
データモデル記憶部11は、オーケストレータ210から入力されるオーケストレータデータモデル31を取得して記憶する。
【0041】
API仕様記憶部12は、管理対象となるデータモデルのサウスバウンドAPI仕様32(管理対象モデルのAPI仕様)を取得して記憶する。
【0042】
APIスキーマ変換部13は、API仕様記憶部12に記憶されているサウスバウンドAPI仕様32を、スキーマの形式に変換する。図4は、オープンAPIスペック形式で記述されたAPI仕様P1をUML(Unified Modeling Language)形式のデータモデルP2に変換する例を示す説明図である。図4の符号a1、a2に示すスキーマ情報を例えば「WAPIml」により、UMLなどのデータモデルP2に変換する。
【0043】
スキーマ情報記憶部14は、APIスキーマ変換部13で変換されたスキーマ情報を記憶する。
【0044】
外部情報記憶部15は、オントロジーなどの外部から送信された情報を記憶する。
【0045】
変換ルール算出部16は、既存のスキーママッチングを利用してデータモデルの変換ルールを算出する。変換ルール算出部16では、APIアダプタ211を生成する際の、リソース設計、パラメータ設計、ロジック設計を行う。
【0046】
変換ルール算出部16は、サウスバウンドAPI212の仕様から導出できるデータスキーマと、オーケストレータ210におけるデータスキーマの変換ルールを導出する部分に、スキーママッチングの技術を適用することにより、モデル変換を自動化する。以下、「リソース設計及びパラメータ設計の工程」及び「ロジック設計の工程」について具体的に説明する。
【0047】
(リソース設計及びパラメータ設計の工程)
図5A図5B図5Cを参照して、リソース設計及びパラメータ設計の詳細について説明する。図5Aは、A社及びB社による管理対象サービスのAPIアダプタを生成する際の、各社のデータモデルM1、M2のリソース設計、パラメータ設計を示す説明図である。図5Bは、A社及びB社による管理対象サービスのAPIアダプタを生成する際の、各社のデータモデルM1、M2のパラメータ値の変換を示す説明図である。図5Cは、オーケストレータAPとオーケストレータの関係を示す説明図である。
【0048】
リソース設計及びパラメータ設計を実施するためには、A社及びB社が管理する管理対象サービスのデータモデルM1、M2と、オーケストレータ210のデータモデルM3の変換ルールを定義する必要がある。また、リソース、パラメータ単位の変換ルール、及びパラメータ値の変換ルールが必要である。
【0049】
例えば、図5Aに示すように、A社のデータモデルM1及びB社のデータモデルのリソース、及びパラメータを変換し、オーケストレータ210のデータモデルM3を生成する。具体的に、データモデルM1の「EC2Instance」、及びデータモデルM2の「Virtual Machines」を、データモデルM3の「VM」に変換する。また、データモデルM1の「Instance Type」、及びデータモデルM2の「vmsize」を、データモデルM3の「hardware Spec」に変換する。
【0050】
また、図5Bに示すように、A社のデータモデルM1及びB社のデータモデルM2のパラメータ値を変換し、オーケストレータ210のデータモデルM3を生成する。具体的に、オーケストレータ210のデータモデルM3を、独自に定義した「Large」、「Medium」、「Small」の3つに簡素化して設定する。データモデルM1のパラメータ値「m1.small」を「Small」に変換し、「a1.medium」を「Medium」に変換し、「m4.large」を「Large」に変換する。データモデルM2のパラメータ値「Dsv3」を「Small」に変換する。
【0051】
上記の変換ルールを設定することにより、図5Cに示すように、オーケストレータ210は、オーケストレータAP203としてデータモデル「VM」が与えられた際に、クラウドベンダを意識することなく使用することができる。即ち、オーケストレータAP203からは、図5A図5Bに示したデータモデルM1、及びデータモデルM2は同様のデータモデル「VM」として取り扱うことができる。
【0052】
具体的に、図5A図5Bに示したデータモデルの変換を、スキーママッチングを用いて変換する。スキーママッチングとして、例えば、「Graph-Based」手法を用いることができる。「Graph-Based」手法では、パラメータの名称のみならず、スキーマのグラフ/木構造を考慮した上でパラメータをマッチングすることが可能である。
【0053】
更に、データのスキーマのみならず、実際のデータ値(インスタンス)を使用する「Instance-based」手法や、このInstance-based」手法とスキーマ情報を合わせて使用する「Hybrid」手法を用いることも可能である。
【0054】
(ロジック設計の工程)
次に、図6A図6Bを参照して、ロジック設計の詳細について説明する。図6Aは、APIの実行順序を示す説明図である。図6Bは、データモデルM11を有する卸サービス事業者220であるC社、データモデルM12を有する卸サービス事業者220であるD社、及びデータモデルM13を有する卸サービス事業者220であるE社による管理対象サービスを追加する際の、各データモデルM11~M13のロジック設計を示す説明図である。
【0055】
管理対象サービスにおける複数のリソースをまとめて一つの単位で管理する場合には、APIの実行順序、パラメータの流通関係を定義する必要がある。例えば、図6Aに示すように、「VPC」→「Subnet」→「EC2」の順に、APIの実行順序を定義する。
【0056】
また、図6Bに示すように、C社、D社、E社の各データモデルM11~M13において、パラメータの流通関係を、図中の矢印Z1、Z2のように定義する。その結果、各データモデル間における流通関係が定義されたオーケストレータ210のデータモデルM14が生成される。
【0057】
このように、変換ルール算出部16では、データモデルの変換ルールを算出し、APIアダプタ211を生成する際の、リソース設計、パラメータ設計、ロジック設計を行う。また、後述する呼出ロジック部生成部19では、上記リソース設計、パラメータ設計、ロジック設計の結果に基づいて、API呼出ロジック部232を生成する。
【0058】
図3に戻って、変換ルール記憶部17は、変換ルール算出部16で算出されたモデル変換ルールを記憶する。
【0059】
変換ルール可視化部18は、変換ルール記憶部17に記憶されているモデル変換ルールを確認画面33に出力することで、モデル変換ルールをユーザが確認できるように可視化する。例えば、モデル変換ルールのデータを確認画面33に送信し、このデータを確認画面33にて表示することにより、モデル変換ルールをユーザに認識させる。
【0060】
呼出ロジック部生成部19は、変換ルール算出部16で算出されたリソース設計、パラメータ設計、ロジック設計の結果に基づいて、API呼出ロジック部232を自動生成する。呼出ロジック部生成部19は、変換ルール算出部16で算出されたモデル変換ルールに従って、テンプレートのソースコードを書き換える。
【0061】
以下、ソースコードの生成手順を図7A図7B図8A図8Bを参照して説明する。図7Aは、図5Aに示したデータモデルM1のパラメータを、オーケストレータ210のデータモデルM3のパラメータに変換する際の対応関係を示す説明図、図7Bは、図7Aに示すパラメータを記述したソースコードを示す説明図である。
【0062】
図7Aに示すように、データモデルM1の符号x1に示す「EC2Instance」を符号x2に示す「VM」に変更し、符号x3に示す「InstanceType」を符号x4に示す「hardwareSpec」に変更する場合には、図7Bの符号y1に示す「ec2」、符号y2に示す「vm」、符号y3に示す「instance type」、符号y4に示す「hardwareSpec」のようにソースコードを記述する。
【0063】
即ち、予め図7Bに示すようなソースコードのテンプレートを用意しておき、このテンプレートに変更データを書き込むことにより、必要とするデータモデル間を変換するソースコードを生成することができる。
【0064】
図8Aは、図5Bに示したデータモデルM1のパラメータ値を、オーケストレータ210のデータモデルM3のパラメータ値に変換する際の対応関係を示す説明図である。図8Bは、図8Aに示すパラメータ値を記述したソースコードを示す説明図である。
【0065】
図8Aに示すように、データモデルM1の符号x11に示す「M4.large」を、符号x12に示す「Large」に変更する場合には、図8Bのソースコード301の符号y11に示す「m4.large、符号y12に示す「large」を記述する。また、何らかの計算ロジックが必要な場合には、ソースコード302に示すような関数に変換する。
【0066】
図3に戻って、API実行部生成部20は、API仕様記憶部12に記憶されているサウスバウンドAPI仕様32に基づいて、APIアダプタ211におけるサウスバウンドAPI実行部233(図2参照)を生成する。サウスバウンドAPI実行部233の生成には、例えば「Swagger Codegen/Open API Generator」等の既存ツールを活用することができる。
【0067】
APIアダプタ生成部21は、呼出ロジック部生成部19で生成された呼出ロジック部232、及びサウスバウンドAPI実行部233に基づいて、APIアダプタ211を生成する。また、必要に応じて記憶されているAPIアダプタ211を外部に出力する。
【0068】
APIアダプタ記憶部22は、APIアダプタ生成部21で生成されたAPIアダプタ211を記憶する。
【0069】
[第1実施形態の動作]
次に、第1実施形態に係るAPIアダプタ生成装置100の処理手順を、図9に示すフローチャートを参照して説明する。初めに、図9のステップS11において、データモデル記憶部11は、オーケストレータ210から出力されるオーケストレータデータモデル31を取得し、データモデル記憶部11に記憶する。
【0070】
ステップS12において、API仕様記憶部12は、オーケストレータ210から出力されるサウスバウンドAPI仕様32を取得し、API仕様記憶部12に記憶する。
【0071】
ステップS13において、APIスキーマ変換部13は、API仕様記憶部12に記憶されているサウスバウンドAPI仕様32をスキーマの形式に変換する。変換後のスキーマ情報をスキーマ情報記憶部14に記憶する。
【0072】
ステップS14において、変換ルール算出部16は、データモデル記憶部11に記憶されているオーケストレータデータモデル31、スキーマ情報記憶部14に記憶されているスキーマ情報、及び外部情報記憶部15に記憶されている外部情報に基づき、モデル変換ルールを算出する。変換ルール算出部16は、算出したモデル変換ルールを変換ルール記憶部17に記憶する。
【0073】
ステップS15において、変換ルール可視化部18は、必要に応じて変換ルール記憶部17に記憶されている変換ルールを確認画面33に出力する。操作者は、確認画面33を見ることにより、変換ルールを認識することができる。
【0074】
ステップS16において、呼出ロジック部生成部19は、変換ルール記憶部17に記憶されているモデル変換ルールに基づき、APIアダプタのソースコードを書き換えて、API呼出ロジック部232を生成する。これにより、API呼出ロジック部232を自動生成することができる。
【0075】
ステップS17において、API実行部生成部20は、API仕様記憶部12に記憶されているサウスバウンドAPIアダプタの仕様に基づいて、図2に示すサウスバウンドAPI実行部233を生成する。
【0076】
ステップS18において、APIアダプタ生成部21は、API実行部生成部20で生成されたサウスバウンドAPI実行部233、及び、呼出ロジック部生成部19で生成されたAPI呼出ロジック部232に基づいて、最終的なAPIアダプタ211を生成する。生成されたAPIアダプタ211は、APIアダプタ記憶部22に記憶される。
【0077】
[第1実施形態の効果]
このように、第1実施形態に係るAPIアダプタ生成装置100は、オーケストレータ210のデータモデルと、管理対象モデルのAPI仕様を取得し、オーケストレータ210のデータスキーマ、及びAPI仕様のデータスキーマに基づいてスキーママッチングを行い、モデル変換ルールを算出する変換ルール算出部16と、モデル変換ルールに基づいて、APIアダプタ実行ロジックを記述したAPI呼出ロジック部のソースコードを書き換える呼出ロジック部生成部19(生成部)と、ソースコードが書き換えられたAPI呼出ロジック部に基づいて、管理対象モデルのAPIアダプタを生成するAPIアダプタ生成部21と、を備える。
【0078】
上記の構成により、第1実施形態に係るAPIアダプタ生成装置100では、オーケストレータ210に対して、新規の管理対象サービスを有する卸サービス事業者220が追加される際に、新規にAPIアダプタ211を設計する際の設計工程を容易に実施することが可能となる。具体的に、APIアダプタ211の生成に要する労力、時間、コストを低減することが可能となる。
【0079】
第1実施形態では、呼出ロジック部生成部19は、所定のソースコードのテンプレートを設定し、管理対象のAPI仕様のリソース、パラメータ名、パラメータ値の少なくとも一つを、テンプレートに書き込むことによりソースコードを生成し、API呼出ロジック部を生成する。このため、API呼出ロジック部232を簡単な操作で生成することが可能になる。
【0080】
[第2実施形態]
次に、本実施形態の第2実施形態について説明する。前述した第1実施形態では、新規にネットワークシステム200に接続される管理対象サービスのデータモデルに対し、テンプレートを用いてAPIアダプタ211を生成した。第2実施形態では、複数のサービスモデルのリソースを一つにまとめ、多対一の対応によりマッチングを行い、APIアダプタ211を生成する例について説明する。
【0081】
第2実施形態では、多対一の対応によるマッチングを行う際に、リソース単位とパラメータ単位でマッチングの寄与率を可変にする。または、サウスバウンドAPIのスキーマ情報から生成した依存関係グラフを利用して、確度の高い多対一のマッチングを行う。
【0082】
図10は、第2実施形態に係るAPIアダプタ生成装置100aの構成を示すブロック図である。図10に示すAPIアダプタ生成装置100aは、前述の図3に示したAPIアダプタ生成装置100と対比して、依存関係グラフ生成部23、及び依存関係グラフ記憶部29を備えている点で相違する。以下では、図3に示す構成要素と同一の構成要素については同一符号を付し、構成説明を省略する。
【0083】
図10に示す依存関係グラフ生成部23は、サウスバウンドAPI212のスキーマ情報から、事前にリソース間の依存関係を抽出しグラフ表現を生成する。図11は、卸サービス事業者220であるC社、D社、E者の各データモデルM11~M13のリソース及びパラメータを、オーケストレータのデータモデルM14のリソース及びパラメータに変換する際の対応関係を示す説明図である。
【0084】
依存関係グラフ生成部23は、図11の符号x32、x34に示すように、サウスバウンドAPI仕様32から抽出したスキーマ情報から符号x32、x34に示すリソース間の依存関係を分析してグラフを生成する。
【0085】
依存関係グラフ記憶部29は、依存関係グラフ生成部23で生成された依存関係グラフを記憶する。
【0086】
変換ルール算出部16は、前述した第1実施形態の機能に加え、事前準備として複数のリソースをまとめて一つ集約する際に、図11に示すように、各社のデータモデルM11~M13を一つにまとめる。具体的に、複数のリソースをまとめて一つに集約する際に、推定の精度を向上させ、且つ、多対一のマッチングを可能にするため、リソース単位とパラメータ単位のマッチング寄与率を設定する。更に、該寄与率を可変にする。
【0087】
具体的に、下記の(1)式によりパラメータiとjがマッチングする確率「M(i,j)」を算出する。
【0088】
M(i,j)=k*R(i,j)+(1-k)*P(i,j) …(1)
(1)式において、「M(i,j)」は既存のスキーママッチングを採用したときの、パラメータiとパラメータjがマッチングする確率を示す。「R(i,j)」は、パラメータi,jが属するリソースどうしのマッチング確率を示す。「P(i,j)」は、パラメータのみでのマッチング確率を示す。「k」は可変の数値であり「R(i,j)」の寄与率を示す。
【0089】
(1)式において、リソース単位でのマッチングとパラメータ単位でのマッチングの重みを調整可能とする。即ち、上記寄与率kの数値を調整可能とする。
【0090】
また、上述したサウスバウンドAPI212のスキーマ情報から生成した依存関係のグラフを利用して、確度の高い多対一のマッチングができるようにする。
【0091】
変換ルール算出部16は、初めに、リソース単位でのマッチング情報の寄与率kを下げてマッチングを実施する。変換ルール算出部16は、上記のマッチングが取れた場合には、パラメータが属しているリソースを確認する。依存関係グラフ上で、繋がっていればそれら全てに、多対一でマッチングしたものとする。マッチング候補のリソースが複数ある場合には、依存関係グラフ上でより近い距離でつながっている方を選択する。
【0092】
図12は、第2実施形態に係るAPIアダプタ生成装置100aによるコード変換処理の手順を示す説明図である。図12に示すように、変換ルール記憶部17に記憶されるモデル変換ルールは、前述した(1)式に示した「R(i,j)」の寄与率「k」を設定し、マッチングの重みを調整できるようにする。
【0093】
図12のST1において、依存関係グラフ生成部23は、サウスバウンドAPI仕様32から抽出したスキーマ情報に基づいて、複数のリソース間の依存関係を分析して依存関係グラフを生成する。
【0094】
ST2において、変換ルール算出部16は、トポロジカルソートなどのアルゴリズムを用いて、複数のソースコードの実行順序を算出する。
【0095】
ST3において、呼出ロジック部生成部19は、依存関係グラフ、及び(1)式に示した重み付けに基づいて、APIアダプタ211のソースコードを書き換える。
【0096】
上記のように、変換ルール算出部16は、可変寄与率「k」及び依存関係グラフを活用してマッチング方式を算出している。
【0097】
次に、図11及び図13を参照して、具体的なソースコードの書き換えについて説明する。前述したように、図11は、C社、D社、E社の各データモデルM11~M13のリソース及びパラメータを、オーケストレータのデータモデルM14のリソース及びパラメータに変換する際の対応関係を示す説明図である。また、図13は、図11に示したリソース及びパラメータを記述したソースコードを示す説明図である。
【0098】
図11に示したデータモデルM11、M12、M13をオーケストレータ210のデータモデルM14に変換する際に、符号x31に示す「cidrBlock」を、図13に示すソースコードの符号y31に示す「vpc_cidrBlock」に記述する。また、図11の符号x12に示すリソース間の依存関係を、図13の符号y32に示す「vcp.id」に記述する。図11の符号x33に示す「cidrBlock」を、図13の符号y33に示す「subnet_cidrBlock」に記述する。
【0099】
図11の符号x34に示すリソース間の依存関係を、図13の符号y34に示す「subnet.id」に記述する。図11の符号x35に示す「networkSegment」を、図13の符号y35に示す「vm.networkSegment」に記述する。図11の符号x36に示す「subnetSegment」を、図13の符号y36に示す「vm.subnetSegment」に記述する。
【0100】
図13に示す符号y37は、マッチングした全てのリソースの定義を示している。符号y38は、算出した実行順序で生成されたリソースを示している。
【0101】
上述のように、各データモデルM1~M3の重み付けを考慮して、APIアダプタのソースコードへ落とし込むことが可能になる。
【0102】
このように、第2実施形態に係るAPIアダプタ生成装置100aでは、複数のリソースをまとめて一つに集約する場合において、確度の高いマッチングを行うことが可能となる。
【0103】
具体的に、変換ルール算出部16は、管理対象のAPI仕様に含まれる複数のリソースを、可変寄与率k、及び依存関係グラフ情報を用いてマッチングして一つのリソースに集約する。
【0104】
変換ルール算出部16は、リソース集約後の管理対象のAPI仕様のデータスキーマと、オーケストレータ210のデータスキーマに基づいてスキーママッチングを行い、APIアダプタのモデル変換ルールを生成する。その結果、確度の高い多対一のマッチングが可能となり、新規のAPIアダプタ211を容易に生成することが可能となる。
【0105】
[第3実施形態の説明]
次に、本実施形態の第3実施形態について説明する。オーケストレータ210のデータモデルの抽象度が高くなると、リソース名、パラメータ名とその構造との乖離が大きくなり、マッチングが難しくなる。既存のスキーママッチングの手法では、スキーマ情報に加えて、インスタンス情報も加味するハイブリッド手法により精度の向上が図られているが、オーケストレータ210に適用する場合には、インスタンス情報の取得が難しい。
【0106】
第3実施形態では、オーケストレータ210が有するオーケストレータAP203に含まれるインスタンス情報、及び構成情報を活用してマッチング精度の向上を図る。
【0107】
図14は、第3実施形態に係るAPIアダプタ生成装置100bの構成を示すブロック図である。図14では、図3に示したAPIアダプタ生成装置100に対して、追加する構成要素のみを示している。即ち、第3実施形態に係るAPIアダプタ生成装置100bは、図3に示した各構成要素11~21に加えて、図14に示す構成要素24~28を備えている。以下、各構成要素24~28について説明する。
【0108】
図14に示すオーケストレータAP収集部24は、オーケストレータ210からオーケストレータAP203を収集する。オーケストレータAP203はノースバウンドAPI204を用いて生成される。オーケストレータAP203は、例えばカタログである。
【0109】
AP情報抽出部25は、収集したオーケストレータAP203から、サウスバウンドAPI212のインスタンス情報、オーケストレータAPの構成情報グラフを抽出する。「構成情報グラフ」とは、後述する図16Bに示すように、例えば、アプリ、コンピューティングリソース、ネットワークなどのデータ構造を示す。
【0110】
インスタンス情報記憶部26は、AP情報抽出部25で抽出したサウスバウンドAPI212のインスタンス情報を記憶する。
【0111】
構成情報グラフ記憶部27は、AP情報抽出部25で抽出したオーケストレータAP構成情報グラフを記憶する。具体的に、図15Aに示すように、各オーケストレータAP203a~203cに含まれるシステムの構成情報を、構成情報グラフとして記憶する。
【0112】
類似度算出部28は、構成情報グラフ記憶部27に記憶されている構成情報グラフに基づいて、リソース間の類似度を算出する。
【0113】
変換ルール算出部16は、前述したオーケストレータデータモデル、スキーマ情報、外部情報に加えて、サウスバウンドAPI212のインスタンス情報、オーケストレータAP構成情報グラフ、及びリソース間の類似度に基づいて、ソースコードの変換ルールを算出する。
【0114】
図15Aは、オーケストレータAP203とオーケストレータ210の関係を示す説明図である。図15Bは、図15Aに示したオーケストレータAP203のデータモデルに含まれるリソース及びパラメータを記述したソースコードを示す説明図である。図15Cは、図15Bに示したソースコードのインスタンス情報を示す説明図である。図15Dは、図15Bに示したソースコードの構成情報を示す説明図である。
【0115】
変換ルール算出部16は、図15Bの符号x21、x22、x23に示すインスタンス情報、及び構成情報を取得し、図15Cの符号y21、y22、y23に示すように、各「id」に記述するデータを書き込む。また、図15Dの符号Q1に示すように、構成情報を設定する。
【0116】
また、変換ルール算出部16は、オーケストレータAP203に含まれるシステムの構成情報グラフの類似性を用いて、同種の概念である可能性が高いものに対して、マッチング確率が高くなるように設定する。
【0117】
図16Aは、複数のオーケストレータAP203a、203b、203cのデータモデルの構成情報グラフを示す説明図である。図16Bは、オーケストレータAP203の基本的なデータモデルの構成情報グラフを示す説明図である。図16Cは、各オーケストレータAP203に含まれるパラメータ51、52、53の類似性に基づいて、コンピューティングリソース50を生成する説明図である。
【0118】
類似度算出部28は、図16Bに示す「アプリ」、「コンピューティングリソース」、「ネットワーク」の構造と、図16Aに示す各オーケストレータAP203a、203b、203cの構成情報を対比してリソース間の類似度を算出する。
【0119】
例えば、図16Aに示すように、3種類のオーケストレータAP203a、203b、203cが、それぞれ「VM51」、「コンテナ52」、「サーバレス53」のパラメータを有する場合には、図16Cに示すように、各パラメータ51、52、53の類似性に基づいて、コンピューティングリソース50を設定する。
【0120】
具体的な算出方法として、パラメータiとパラメータjがマッチングする確率を「M´(i,j)」とし、下記(2)式により設定する。
【0121】
M´(i,j)=(1-a)・M(i,j)+a・S(i,j) …(2)
(2)式において、「M(i,j)」は既存のスキーママッチングを採用したときの、パラメータiとパラメータjがマッチングする確率を示す。「S(i,j)」は、構成情報グラフにおけるリソース間の類似度を加味したパラメータi、jの類似度を示す。「a」は、構成情報グラフの類似度の寄与率を示す。こうすることにより、複数のオーケストレータAP203において、同種の概念である可能性の高い場合にマッチング確率が高くなるように設定できる。
【0122】
このように、第3実施形態に係るAPIアダプタ生成装置100bでは、上記(2)式を用いてスキーママッチングを実施することにより、複数のオーケストレータAP203が与えられた場合において、新規のAPIアダプタ211を簡便且つ高精度に生成することができる。
【0123】
また、第3実施形態に係るAPIアダプタ生成装置100bでは、オーケストレータAP203の情報に含まれる構成情報グラフに基づいて、各オーケストレータAP203に含まれる各リソース間の類似度を算出している。算出した類似度、及びインスタンス情報に基づいて、モデル変換ルールを生成し、API呼出ロジック部232を生成している。その結果、新規のAPIアダプタ211を間便且つ高精度に生成することができる。
【0124】
上記説明した各実施形態のAPIアダプタ生成装置100、100a、100bには、図17に示すように例えば、CPU(Central Processing Unit、プロセッサ)901と、メモリ902と、ストレージ903(HDD:HardDisk Drive、SSD:SolidState Drive)と、通信装置904と、入力装置905と、出力装置906とを備える汎用的なコンピュータシステムを用いることができる。メモリ902およびストレージ903は、記憶装置である。このコンピュータシステムにおいて、CPU901がメモリ902上にロードされた所定のプログラムを実行することにより、APIアダプタ生成装置100、100a、100bの各機能が実現される。
【0125】
なお、APIアダプタ生成装置100、100a、100bは、1つのコンピュータで実装されてもよく、あるいは複数のコンピュータで実装されても良い。また、APIアダプタ生成装置100、100a、100bは、コンピュータに実装される仮想マシンであっても良い。
【0126】
なお、APIアダプタ生成装置100、100a、100b用のプログラムは、HDD、SSD、USB(Universal Serial Bus)メモリ、CD (Compact Disc)、DVD (Digital Versatile Disc)などのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
【0127】
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【符号の説明】
【0128】
11 データモデル記憶部
12 API仕様記憶部
13 APIスキーマ変換部
14 スキーマ情報記憶部
15 外部情報記憶部
16 変換ルール算出部
17 変換ルール記憶部
18 変換ルール可視化部
19 呼出ロジック部生成部(生成部)
20 API実行部生成部
21 APIアダプタ生成部
22 APIアダプタ記憶部
23 依存関係グラフ生成部
24 オーケストレータAP収集部
25 AP情報抽出部
26 インスタンス情報記憶部
27 構成情報グラフ記憶部
28 類似度算出部
29 依存関係グラフ記憶部
31 オーケストレータデータモデル
32 サウスバウンドAPI仕様
33 確認画面
100、100a、100b APIアダプタ生成装置
200 ネットワークシステム
201 エンドユーザ
202 サービスプロバイダ
203 オーケストレータAP
210 オーケストレータ
211(211a~211d) APIアダプタ
220(220a~220d)卸サービス事業者
231 オーダ受付部
232 API呼出ロジック部
233 サウスバウンドAPI実行部
図1
図2
図3
図4
図5A
図5B
図5C
図6A
図6B
図7A
図7B
図8A
図8B
図9
図10
図11
図12
図13
図14
図15A
図15B
図15C
図15D
図16A
図16B
図16C
図17