JP7313309B2 - プログラム実行支援装置、及びプログラム実行支援方法 - Google Patents

プログラム実行支援装置、及びプログラム実行支援方法 Download PDF

Info

Publication number
JP7313309B2
JP7313309B2 JP2020062980A JP2020062980A JP7313309B2 JP 7313309 B2 JP7313309 B2 JP 7313309B2 JP 2020062980 A JP2020062980 A JP 2020062980A JP 2020062980 A JP2020062980 A JP 2020062980A JP 7313309 B2 JP7313309 B2 JP 7313309B2
Authority
JP
Japan
Prior art keywords
environment
program
predetermined
serverless
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020062980A
Other languages
English (en)
Other versions
JP2021163092A (ja
Inventor
一仁 横井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2020062980A priority Critical patent/JP7313309B2/ja
Priority to US17/024,275 priority patent/US20210303301A1/en
Publication of JP2021163092A publication Critical patent/JP2021163092A/ja
Application granted granted Critical
Publication of JP7313309B2 publication Critical patent/JP7313309B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、プログラム実行支援装置、及びプログラム実行支援方法に関する。
クラウドシステムには、IaaS (Infrastructure as a Service)、PaaS (Platform as a Services)等の開発環境が提供されており、アプリケーション開発者は、これらの開発環
境を用いたプログラム(アプリケーション)を開発し、これを実行させることができる。
近年、実行されるプログラムが使用するサーバリソースを効率良く使用するためのサーバレス環境である、FaaS (Function as a Service)が注目されている。サーバレス環境では、アプリケーション開発者が開発したアプリケーションを定期的に実行させ、又は、REST API (REpresentational State Transfer Application Programming Interface)に対するアクセスを介してサーバレス環境を定期的に呼び出すことができる。
このようなサーバレス環境は、特に、実行されるプログラムが、複数のサービス関数の間で状態のやり取りがないステートレスなプログラムである場合に適している。ステートレスなプログラムを実行した場合は、サーバリソースを効率化できる以外にも、プログラムの処理をスケールできるというメリットもある。そのため、サーバレス環境は、大量のデータの処理を扱う定期的なバッチ処理、利用者増加に応じてスケールさせたいバックエンドサーバのREST APIの処理に適している。
他方、近年のプログラミング手法として、ビジュアルプログラミングが注目されている。ビジュアルプログラミングとは、文字列を入力するコーディング作業でプログラムを開発する方法ではなく、視覚的に分かりやすい処理ブロックを組み合わせて開発する開発手法である。このビジュアルプログラミングは、コーディング能力を持たない者でもアイデアを簡単に実装できるという特徴がある。また、コーティング能力を持つ技術者においても、ソースコードの誤入力等から生じるバグを最小限に抑えたり、プロトタイプ開発を迅速に行えたりする等の利点がある。
ビジュアルプログラミングで開発したプログラムを、サーバレス環境で動作させるという試みが存在する。非特許文献1には、ビジュアルプログラミングの中で、コーティングを行う処理ブロックを用意し、本処理ブロックの中に記載したソースコードをサーバレス環境へサーバレス関数として登録する方式が提供されている。本方式の開発環境は、複数の処理ブロックをユーザが指定した順序で実行していき、実行した処理ブロックが、サーバレス環境に登録した処理ブロックに到達した際にサーバレス関数を呼び出す。
非特許文献2には、複数の処理ブロックから成る一連の処理に対して、サーバレス環境へ登録する起点の処理ブロックと、終点の処理ブロックを追加する方式が開示されている。この方式は、全ての処理ブロックをまとめてサーバレス環境へ登録するものである。サーバレス環境は、処理ブロックの起点と終点の情報を基に、サーバレス環境で実行すべき一連の処理ブロックを認識する。
"OpenWhisk処理ブロック:処理ブロックに記載したJavaScriptコードをサーバレス環境で実行"、[online]、[令和2年2月28日検索]、インターネット<URL:https://flows.nodered.org/node/node-red-node-openwhisk> "Lambda request/response処理ブロック: Lambda request処理ブロックとLambda response処理ブロックの間に配置したフローをサーバレス環境で実行"、[online]、[令和2年2月28日検索]、インターネット<URL:https://docs.enebular.com/ja/deploy/deployflow/lambda>
しかしながら、両非特許文献の方式は、開発者が新規にアプリケーションを開発してサーバレス環境で実行させる際は有効であるが、過去に開発し蓄積してきたアプリケーションのプログラムをサーバレス環境で実行させたい場合は、全てのアプリケーションに対してサーバレス環境で動作させるための修正作業を行わなければならず、開発工数が増大してしまう。
この場合、サーバレス化において、前述したリソースの使用量の効率化又はスケーリング等のメリットよりも、開発工数が増大するデメリットの方が大きくなってしまう可能性がある。このように、サーバレス環境とランタイム環境を使い分けることは容易ではない。
本発明はこのような現状に鑑みてなされたものであり、その目的は、所望の処理を効率的に実行可能な環境下にて実行させることが可能なプログラム実行支援装置、及びプログラム実行支援方法を提供することにある。
前記した課題を解決するための本発明の一つは、実行対象の処理の情報及び当該処理の属性の情報を取得するフローデータ取得処理と、所定の処理と当該所定の処理を実行する環境との間の関係を規定した所定のルールと、前記取得した属性の情報とに基づき、前記実行対象の処理を実行する環境を決定する環境判定処理と、前記決定した環境に、当該環境にて前記実行対象の処理を実現するプログラムを実行させるための情報を送信する登録処理と、を実行する演算装置を備え、前記所定のルールは、前記所定の処理の属性としての、当該所定の処理がアクセスするリソースの場所が、前記所定の処理に対応するプログラムを予め記憶している所定のサーバから構成されるランタイム環境にのみ存在する場合に、当該所定の処理を実行する環境を前記ランタイム環境と規定し、当該所定の処理がアクセスするリソースの場所が、前記ランタイム環境と異なる環境であって、各ユーザが利用可能なプログラムを提供するサーバレス環境に存在する場合に、当該所定の処理を実行する環境を前記サーバレス環境と規定しており、前記演算装置が、前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理がアクセスするリソースの場所の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、プログラム実行支援装置、とする。
前記した課題を解決するための本発明の他の一つは、情報処理装置が、実行対象の処理の情報及び当該処理の属性の情報を取得するフローデータ取得処理と、所定の処理と当該所定の処理を実行する環境との間の関係を規定した所定のルールと、前記取得した属性の情報とに基づき、前記実行対象の処理を実行する環境を決定する環境判定処理と、前記決定した環境に、当該環境にて前記実行対象の処理を実現するプログラムを実行させるための情報を送信する登録処理と、を実行し、前記所定のルールは、前記所定の処理の属性としての、当該所定の処理がアクセスするリソースの場所が、前記所定の処理に対応するプログラムを予め記憶している所定のサーバから構成されるランタイム環境にのみ存在する場合に、当該所定の処理を実行する環境を前記ランタイム環境と規定し、当該所定の処理がアクセスするリソースの場所が、前記ランタイム環境と異なる環境であって、各ユーザが利用可能なプログラムを提供するサーバレス環境に存在する場合に、当該所定の処理を実行する環境を前記サーバレス環境と規定しており、前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理がアクセスするリソースの場所の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、プログラム実行支援方法、とする。
本発明によれば、所望の処理を効率的に実行可能な環境下にて実行させることができる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
本実施形態のプログラム実行支援システムの構成の一例を示す図である。 プログラム変換装置が備えるハードウェア及び機能の一例を説明する図である。 ランタイム環境が備えるハードウェア及び機能の一例を説明する図である。 サーバレス環境が備えるハードウェア及び機能の一例を説明する図である。 フローエディタ環境が備えるハードウェア及び機能の一例を示す図である。 サーバレス化ルールの一例を示す図である。 メサーバレス化処理の一例を説明するフローチャートである。 従来のプログラム実行支援システムの一例の概要を説明する図である。
以下、本実施形態のプログラム実行支援方法について、図面を参照しつつ説明する。
<従来のプログラム実行支援システム>
まず、図8は、従来のプログラム実行支援システム900の一例の概要を説明する図である。このプログラム実行支援システム900は、フローエディタ環境600、及びランタイム環境400を含んで構成される。フローエディタ環境600及びランタイム環境400はそれぞれ、1又は複数の情報処理装置を含む情報処理システムである。フローエディタ環境600及びランタイム環境400の間は、通信可能に接続されている。
フローエディタ環境600は、ランタイム環境400を用いて所定のプログラム開発を行うユーザによって利用される。フローエディタ環境600は、ユーザインタフェースを利用するフローエディタ側処理ブロックプログラム612を記憶している。
フローエディタ側処理ブロックプログラム612は、ユーザ操作により、所定の処理を表す処理ブロック610を、所定の画面に1又は複数個表示する(同図では、3つの処理ブロック610A、610B、610C)。各処理ブロック610は、例えばアイコンとして表示される。処理ブロック610は、後述する、ランタイム環境400に記憶されているランタイム側処理ブロックプログラム412を表す。
また、フローエディタ側処理ブロックプログラム612は、ユーザ操作により、画面に表示されている処理ブロック610のうち、ある処理ブロック610から他の処理ブロック610へと接続する接続図形611(線分等)を画面に表示する。
この接続図形611により、各処理ブロック610が順序付けされる。この接続図形611が示す順序に従って、各処理ブロック610に対応するランタイム側処理ブロックプログラム412がそれぞれランタイム環境400にて実行されることになる。
また、フローエディタ側処理ブロックプログラム612は、ユーザ操作により、画面に表示されている各処理ブロック610の属性情報(プロパティ)を設定する設定画面615を表示する。
プロパティは、処理ブロック610に対応するランタイム側処理ブロックプログラム412の属性情報である。プロパティは、例えば、ランタイム側処理ブロックプログラム412を実行するタイミングを示す情報、ランタイム側処理ブロックプログラム412が取得し又は書き込むデータのアクセス先等の情報である。
フローエディタ側処理ブロックプログラム612は、ユーザからの実行指示の入力により、画面に表示されている各処理ブロック610を特定する情報(すなわちランタイム側処理ブロックプログラム412を特定する情報。以下、ブロック特定情報という。)と、各処理ブロック610間の順序の情報(以下、順序情報という)と、各処理ブロック610のプロパティの情報(以下、プロパティ情報という)と含むデータ(フローデータ)を、ランタイム環境400に送信する。
ランタイム環境400は、フローエディタ環境600に対応して設けられる専用のサーバである。ランタイム環境400は、処理ブロック610に対応するプログラムであるラ
ンタイム側処理ブロックプログラム412を予め記憶している。
ランタイム環境400は、フローエディタ環境600からフローデータ(実行指示)を受信すると、受信したフローデータに基づき、順序情報が示す順序にて、各ランタイム側処理ブロックプログラム412を実行する。この際、各ランタイム側処理ブロックプログラム412は、各ランタイム側処理ブロックプログラム412のプロパティ情報に基づき、各処理を実行する。
このように、プログラム実行支援システム900によると、ユーザは、実行したいランタイム側処理ブロックプログラム412、そのプロパティ、及びその実行順序を、フローエディタ環境600を用いて視覚的に設定することができる。
しかしながら、サーバレス化が進む近年では、フローエディタ環境600を用いて作成した処理ブロック610のフローを、ランタイム環境400だけでなく、サーバレス環境(クラウド等)を用いて実行させるニーズが高まっている。
そこで、以下に説明する本実施形態のプログラム実行支援システム1は、フローデータに対して所定の変換処理を行うことにより、フローエディタ環境600で作成したフローにおける処理ブロック610に係る処理を適宜サーバレス環境で実行できるようにする。
<本実施形態のプログラム実行支援システム>
図1は、本実施形態のプログラム実行支援システム1の構成の一例を示す図である。
本実施形態のプログラム実行支援システム1は、フローエディタ環境600及びランタイム環境400に加えて、サーバレス環境500、及びプログラム変換装置300(プログラム実行支援装置)を含んで構成されている。
フローエディタ環境600は、図8で説明したものと同様の構成及び機能を備える。ランタイム環境400は、図8で説明したものと同様の構成及び機能を備える。
プログラム変換装置300は、1又は複数の情報処理装置を含んで構成される情報処理システムである。プログラム変換装置300は、所定の管理業者の事業所又はデータセンタ等に設けられる。
プログラム変換装置300は、サーバレス化プログラム311を記憶している。サーバレス化プログラム311は、フローエディタ環境600から受信したフローデータに基づき、所定の変換処理を実行する。
具体的には、サーバレス化プログラム311は、フローデータを受信すると、サーバレス化ルール700に基づき、当該フローデータから新たな実行指示の情報である登録情報を作成し、作成した登録情報を、ランタイム環境400又はサーバレス環境500のいずれかに送信する。サーバレス化ルール700の詳細は後述する。
サーバレス環境500は、1又は複数の情報処理装置を含んで構成される情報処理システム(例えば、クラウド)である。サーバレス環境500は、例えば、所定のサービス業者によって管理され、各ユーザ(フローエディタ環境600を利用するユーザ以外のユーザを含む)が利用可能なプログラムを提供している。
具体的には、サーバレス環境500は、サーバレス関数プログラム514と、サーバレス関数プログラム514を実行させるためのトリガプログラム513とを記憶している。
トリガプログラム513は、プログラム変換装置300から登録情報を受信したことを契機に実行される。トリガプログラム513は、例えば、サーバレス関数プログラム514の処理を、登録情報の受信後の所定のタイミングで(例えば、定期的に)実行させ、又は、登録情報の受信後の所定の契機(例えば、外部からのREST APIエンドポイント(URLや外部関数)へのアクセスのタイミング。以下、これらを総称してREST APIエンドポイントという。)に、サーバレス関数プログラム514を実行させる仕様を備えている。
プログラム開発システム1における各情報処理システムの間は、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、専用線等の有線又は無線の
ネットワーク5によって通信可能に接続される。
次に、プログラム実行支援システム1における各情報処理装置についてより詳細に説明する。
<プログラム変換装置>
図2は、プログラム変換装置300が備えるハードウェア及び機能の一例を説明する図である。
プログラム変換装置300は、ハードウェアとして、CPU等のプロセッサ320(演算装置)と、ソフトウェア及びデータ等が展開されるRAM(Random Access Memory)又はROM(Read Only Memory)等のメモリ310と、HDD(Hard Disk Drive)、SS
D(Solid State Drive)、又はフラッシュメモリ等のローカルストレージ340と、他
の情報処理装置と通信するための、ネットワークインターフェイスカード等のネットワークインタフェース330とを備え、これらはバス等で互いに接続されている。なお、プログラム変換装置300は、キーボード若しくはタッチパネル等の入力装置又は、モニタ若しくはディスプレイ等の出力装置を備えていてもよい(いずれも不図示)。
プログラム変換装置300は、サーバレス化プログラム311、及びサーバレス化ルール700を記憶している。
サーバレス化プログラム311は、フローデータ取得部3111、環境判定部3112、及び登録部3113を備える。
フローデータ取得部3111は、フローエディタ環境600からフローデータを受信する。すなわち、フローデータ取得部3111は、フローエディタ環境600から、実行対象の処理の情報(処理ブロック610)及びその処理の属性の情報(プロパティ)を取得する。
具体的な処理手順としては、まず、フローエディタ環境600が、ユーザから、実行対象の処理(処理ブロック610)及び当該処理のプロパティの入力を受け付け、受け付けた入力内容を所定の画面を表示する。そして、プログラム変換装置300のフローデータ取得部3111が、フローエディタ環境600に表示された画面に基づき、処理ブロック610の処理の情報及び当該処理のプロパティの情報を取得する。
次に、環境判定部3112は、所定の処理とその所定の処理を実行する環境との間の関係を規定したサーバレス化ルール700と、フローデータ取得部3111が取得した処理ブロック610のプロパティとに基づき、処理ブロック610を実行する環境を決定する。
例えば、環境判定部3112は、処理ブロック610のプロパティとしての、その処理ブロック610の処理の開始に必要なアクセス場所(REST API等のエンドポイント)の情報と、サーバレス化ルール700とに基づき、その処理ブロック610を実行する環境を決定する。
また、例えば、環境判定部3112は、処理ブロック610のプロパティとしての、その処理ブロック610がアクセスするリソースの場所の情報と、サーバレス化ルール700とに基づき、その処理ブロック610を実行する環境を決定する。
具体的には、例えば、環境判定部3112は、処理ブロック610のプロパティとしての、その処理ブロック610がアクセスするデータの書き込み先又は読み込み先の情報と、サーバレス化ルール700とに基づき、その処理ブロック610を実行する環境を決定する。
また、具体的には、例えば、環境判定部3112は、処理ブロック610のプロパティとしての、その処理ブロック610が実行させるプログラムの記憶場所の情報と、サーバレス化ルール700とに基づき、その処理ブロック610を実行する環境を決定する。
さらに、環境判定部3112は、処理ブロック610のプロパティとしてのリソース効率と、サーバレス化ルール700とに基づき、その処理ブロック610を実行する環境を決定する。
なお、サーバレス化ルール700は、処理ブロック610と、処理ブロック610の属性としての、当該処理ブロック610の処理の開始に必要なアクセス場所(REST API等のエンドポイント)と、当該アクセス場所に対応づけられた、処理ブロック610を実行する環境との間の関係を規定している。
また、サーバレス化ルール700は、処理ブロック610と、処理ブロック610の属性としての、処理ブロック610がアクセスするリソースの場所と、当該リソースの場所に対応づけられた、処理ブロック610を実行する環境との間の関係を規定している。
なお、サーバレス化ルール700は、処理ブロック610がアクセスするリソースの場所として、処理ブロック610が書き込みデータの書き込み先又は処理ブロック610が読み込むデータの読み込み先を記憶している。
また、サーバレス化ルール700は、処理ブロック610がアクセスするリソースの場所として、処理ブロック610が実行させるプログラムの記憶場所を記憶している。
さらに、サーバレス化ルール700は、処理ブロック610と、処理ブロック610の属性としての、処理ブロック610のリソース効率と、当該リソース効率に対応づけられた、処理ブロック610を実行する環境との間の関係を規定している。
登録部3113は、環境判定部3112が決定した環境に、当該環境にて処理ブロック610を実現するプログラムを実行させるための情報(登録情報)を送信する。
例えば、登録部3113は、プログラムを実行させるための情報として、環境判定部3112が決定した環境に対応づけられた、当該プログラムに関する情報(後述するプログラム環境定義521における情報)が含まれる情報を送信する。
<ランタイム環境>
図3は、ランタイム環境400が備えるハードウェア及び機能の一例を説明する図である。
ランタイム環境400は、ハードウェアとして、CPU等のプロセッサ420(演算装置)と、ソフトウェア及びデータ等が展開されるRAM(Random Access Memory)又はROM(Read Only Memory)等のメモリ410と、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又はフラッシュメモリ等のローカルストレージ440と、他の情報処理装置と通信するための、ネットワークインターフェイスカード等のネットワークインタフェース430とを備え、これらはバス等で互いに接続されている。なお、ランタイム環境400は、キーボード若しくはタッチパネル等の入力装置又は、モニタ若しくはディスプレイ等の出力装置を備えていてもよい(いずれも不図示)。
ランタイム環境400は、ランタイムプログラム411及びランタイム側処理ブロックプログラム412を記憶している。
ランタイムプログラム411は、プログラム変換装置300からフローデータを受信し、受信したフローデータに指定されている各ランタイム側処理ブロックプログラム412を、受信したフローデータの順序情報が示す順序で実行する。この際、ランタイムプログラム411は、ランタイム側処理ブロックプログラム412を、受信したフローデータのプロパティ情報が示すプロパティに従って実行する。
ランタイム側処理ブロックプログラム412は、処理ブロック610に対応するプログラムであり、具体的には、例えば、プログラムのソースコードである。ランタイム側処理ブロックプログラム412は、各処理ブロック610に対応するように、1又は複数設けられる。
なお、ランタイム側処理ブロックプログラム412は、ローカルストレージ440に記憶されているデータを読み込み、また、ローカルストレージ440に、所定のデータを書き込む場合がある。
<サーバレス環境>
図4は、サーバレス環境500が備えるハードウェア及び機能の一例を説明する図である。サーバレス環境500は、登録されたサーバレス関数を実行する環境である。また、サーバレス環境500には、サーバレス関数を実行するタイミングを定義することができる。
サーバレス環境500は、ハードウェアとして、CPU等のプロセッサ520(演算装置)と、ソフトウェア及びデータ等が展開されるRAM(Random Access Memory)又はROM(Read Only Memory)等のメモリ510と、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又はフラッシュメモリ等のローカルストレージ540と、他の情報処理装置と通信する、ネットワークインターフェイスカード等のネットワークインタフェース530とを備え、これらはバス等で互いに接続されている。なお、サーバレス環境500は、キーボード若しくはタッチパネル等の入力装置又は、モニタ若しくはディスプレイ等の出力装置を備えていてもよい。
また、サーバレス環境500は、サーバレスプログラム511、トリガプログラム513、及びサーバレス関数プログラム514の各プログラムと、サーバレス環境定義512とを記憶している。
サーバレスプログラム511は、トリガプログラム513及びサーバレス関数プログラ
ム514を実行する。この際、サーバレスプログラム511は、トリガプログラム513及びサーバレス関数プログラム514の実行に必要なプロセッサ520、メモリ510、又はローカルストレージ540等のリソースを、これらのプログラムに割り当てる。
サーバレス環境定義512は、トリガプログラム513の種類、サーバレス関数プログラム514を起動するエンドポイント、及び、サーバレス関数プログラム514の関数の仕様等を記憶している。サーバレス環境定義512の内容は、サーバレス環境500によって異なる。
トリガプログラム513は、指定されたタイミングにて、サーバレス関数プログラム514を実行する。例えば、トリガプログラム513は、定期実行する旨の情報を受信すると、サーバレス関数プログラム514を定期的に実行する。また、例えば、トリガプログラム513は、所定のアクセス先を示す情報(例えば、REST APIのエンドポイント)が示すアクセス先にアクセスがあったことを検知した際に、サーバレス関数プログラム514を実行する。
サーバレス関数プログラム514は、サーバレス関数の本体となるプログラムであり、ランタイム側処理ブロックプログラム412に対応するプログラム(例えば、ソースコード)である。例えば、サーバレス関数プログラム514は、ランタイム側処理ブロックプログラム412の機能を内包するプログラムである。また、例えば、サーバレス関数プログラム514は、複数のランタイム側処理ブロックプログラム412を所定の順序で実行するプログラムである。サーバレス関数プログラム514は、サーバレス環境定義512が示す仕様(条件)に従って実行される。
<フローエディタ環境>
図5は、フローエディタ環境600が備えるハードウェア及び機能の一例を示す図である。フローエディタ環境600は、ハードウェアとして、CPU等のプロセッサ620(演算装置)、ソフトウェア及びデータ等が展開されるRAM(Random Access Memory)又はROM(Read Only Memory)等のメモリ610と、HDD(Hard Disk Drive)、SS
D(Solid State Drive)、又はフラッシュメモリ等のローカルストレージ640と、他
の情報処理装置と通信する、ネットワークインターフェイスカード等のネットワークインタフェース630と、キーボード若しくはタッチパネル等の入力装置650と、モニタ若しくはディスプレイ等の出力装置660とを備え、これらはバス等で互いに接続されている。
フローエディタ環境600は、フローエディタプログラム611及びフローエディタ側処理ブロックプログラム612を記憶している。
フローエディタプログラム611は、各処理ブロック610の編集を行う。例えば、フローエディタプログラム611は、ユーザからの入力を受け付けることで、各処理ブロック610を設定すると共に、これらの間の順序を設定する。また、フローエディタプログラム611は、ユーザからの入力を受け付けることで、各処理ブロック610のプロパティを設定する。
フローエディタ側処理ブロックプログラム612は、フローエディタプログラム611に対応した編集画面を表示する。例えば、フローエディタ側処理ブロックプログラム612は、フローエディタプログラム611を介して、各処理ブロック610の編集の内容(処理ブロック610間の接続関係、プロパティの内容等)を表示する。
なお、フローエディタ側処理ブロックプログラム612は、フローエディタプログラム
611に読み込まれるようにされていてもよい。この場合、例えば、ランタイム環境400のランタイム側処理ブロックプログラム412等の外部のプログラムが、フローエディタプログラム611を呼び出すようにしてもよい。
次に、プログラム変換装置300が記憶しているサーバレス化ルール700について説明する。
<サーバレス化ルール>
図6は、サーバレス化ルール700の一例を示す図である。サーバレス化ルール700は、処理ブロック610の種類を特定する情報である対象処理ブロック711と、対象処理ブロック711に係る処理ブロック610に設定されたプロパティの情報であるプロパティ設定712と、対象処理ブロック711に係る処理ブロック610にプロパティ設定712に係るプロパティが設定されている場合における、当該処理ブロック610に係る処理の実行先(実行環境)の情報である実行環境713と含む各項目の情報を有する、少なくとも1以上のレコードを備えるデータベースである。
対象処理ブロック711には、例えば、処理ブロック610を表す文字列等が設定される。
例えば、injectは、複数の処理ブロック610のうち先頭の処理ブロック610として設けられ、一連のフローを開始させる処理ブロック610として設けられる。injectのプロパティには、injectに係る処理ブロック610の次の処理ブロック610に係る関数を実行するタイミングの情報が設定される。このタイミングには、例えば、ユーザから所定の入力があったタイミング、又は、予め指定された時間間隔又は時刻によるタイミング(定期実行)がある。
http-inは、injectと同様、複数の処理ブロック610のうち先頭の処理ブロック61
0として設けられ、一連のフローを開始させる処理ブロック610として設けられる。http-inは、REST APIのエンドポイントを利用した処理ブロック610である。http-inに係る関数の実行により、HTTP又はHTTPS等のプロトコルに従って通信可能な情報処理装置(
サーバ)に新たにURLが割り当てられ(プロパティで指定)、このURLに外部からアクセスがあると、http-inの次の処理ブロック610に係る関数が実行される。例えば、スマー
トフォンアプリケーションがバックエンドサーバのデータベースを参照する場合に、http-in及びデータベース処理ブロックを組み合わせることで、REST APIを作成することがで
きる。
なお、injectも同様に、REST APIのエンドポイントを利用することができる。injectに、処理を開始する所定のプロパティが設定されている場合は、REST APIのエンドポイントを作成する。これにより、ユーザインタフェースを用いた処理開始のトリガを発行することができる。
次に、対象処理ブロック711には、ランタイム環境400及びサーバレス環境500に依存しない処理を行うための処理ブロック610が設定可能である(template, sort, csv, xml, yaml)。
このうちtemplateは、指定された情報を処理する。templateは、前の処理ブロック610から所定の処理開始指示のデータを受け取ると、プロパティに設定された情報(例えば、文章の情報)を後続の処理ブロック610に引き渡す。sortは、前の処理ブロック610から配列データを受け取ると、プロパティに設定された条件に従って配列データにおける各データをソートし、ソート後の配列データを後続の処理ブロック610に引き渡す。
csv、xml、及びyamlは、前の処理ブロック610から受け取ったデータをそれぞれCSV形
式、XML形式、及びYAML形式のデータに変換し、変換したデータを、後続の処理ブロック
610に引き渡す。
また、対象処理ブロック711には、ランタイム環境400のローカルストレージ440に対するデータの読み書きを伴う可能性がある処理ブロック610が設定可能である(function, switch, change)。
function、switch、及びchangeの各プロパティには、プログラムのソースコード等が設定される。function、switch、及びchangeは、それぞれ、プロパティに設定されている各処理を実行し、プロパティに設定されている条件分岐処理を実行し、及び、プロパティに設定されているデータの代入処理又は変換処理を実行する。
また、対象処理ブロック711には、サーバレス環境500のリソースを特に消費する処理ブロック610が設定可能である(delay)。
delayは、前の処理ブロック610から所定のデータを受け取った際に開始され、プロ
パティに設定された期間停止した後、後続の処理ブロック610にそのデータを引き渡す。
また、対象処理ブロック711には、ランタイム環境400に固有な関数(プログラム)を実行させる処理ブロック610が設定可能である(exec)。execは、プロパティに設定されているコマンドを実行する。このコマンドは、実行環境(OS等)に依存する場合がある。
また、対象処理ブロック711には、ランタイム環境400のファイルシステムにアクセスする処理ブロック610が設定可能である(file, tail)。
fileは、プロパティに設定されている、ファイルシステム上のファイルの内容を読み込み、又はそのファイルシステムにファイルを作成する。tailは、ファイルシステム上のファイルの末尾のデータを読み取る。
次に、プロパティ設定712には、例えば、「定期実行」、「REST APIエンドポイント利用」、「ローカルストレージ書き込みも読み込みもなし」、「ローカルストレージ書き込み又は読み込みあり」、「処理時間大の設定」、「処理時間小の設定」、「環境依存コマンド実行」等の情報が設定される。これらの詳細は、後述する。
次に、実行環境713には、例えば、「定期実行トリガ」、「REST APIトリガ」、「サーバレス関数」、又は「ランタイム」等の情報が設定される。
実行環境713が「定期実行トリガ」の場合は、対象処理ブロック711に係る、サーバレス環境500のトリガプログラム513が実行環境として設定される。この場合、トリガプログラム513は、対象処理ブロック711の後続の処理ブロック610を定期的に呼び出す処理を行うサーバレス関数プログラム514を呼び出す。
実行環境713が「REST APIトリガ」の場合は、対象処理ブロック711に係る、サーバレス環境500のトリガプログラム513が実行環境として設定される。この場合、トリガプログラム513は、REST APIのエンドポイントに外部からアクセスがあった際に対象処理ブロック711の後続の処理ブロック610を呼び出す処理を行うサーバレス関数プログラム514を呼び出す。
実行環境713が「サーバレス関数」の場合は、対象処理ブロック711に係る、サーバレス環境500のサーバレス関数プログラム514が実行環境として設定される。この場合、サーバレス関数プログラム514は、ランタイム側処理ブロックプログラム412を、対象処理ブロック711に係るプロパティにて実行させる。また、対象処理ブロック711の後続の処理ブロック610がある場合は、その処理ブロック610に係るサーバレス関数プログラム514を実行させるためのサーバレス関数プログラム514が実行される。
実行環境713が「ランタイム」の場合は、対象処理ブロック711に係る、ランタイム環境400のランタイム側処理ブロックプログラム412が実行環境として設定される。この場合において、対象処理ブロック711の後続の処理ブロック610がある場合には、その処理ブロック610に係るランタイム側処理ブロックプログラム412を実行させるための所定のプログラム(ランタイム環境400に記憶されているプログラム)が実行される。
以上に説明した、プログラム実行支援システム1における各情報処理装置の各機能は、専用ハードウェアにより、又は、プロセッサ320、420、520、620がメモリ320、420、520、620又はローカルストレージ340、440、540、640に記憶されているプログラムを読み出して実行することにより実現される。また、各プログラムは、各情報処理装置が読み取り可能な記録媒体にあらかじめ記録されていてもよいし、記憶媒体又は所定の通信ネットワークを介して、必要なときに導入されてもよい。
<サーバレス化処理>
次に、プログラム実行支援システム1における処理について説明する。
プログラム変換装置300は、フローエディタ環境600により作成された処理ブロック610のフローに対応した処理を実行させるべく、サーバレス環境500又はランタイム環境400に、それぞれの環境に適したプログラムの実行を指示するサーバレス化処理を実行する。
図7は、サーバレス化処理の一例を説明するフローチャートである。サーバレス化処理は、例えば、プログラム変換装置300が、フローエディタ環境600からフローデータを受信したことを契機に開始される。
まず、プログラム変換装置300のフローデータ取得部3111は、サーバレス環境500から、サーバレス環境定義512を受信する(s801)。また、フローデータ取得部3111は、サーバレス化ルール700を読み込む(s802)。
フローデータ取得部3111は、受信したフローデータをメモリ310上に展開することにより、各処理ブロック610の種類(ブロック特定情報)、各処理ブロック610のプロパティ(プロパティ情報)、及び、各処理ブロック610の処理順序(順序情報)を取得する(s803)。
環境判定部3112は、s803で取得した処理ブロック610のうち最初の処理ブロック610を選択する(s804)。
環境判定部3112は、現在選択中の処理ブロック610(以下、選択ブロックという)のレコードを、サーバレス化ルール700から検索する(s805)。
具体的には、例えば、環境判定部3112は、対象処理ブロック711に選択ブロックの情報が設定されているレコードをサーバレス化ルール700から全て取得する。
選択ブロックをサーバレス化ルール700から検索できた場合は(s804:YES)、環境判定部3112は、次述するs806の処理を実行し、選択ブロックをサーバレス化ルール700から検索できなかった場合は(s804:NO)、選択ブロックはサーバレス化できないことから、環境判定部3112は、ランタイム環境400を利用すべく、次述するs808の処理を実行する。
s806において環境判定部3112は、選択ブロックのプロパティを解析しつつ選択ブロックに関するプロパティをサーバレス化ルール700から検索する。
具体的には、例えば、環境判定部3112は、s805で検索したレコードのうち、プロパティ設定712に選択ブロックのプロパティ情報が設定されているレコードを検索する。
環境判定部3112が選択ブロックに関するプロパティを検索できた場合は(s806:YES)、登録部3113は、後述するs807の処理を実行し、環境判定部3112が選択ブロックに関するプロパティを検索できなかった場合は(s806:NO)、選択ブロックはサーバレス化できないため、登録部3113は、後述するs808の処理を実行する。
s807において登録部3113は、選択ブロックの処理をサーバレス環境500又はランタイム環境400で実行させるための情報(登録情報)を作成し、作成した登録情報を、サーバレス環境500又はランタイム環境400に送信する。
具体的には、例えば、登録部3113は、s806で検索したレコードの実行環境713が示す環境にて選択ブロックに係る処理を実行するように指示する登録情報を、当該環境に送信する。
例えば、この実行環境がランタイム環境400である場合、登録部3113は、選択ブロックの処理に対応するランタイム側処理ブロックプログラム412をランタイム環境400にて実行させる旨の登録情報を作成する(例えば、当該ランタイム側処理ブロックプログラム412を登録情報として作成する)。また、登録部3113は、s803で取得した順序情報を登録情報に含める。
なお、選択ブロックに後続の処理ブロック610が存在する場合は、登録部3113は、その処理ブロック610に係るランタイム側処理ブロックプログラム412を実行させる旨の情報を登録情報に含める。
他方、実行環境がサーバレス環境500である場合、登録部3113は、選択ブロックの処理に対応するランタイム側処理ブロックプログラム412を実行させる旨の登録情報を、s802で取得したサーバレス環境定義512に基づく所定の変換を行った上で、作成する(例えば、当該ランタイム側処理ブロックプログラム412をサーバレス環境定義512の情報に基づき変換したプログラムを登録情報に含める)。また、登録部3113は、s803で取得した順序情報を、サーバレス環境500に対応したデータ形式に変換した上で登録情報に含める。
なお、選択ブロックの処理がREST API等のエンドポイントを用いる場合、登録部3113は、例えば、ランタイム側処理ブロックプログラム412を、REST API等のエンドポイ
ント経由で呼び出される仕様のサーバレス関数プログラム514に変換してこれを登録情報とすべく、ランタイム側処理ブロックプログラム412をサーバレス環境定義512に基づき所定のデータでラップし、ラップしたプログラム(サーバレス関数プログラム514)を登録情報とする。これは、サーバレス関数プログラム514は通常、サーバレス環境500の仕様のため、REST API等のエンドポイント経由で呼び出される必要があるためである。
さらにこの場合、登録部3113は、s803で取得した順序情報を、サーバレス環境定義512が定める方式の順序情報に変換し、変換した順序情報を登録情報に含める。これにより、フローデータが示す順序でサーバレス関数プログラム514を正しく実行することができる。
以上のs807の処理の終了の後は、s809の処理が実行される。
他方、s808において登録部3113は、選択ブロックに対応する処理をランタイム環境400で実行させるための登録情報を作成し、作成した登録情報をランタイム環境400に送信する。
具体的には、例えば、登録部3113は、s807と同様に、選択ブロックに係るランタイム側処理ブロックプログラム412をランタイム環境400にて実行させる旨の登録情報を作成する。
この場合、登録部3113は、選択ブロックに係るランタイム側処理ブロックプログラム412を呼び出すための、REST API等のエンドポイントの情報を登録情報に含める。その後は、s809の処理が実行される。
s809において登録部3113は、現在の選択ブロックが、フローデータが示す最後の処理ブロック610であるか否かを判定する。
現在の選択ブロックが最後の処理ブロック610である場合は(s809:YES)、登録部3113は、処理を終了する(s810)。
他方、現在の選択ブロックが最後の処理ブロック610でない場合は(s809:NO)、登録部3113は、現在の選択ブロックを次の処理ブロック610に設定した上で、s805以降の処理を繰り返す。
ここで、サーバレス化処理の具体例を、選択ブロックの種類ごとに説明する。
<inject-定期実行>
選択ブロックがinjectである場合、環境判定部3112は、選択ブロックのプロパティの内容を解析する(s806)。
選択ブロックのプロパティに定期実行の旨の情報が設定されている場合(s806:YES)、登録部3113は、サーバレス化ルール700のレコード721(「定期実行トリガ」)に基づき、サーバレス環境500のトリガプログラム513を実行環境とする登録情報を作成し、作成した登録情報を、サーバレス環境500に送信する(s807)。
この登録情報は、例えば、サーバレス環境500のトリガプログラム513に対して、選択ブロックのプロパティが示す定期実行のタイミングにて、injectに対応するサーバレス関数プログラム514の実行を指示することを含む。これにより、injectに対応する処
理をサーバレス環境500で動作させることができるようになる。
なお、サーバレスプログラム511が、選択ブロックが示すタイミング(定期実行)に対応していない場合(s806:NO)、このinject処理はサーバレス環境500で実行できないので、登録部3113は、s808の処理を実行する(injectに係るランタイム側処理プロックプログラム412を実行させる旨の登録情報をランタイム環境400に送信する)。
<inject, http-in-エンドポイント利用>
選択ブロックがinject又はhttp-inである場合、環境判定部3112は、選択ブロック
のプロパティの内容を解析する(s806)。
選択ブロックのプロパティに、REST APIエンドポイントを利用する旨の情報が設定されていると判定した場合(s806:YES)、登録部3113は、サーバレス化ルール700のレコード722(「REST APIトリガ」)に基づき、サーバレス環境500のトリガプログラム513を実行環境とする登録情報を作成し、作成した登録情報をサーバレス環境500に送信する(s807)。
この登録情報は、例えば、サーバレス環境500のトリガプログラム513に対して、REST APIのエンドポイントを作成することを指示することを含む。また、この登録情報は、選択ブロック(inject又はhttp-in)に係るランタイム側処理プロックプログラム41
2を選択ブロックのプロパティが示す条件にて実行するサーバレス関数プログラム514を、サーバレス環境500にて実行させることを含む(例えば、ランタイム側処理ブロックプログラム412に対応したサーバレス関数プログラム514をサーバレス環境500に登録する)。これにより、REST APIのエンドポイントとなる処理ブロック610をサーバレス環境500で実行させることができる。
なお、選択ブロックであるinject又はhttp-inのプロパティが、サーバレス環境500
が対応していない通信方法を指定している場合は、登録部3113は、登録情報をランタイム環境400に送信するようにしてもよい。例えば、http-inのプロパティに、HTTP又
はHTTPSによる通信においてDELETEメソッドを使う旨が設定されているが、サーバレス環
境500のトリガプログラム513がGETメソッド及びPOSTメソッドしか対応していない
場合は、登録部3113は、ランタイム側処理プロックプログラム412に係る登録情報を、ランタイム環境400に登録する。これにより、正常にDELETEメソッドが実行される。
<template、sort、csv、xml、yaml>
選択ブロックがtemplate、sort、csv、xml、又はyamlである場合、登録部3113は、選択ブロックのプロパティに関わらず(s806:YES)、サーバレス化ルール700のレコード723(「サーバレス関数」)に基づき、サーバレス環境500のサーバレス関数プログラム514を実行環境とする登録情報を作成し、作成した登録情報をサーバレス環境500に送信する(s807)。
この登録情報は、選択ブロックに対応する、サーバレス環境500のサーバレス関数プログラム514を実行させることを含む(例えば、template等に係るランタイム側処理プロックプログラム412をサーバレス関数プログラム514としてサーバレス環境500に登録する)。これにより、template、sort、csv、xml、yamlに対応する処理をサーバレス環境500で動作させることができるようになる。このようにサーバレス環境500を実行環境とする理由は、この場合の選択ブロックは常にステートレスな処理(外部のストレージやメモリ上のデータを書き換えることがない処理)であるため、プロパティの内容
によらずサーバレス化することが適当であるからである。
<function>
選択ブロックがfunctionである場合、環境判定部3112は、選択ブロックのプロパティを解析することにより、そのプロパティが示す処理がローカルストレージ440内のデータの参照又はローカルストレージ440へのデータの書き込みを行っているか否かを判定する(s806)。
当該処理がデータの参照もデータの書き込みも行っていない場合、選択ブロックの処理はステートレスなため、登録部3113は、サーバレス化ルールのレコード724(「サーバレス関数」)に基づき、サーバレス環境500のサーバレス関数プログラム514を実行環境とする登録情報を作成し、作成した登録情報をサーバレス環境500に送信する(s807)。
この登録情報は、functionに係るランタイム側処理ブロックプログラム412に対応したサーバレス関数プログラム514を実行させることを含む(例えば、functionに係るランタイム側処理ブロックプログラム412をサーバレス関数プログラム514としてサーバレス環境500に登録する)。
他方、当該処理がデータの参照又はデータの書き込みを行っている場合、登録部3113は、サーバレス化ルール700のレコード725(「ランタイム」)に基づき、ランタイム環境400のランタイム側処理ブロックプログラム412を実行環境とする登録情報を作成し、作成した登録情報をランタイム環境400に送信する(s807)。
この登録情報は、functionに係るランタイム側処理ブロックプログラム412をランタイム環境400に実行させることを含む(例えば、functionに係るランタイム側処理ブロックプログラム412をランタイム環境400に登録する)。このようにランタイム環境400を実行環境とする理由は、選択ブロックのデータ処理と他の処理ブロック610の当該データに対する処理とが並列して動作し、当該データに関する処理結果に矛盾が生じる可能性があるためである。
<switch>
次に、選択ブロックがswitchである場合、環境判定部3112は、選択ブロックのプロパティを解析することにより、条件分岐を行う際にローカルストレージ440のデータを利用(参照又は書き込み)しているか否かを判定する(s806)。
当該処理がローカルストレージ440のデータを利用していない場合、選択ブロックの処理はステートレスであるため、登録部3113は、サーバレス化ルール700のレコード724(「サーバレス関数」)に基づき、サーバレス環境500のサーバレス関数プログラム514を実行環境とする登録情報を作成し、作成した登録情報をサーバレス環境500に送信する(s807)。
この登録情報は、switchに係るランタイム側処理ブロックプログラム412に対応したサーバレス関数プログラム514を実行させることを含む(例えば、switchに係るランタイム側処理ブロックプログラム412をサーバレス関数プログラム514としてサーバレス環境500に登録する)。
他方、当該処理がローカルストレージ440のデータを利用している場合、登録部3113は、サーバレス化ルール700のレコード725(「ランタイム」)に基づき、ランタイム環境400のランタイム側処理ブロックプログラム412を実行環境とする登録情
報を作成し、作成した登録情報をランタイム環境400に送信する(s807)。
この登録情報は、switchに係るランタイム側処理ブロックプログラム412の実行させることを含む(例えば、switchに係るランタイム側処理ブロックプログラム412をランタイム環境400に登録する)。このようにランタイム環境400を実行環境とする理由は、ローカルストレージ440のデータを利用している選択ブロックに係る処理と他の処理とが並列して動作していると、当該他の処理によるデータ処理が原因で、選択ブロックに係る処理による条件分岐の結果が異なってしまうことがあるため、ランタイム環境400を用いることで整合的な動作を保証するためである。
<change>
次に、選択ブロックがchangeの場合、環境判定部3112は、選択ブロックのプロパティを解析することにより、選択ブロックが代入処理又は置換処理においてデータをローカルストレージ440から読み込むか否か、及び、データをローカルストレージ440に書き込むか否かをそれぞれ判定する(s806)。
選択ブロックがローカルストレージ440からデータを読み込まず、かつローカルストレージ440にデータを書き込まない場合には、選択ブロックがステートレスであるため、登録部3113は、サーバレス化ルール700のレコード724(「サーバレス」)に基づき、サーバレス環境500のサーバレス関数プログラム514を実行環境とする登録情報を作成し、作成した登録情報をサーバレス環境500に送信する(s807)。
この登録情報は、changeに係るランタイム側処理ブロックプログラム412に対応するサーバレス関数プログラム514を実行させることを含む(例えば、changeに係るランタイム側処理ブロックプログラム412をサーバレス関数プログラム514としてサーバレス環境500に登録する)。
他方、選択ブロックがローカルストレージ440からデータを読み込むか又は、ローカルストレージ440にデータを書き込む場合(s806:YES)、登録部3113は、サーバレス化ルール700のレコード725(「ランタイム」)に基づき、ランタイム環境400のランタイム側処理ブロックプログラム412を実行環境とする登録情報を作成し、作成した登録情報をランタイム環境400に送信する(s807)。
この登録情報は、changeに係るランタイム側処理ブロックプログラム412を実行させることを含む(例えば、changeに係るランタイム側処理ブロックプログラム412をランタイム環境400に登録する)。このようにランタイム環境400を実行環境とする理由は、この場合の選択ブロックの処理対象のデータが、他の処理が書き込んだデータに依存することがあるため、ランタイム環境400を用いることで整合的な動作を保証するためである。
<delay>
次に、選択ブロックがdelayである場合、環境判定部3112は、選択ブロックのプロ
パティを解析することにより、当該プロパティに、所定の時間以上停止する情報が設定されているか否かを判定する(s806)。
プロパティに所定の時間以上停止するための情報が設定されている場合は、登録部3113は、サーバレス化ルール700のレコード726(「ランタイム」)に基づき、ランタイム環境400のランタイム側処理ブロックプログラム412を実行環境とする登録情報を作成し、作成した登録情報をランタイム環境400に送信する(s807)。
この登録情報は、delayに係るランタイム側処理ブロックプログラム412を実行させ
ることを含む(例えば、delayに係るランタイム側処理ブロックプログラム412をラン
タイム環境400に登録する)。このようにランタイム環境400を実行環境とする理由は、サーバレス環境500は一般的に、処理を実行した時間の長さ及び使用リソース量の大きさによりユーザに課金されるシステムであるため、停止時間が長いと、サーバレス化してリソースの使用時間を削減するメリットが少ない(リソース効率が低下する)ためである。
他方、プロパティに所定の時間以上停止するための情報が設定されていない場合は、登録部3113は、サーバレス化ルール700のレコード727(「サーバレス関数」)に基づき、サーバレス環境500のサーバレス関数プログラム514を実行環境とする登録情報を作成し、作成した登録情報をサーバレス環境500に送信する(s807)。
この登録情報は、delayに係るランタイム側処理ブロックプログラム412に対応する
サーバレス関数プログラム514を実行させることを含む(例えば、delayに係るランタ
イム側処理ブロックプログラム412をサーバレス関数プログラム514としてサーバレス環境500に登録する)。このように、サーバレス環境500を実行環境とする理由は、停止時間が短いため、サーバレス化してもリソース効率に大きな影響がないためである。
<exec>
次に、選択ブロックがexecである場合、環境判定部3112は、選択ブロックのプロパティを解析し、そのプロパティに、サーバレス環境500が対応していない(実行できない)コマンドが含まれているか否かを判定する(s806)。
サーバレス環境500が対応していないコマンドが含まれている場合は、登録部3113は、サーバレス化ルール700のレコード728(「ランタイム」)に基づき、ランタイム環境400のランタイム側処理ブロックプログラム412を実行環境とする登録情報を作成し、作成した登録情報をランタイム環境400に送信する(s807)。
この登録情報は、execに係るランタイム側処理ブロックプログラム412を実行させることを含む(例えば、execに係るランタイム側処理ブロックプログラム412をランタイム環境400に登録する)。このようにランタイム環境400を実行環境とする理由は、サーバレス環境500がランタイム環境400と異なるOSで動作している場合(execの実行対象プログラムが環境に依存する場合)、サーバレス環境500では正しくコマンドを実行できない可能性があるためである。
他方、サーバレス環境500が対応していないコマンドがない場合は、登録部3113は、サーバレス環境500のサーバレス関数プログラム514を実行環境とする登録情報を作成し、作成した登録情報をサーバレス環境500に送信する(s807)。
この登録情報は、execに係るランタイム側処理ブロックプログラム412に対応するサーバレス関数プログラム514を実行させることを含む(例えば、execに係るランタイム側処理ブロックプログラム412をサーバレス関数プログラム514としてサーバレス環境500に登録する)
サーバレス環境500のサーバレスプログラム511に対して、execに対応するサーバレス関数プログラム514を実行することを指示する。
<file,tail>
次に、選択ブロックがfile又はtailである場合、登録部3113は、選択ブロックのプ
ロパティに関係なく(s806)、サーバレス化ルール700のレコード728、729(「ランタイム」)に基づき、ランタイム環境400のランタイム側処理ブロックプログラム412を実行環境とする登録情報を作成し、作成した登録情報をランタイム環境400に送信する(s807)。
この登録情報は、file又はtailに係るランタイム側処理ブロックプログラム412を実行させることを含む(例えば、file又はtailに係るランタイム側処理ブロックプログラム412をランタイム環境400に登録する)。このようにランタイム環境400を実行環境とする理由は、file又はtailに対応するランタイム側処理ブロックプログラム412がアクセスするファイルシステムは、他の処理が同時にアクセスする場合があるため(ステートフルであるため)である。
なお、登録部3113は、file又はtailに係るプロパティに、ランタイム環境400以外の所定の外部データベースのファイルにアクセスする旨の情報が設定されていると判定した場合には、ランタイム環境400ではなくサーバレス環境500のサーバレス関数プログラム514を実行環境とするようにしてもよい。この理由は、このような外部データベースにアクセスする場合は、当該外部データベースにおけるファイルの整合性が保証されるためである。
以上のように、本実施形態のプログラム実行支援装置によれば、プログラム変換装置300が、処理ブロック610及びそのプロパティを取得し、所定の処理とその処理を実行する環境(サーバレス環境500又はランタイム環境400)との間の関係を規定したサーバレス化ルール700と、前記取得したプロパティとに基づき、処理ブロック610を実現するプログラムを実行する環境を決定し、決定した環境に、その環境にてその処理ブロック610を実現するプログラムを実行させるための登録情報を送信するので、サーバレス化ルール700により、処理ブロック610に係る一連の処理を実現するプログラムを、適切な環境下にて実行させることができる。
このように、本実施形態のプログラム実行支援装置によれば、所望の処理を効率的に実行可能な環境下にて実行させることができる。
例えば、ランタイム環境400に対応したフローエディタ環境600により、処理ブロック610のフローを多数蓄積しており、これらをクラウド等のサーバレス環境500に移行したい場合に、ユーザは、蓄積済みの処理ブロック610に係るフローをサーバレス環境500用に適宜修正するといった煩雑な作業をすることなく、処理ブロック610のフローのうち適切な処理ブロック610をサーバレス環境に移行して実行させることができる。これにより、専用サーバによる処理を容易にサーバレス化することができる。また、これにより専用サーバのリソース使用量が効率化され、専用サーバによるスケーリングのメリットをより多く享受できるようになる。
以上、本発明を実施するための形態について具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
例えば、本実施形態で説明したサーバレス化ルール700等の各種のデータ形式は任意の形式でよく、データベースの形式に限られない。
また、ランタイム環境400又はサーバレス環境500は複数設けられていてもよい。この場合、サーバレス環境定義512は、サーバレス環境500に応じて異なる定義としてもよい。
また、サーバレス化ルール700は複数設けてもよく、例えば、サーバレス環境500におけるクラウドサービスの内容、コスト、情報処理装置の性能等の観点から異なる設定としてもよい。そして、プログラム変換装置300は、これらのサーバレス化ルール700を、ランタイム環境400又はサーバレス環境500に応じて切り替えができるようにしてもよい。
また、サーバレス化処理における登録情報の送信は、各処理ブロック610について逐次行ってもよいし、ネックワーク5の負荷削減のために、全ての処理ブロック610について実行環境を特定した上で、最後にまとめて行ってもよい。
また、本実施形態では、フローデータを生成するシステムとして、視覚的な設定が可能なフローエディタ環境600があることを前提としたが、フローデータを生成することができれば、フローエディタ環境600以外の他の環境を用いてもよい。
また、この場合、フローデータのフォーマットは、ランタイム環境400と必ずしも全て対応している必要はなく、ランタイム環境400が受信する登録情報がランタイム環境400に対応したものとなっていればよい。
以上の本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態のプログラム実行支援装置においては、前記所定のルールは、前記所定の処理と、当該所定の処理の属性としての、当該所定の処理の開始に必要なアクセス場所と、当該アクセス場所に対応づけられた、当該所定の処理を実行する環境との間の関係を規定しており、前記演算装置が、前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理の開始に必要なアクセス場所の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、としてもよい。
このように、プログラム変換装置300が、処理の開始に必要なアクセス場所の情報(例えば、REST API等のエンドポイント)に関するサーバレス化ルール700を利用することで、トリガに基づく実行対象の処理(例えば、inject, http-in)を適切な環境下で実
行させることができる。
また、本実施形態のプログラム実行支援装置においては、前記所定のルールは、前記所定の処理と、当該所定の処理の属性としての、当該所定の処理がアクセスするリソースの場所と、当該リソースの場所に対応づけられた、当該所定の処理を実行する環境との間の関係を規定しており、前記演算装置が、前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理がアクセスするリソースの場所の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、としてもよい。
このように、プログラム変換装置300が、環境に特に依存しやすい因子である、アクセス先のリソースの場所に関するサーバレス化ルール700を利用することで、実行対象の処理をいずれの環境で実行した場合であっても、リソース効率を妨げることなく適切な環境にて処理を実行させることができる。
また、本実施形態のプログラム実行支援装置においては、前記所定のルールは、前記所定の処理がアクセスするリソースの場所として、当該所定の処理が書き込むデータの書き込み先又は当該所定の処理が読み込むデータの読み込み先を記憶しており、前記演算装置が、前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理における前記データの書き込み先又は前記データの読み込み先の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、としてもよい。
このように、プログラム変換装置300が、環境に特に依存しやすい因子である、データ書き込み先又はデータ読み込み先に関するサーバレス化ルール700を利用することで、実行対象の処理(例えば、function, switch, change, file, tail)をいずれの環境で実行した場合であっても、これらのデータアクセスに関する処理を正しく実行させることができる。
また、本実施形態のプログラム実行支援装置においては、前記所定のルールは、前記所定の処理がアクセスするリソースの場所として、当該所定の処理が実行させるプログラムの記憶場所を記憶しており、前記演算装置が、前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理が実行させるプログラムの記憶場所の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、としてもよい。
このように、プログラム変換装置300が、環境に特に依存しやすい因子である、実行先のプログラムの記憶場所に関するサーバレス化ルール700を利用することで、実行対象の処理(例えば、exec)をいずれの環境で実行した場合であっても、呼び出されるプログラムを正しく実行させることができる。
また、本実施形態のプログラム実行支援装置においては、前記所定のルールは、前記所定の処理と、当該所定の処理の属性としての、当該所定の処理のリソース効率と、当該リソース効率に対応づけられた、当該所定の処理を実行する環境との間の関係を規定しており、前記演算装置が、前記環境判定処理において、前記実行対象の処理の属性の情報としてのリソース効率と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、としてもよい。
このように、プログラム変換装置300が、処理のリソース効率とそのリソース効率に応じた環境に関するサーバレス化ルール700を利用することで、実行対象の処理(例えば、template, sort, csv, xml, yaml, delay)を、リソース効率を最適化できるような
環境にて実行させることができる。
また、本実施形態のプログラム実行支援装置においては、前記演算装置が、前記登録処理において、前記プログラムを実行させるための情報として、前記決定した環境に対応づけられた、当該プログラムに関する情報が含まれる情報を送信する、としてもよい。
このようにすることで、例えば、プログラム変換装置300が、サーバレス環境定義521を利用して登録情報を送信することで、ランタイム環境400と異なる仕様を有するサーバレス環境500においても、実行対象の処理を確実に実行させることができる。
また、本実施形態のプログラム実行支援装置においては、前記演算装置が、前記フローデータ取得処理において、ユーザから、実行する処理及び当該処理の属性の入力を受け付け、受け付けた入力内容を所定の画面を表示する編集処理を実行する所定の装置に表示された当該画面に基づき、前記実行対象の処理の情報及び当該処理の属性の情報を取得する、としてもよい。
このように、画面入力による処理の情報を設定するシステム(例えば、フローエディタ環境600)からのフローデータを用いることで、ユーザは、実行対象の一連の処理を視覚的に簡単に作成できるほか、作成し蓄積した一連の処理のうち適切な処理を、サーバレス環境500に移行させ実行させることができる。
これにより、フローエディタ環境600を用いて作成された多数のフローを、簡単にサ
ーバレス環境700に移行することができる。
900 プログラム実行支援システム、600 フローエディタ環境、400 ランタイム環境、610 処理ブロック、500 サーバレス環境、300 プログラム変換装置、700 サーバレス化ルール

Claims (8)

  1. 実行対象の処理の情報及び当該処理の属性の情報を取得するフローデータ取得処理と、
    所定の処理と当該所定の処理を実行する環境との間の関係を規定した所定のルールと、前記取得した属性の情報とに基づき、前記実行対象の処理を実行する環境を決定する環境判定処理と、
    前記決定した環境に、当該環境にて前記実行対象の処理を実現するプログラムを実行させるための情報を送信する登録処理と、
    を実行する演算装置を備え
    前記所定のルールは、前記所定の処理の属性としての、当該所定の処理がアクセスするリソースの場所が、前記所定の処理に対応するプログラムを予め記憶している所定のサーバから構成されるランタイム環境にのみ存在する場合に、当該所定の処理を実行する環境を前記ランタイム環境と規定し、当該所定の処理がアクセスするリソースの場所が、前記ランタイム環境と異なる環境であって、各ユーザが利用可能なプログラムを提供するサーバレス環境に存在する場合に、当該所定の処理を実行する環境を前記サーバレス環境と規定しており、
    前記演算装置が、
    前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理がアクセスするリソースの場所の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、
    プログラム実行支援装置。
  2. 前記所定のルールは、前記所定の処理と、当該所定の処理の属性としての、当該所定の処理の開始に必要なアクセス場所と、当該アクセス場所に対応づけられた、当該所定の処理を実行する環境との間の関係を規定しており、
    前記演算装置が、
    前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理の開始に必要なアクセス場所の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、
    請求項1に記載のプログラム実行支援装置。
  3. 前記所定のルールは、前記所定の処理がアクセスするリソースの場所として、当該所定の処理が書き込むデータの書き込み先又は当該所定の処理が読み込むデータの読み込み先を記憶しており、
    前記演算装置が、
    前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理における前記データの書き込み先又は前記データの読み込み先の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、
    請求項に記載のプログラム実行支援装置。
  4. 前記所定のルールは、前記所定の処理がアクセスするリソースの場所として、当該所定の処理が実行させるプログラムの記憶場所を記憶しており、
    前記演算装置が、
    前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理が実行させるプログラムの記憶場所の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、
    請求項に記載のプログラム実行支援装置。
  5. 前記所定のルールは、前記所定の処理と、当該所定の処理の属性としての、所定の時間以上停止するか否かの情報と、所定の時間以上停止するか否かの情報に対応づけられた、当該所定の処理を実行する環境との間の関係を規定しており、
    前記演算装置が、
    前記環境判定処理において、前記実行対象の処理の属性の情報として所定の時間以上停止する情報が設定されているか否かと、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、
    請求項1に記載のプログラム実行支援装置。
  6. 前記演算装置が、
    前記登録処理において、前記プログラムを実行させるための情報として、前記決定した環境に対応づけられた、当該プログラムに関する情報が含まれる情報を送信する、
    請求項1に記載のプログラム実行支援装置。
  7. 前記演算装置が、
    前記フローデータ取得処理において、ユーザから、実行対象の処理及び当該処理の属性の入力を受け付け、受け付けた入力内容を所定の画面を表示する編集処理を実行する所定の装置に表示された当該画面に基づき、前記実行対象の処理の情報及び当該処理の属性の情報を取得する、
    請求項1に記載のプログラム実行支援装置。
  8. 情報処理装置が、
    実行対象の処理の情報及び当該処理の属性の情報を取得するフローデータ取得処理と、
    所定の処理と当該所定の処理を実行する環境との間の関係を規定した所定のルールと、前記取得した属性の情報とに基づき、前記実行対象の処理を実行する環境を決定する環境判定処理と、
    前記決定した環境に、当該環境にて前記実行対象の処理を実現するプログラムを実行させるための情報を送信する登録処理と、
    を実行し、
    前記所定のルールは、前記所定の処理の属性としての、当該所定の処理がアクセスするリソースの場所が、前記所定の処理に対応するプログラムを予め記憶している所定のサーバから構成されるランタイム環境にのみ存在する場合に、当該所定の処理を実行する環境を前記ランタイム環境と規定し、当該所定の処理がアクセスするリソースの場所が、前記ランタイム環境と異なる環境であって、各ユーザが利用可能なプログラムを提供するサーバレス環境に存在する場合に、当該所定の処理を実行する環境を前記サーバレス環境と規定しており、
    前記環境判定処理において、前記実行対象の処理の属性としての、当該実行対象の処理がアクセスするリソースの場所の情報と、前記所定のルールとに基づき、前記実行対象の処理を実行する環境を決定する、
    プログラム実行支援方法。
JP2020062980A 2020-03-31 2020-03-31 プログラム実行支援装置、及びプログラム実行支援方法 Active JP7313309B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020062980A JP7313309B2 (ja) 2020-03-31 2020-03-31 プログラム実行支援装置、及びプログラム実行支援方法
US17/024,275 US20210303301A1 (en) 2020-03-31 2020-09-17 Program Execution Assistance Apparatus and Program Execution Assistance Method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020062980A JP7313309B2 (ja) 2020-03-31 2020-03-31 プログラム実行支援装置、及びプログラム実行支援方法

Publications (2)

Publication Number Publication Date
JP2021163092A JP2021163092A (ja) 2021-10-11
JP7313309B2 true JP7313309B2 (ja) 2023-07-24

Family

ID=77856097

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020062980A Active JP7313309B2 (ja) 2020-03-31 2020-03-31 プログラム実行支援装置、及びプログラム実行支援方法

Country Status (2)

Country Link
US (1) US20210303301A1 (ja)
JP (1) JP7313309B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015511032A (ja) 2011-09-23 2015-04-13 ラザ,アハマド ソフトウエアの開発方法及び装置
JP2018190261A (ja) 2017-05-10 2018-11-29 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
WO2019138570A1 (ja) 2018-01-15 2019-07-18 富士通株式会社 部分処理定義データのデータ構造、部分処理定義データ生成方法、および部分処理定義データ生成プログラム
US10417043B1 (en) 2017-07-06 2019-09-17 Binaris Inc Systems and methods for executing tasks adaptively
JP2020502676A (ja) 2016-12-14 2020-01-23 ピヴォタル・ソフトウェア・インコーポレーテッド 資格情報の分散型検証

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015511032A (ja) 2011-09-23 2015-04-13 ラザ,アハマド ソフトウエアの開発方法及び装置
JP2020502676A (ja) 2016-12-14 2020-01-23 ピヴォタル・ソフトウェア・インコーポレーテッド 資格情報の分散型検証
JP2018190261A (ja) 2017-05-10 2018-11-29 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
US10417043B1 (en) 2017-07-06 2019-09-17 Binaris Inc Systems and methods for executing tasks adaptively
WO2019138570A1 (ja) 2018-01-15 2019-07-18 富士通株式会社 部分処理定義データのデータ構造、部分処理定義データ生成方法、および部分処理定義データ生成プログラム

Also Published As

Publication number Publication date
JP2021163092A (ja) 2021-10-11
US20210303301A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
CN108304201B (zh) 对象更新方法、装置及设备
Burns et al. Kubernetes: up and running
US9928050B2 (en) Automatic recognition of web application
US10547682B2 (en) Dynamically scaling application components using microservices
JP5679989B2 (ja) デバッグパイプライン
CN111221521B (zh) 日志代码的生成方法、装置、计算机系统和可读存储介质
US20190196672A1 (en) Visual effects system for "big data" analysis workflow editors, distribution platforms, execution engines, and management systems comprising same
US20120166963A1 (en) Converting desktop applications to web applications
US10901804B2 (en) Apparatus and method to select services for executing a user program based on a code pattern included therein
Taura et al. Design and implementation of GXP make—A workflow system based on make
CN105765534A (zh) 虚拟计算系统和方法
JP2018536227A5 (ja)
JP6903755B2 (ja) データ統合ジョブ変換
Vivian et al. Rapid and efficient analysis of 20,000 RNA-seq samples with Toil
CN114675875A (zh) 一种共享组件发布方法、装置、设备及介质
US10165036B1 (en) Network resource remote process execution
JP7313309B2 (ja) プログラム実行支援装置、及びプログラム実行支援方法
US11307839B2 (en) Updating of container-based applications
Alnasir Fifteen quick tips for success with HPC, ie, responsibly BASHing that Linux cluster
CN112235132A (zh) 动态配置服务的方法、装置、介质以及服务器
CN114637499B (zh) 可视化组件处理方法、装置、设备及介质
JP2004362343A (ja) ソースコード変換装置、ソースコード変換方法、およびプログラム
JP6981124B2 (ja) システム構築支援装置、システム構築支援方法、及びプログラム
CN110780983A (zh) 任务异常处理方法、装置、计算机设备以及存储介质
Martínez et al. Implementing crossplatform distributed algorithms using standard web technologies

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220602

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230508

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230711

R150 Certificate of patent or registration of utility model

Ref document number: 7313309

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150