JP2022142986A - 課金プログラム、課金装置、及び課金方法 - Google Patents

課金プログラム、課金装置、及び課金方法 Download PDF

Info

Publication number
JP2022142986A
JP2022142986A JP2021043293A JP2021043293A JP2022142986A JP 2022142986 A JP2022142986 A JP 2022142986A JP 2021043293 A JP2021043293 A JP 2021043293A JP 2021043293 A JP2021043293 A JP 2021043293A JP 2022142986 A JP2022142986 A JP 2022142986A
Authority
JP
Japan
Prior art keywords
container
billing
amount
containers
application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021043293A
Other languages
English (en)
Inventor
晃大 牧野
Akihiro Makino
健祐 戸子田
Kensuke Tokoda
新吾 加藤
Shingo Kato
智弘 川崎
Toshihiro Kawasaki
隆夫 戸嶋
Takao Toshima
亮太 種田
Ryota Taneda
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021043293A priority Critical patent/JP2022142986A/ja
Publication of JP2022142986A publication Critical patent/JP2022142986A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】コンテナで実行されるアプリケーションプログラムに課金できるようにすること。【解決手段】コンテナに割り当てられたリソース量を示す通知をコンテナから受け付け、課金期間内に通知があった場合に、リソース量に応じた額を、コンテナが実行するアプリケーションプログラムの課金額として算出する処理をコンピュータに実行させるための課金プログラムによる。【選択図】図5

Description

本発明は、課金プログラム、課金装置、及び課金方法に関する。
コンピュータを仮想化する技術としてVM(Virtual Machine)仮想化技術とコンテナ仮想化技術が知られている。このうち、VM仮想化技術は、ホストOS(Operating System)の上でゲストOSを実行することにより仮想化を行う技術であり、ゲストOSを実行するためのオーバヘッドが大きい。
一方、コンテナ仮想化技術は、OSのカーネルの一部を利用して仮想化を行うため、VM仮想化技術と比較して仮想化のオーバヘッドが小さく軽量であるという利点がある。そのコンテナ仮想化技術においては、互いに独立した複数のユーザ空間が生成される。これらのユーザ空間はコンテナと呼ばれ、そのコンテナの各々においてアプリケーションプログラムが実行される。
コンテナを利用したサービスの一つに、コンテナ内で実行するアプリケーションプログラムに課金する課金サービスがある。課金サービスにおいては、アプリケーションプログラムの種類や課金期間の長さに応じた額の利用料金をコンテナの利用者に課金する。
しかしながら、コンテナは、セキュリティのために外部からアクセスするのが難しく、コンテナで実行しているアプリケーションプログラムに適切に課金するのが困難である。
特開2001-5877号公報 特開2000-113066号公報
一側面によれば、コンテナで実行されるアプリケーションプログラムに課金できるようにすることを目的とする。
一側面によれば、コンテナに割り当てられたリソース量を示す通知を前記コンテナから受け付け、課金期間内に前記通知があった場合に、前記リソース量に応じた額を、前記コンテナが実行するアプリケーションプログラムの課金額として算出する処理をコンピュータに実行させるための課金プログラムが提供される。
一側面によれば、コンテナで実行されるアプリケーションプログラムに課金できる。
図1は、VM仮想化技術を使用した場合のシステムの構成図である。 図2は、課金装置がアプリの課金額を算出する方法について示す模式図である。 図3は、コンテナ仮想化技術を採用した物理サーバの構成図である。 図4は、問題について示す模式図である。 図5は、本実施形態に係る課金方法の概略を示す模式図である。 図6は、コンテナ稼働情報の模式図である。 図7は、コンテナが課金装置に定期的にコンテナ稼働情報を通知するときの模式図(その1)である。 図8は、コンテナが課金装置に定期的にコンテナ稼働情報を通知するときの模式図(その2)である。 図9は、コンテナが課金装置に定期的にコンテナ稼働情報を通知するときの模式図(その3)である。 図10は、本実施形態における課金額の算出ロジックを説明するための物理サーバの模式図である。 図11は、図10のように各コンテナが起動している場合の各アプリの課金額の算出ロジックを示す模式図である。 図12は、本実施形態における課金額の算出ロジックの別の例を説明するための物理サーバの模式図である。 図13は、図12のように各コンテナが起動している場合の各アプリの課金額の算出ロジックを示す模式図である。 図14は、コンテナの機能構成図である。 図15は、課金装置の機能構成図である。 図16は、コンテナが実行する処理のフローチャートである。 図17は、課金装置が実行する処理のフローチャートである。 図18は、課金装置のハードウェア構成図である。 図19は、物理サーバのハードウェア構成図である。
本実施形態の説明に先立ち、本願発明者が検討した事項について説明する。
前述のように、コンピュータの仮想化技術としてはVM仮想化技術とコンテナ仮想化技術とがある。まず、VM仮想化技術におけるアプリケーションプログラムの課金方法について説明する。
図1は、VM仮想化技術を使用した場合のシステムの構成図である。図1に示すように、システム1は、インターネット等のネットワーク2を介して相互に接続された物理サーバ3と課金装置4とを有する。
このうち、物理サーバ3は、課金対象のアプリケーションプログラムを実行するコンピュータであって、メモリやCPU(Central Processing Unit)等のハードウェアリソース11を有する。そして、ハードウェアリソース11に含まれるメモリとCPU(Central Processing Unit)が協働してホストOS12を実行し、更にホストOS12の上でハードウェアリソース11が複数の仮想マシン13を実行する。
仮想マシン13は、ハードウェアリソース11の一部が割り当てられた仮想的なコンピュータであって、ゲストOS14を実行する。更に、各仮想マシン13は、ゲストOS14の上でアプリ15を実行する。各アプリ15は、課金対象のアプリケーションプログラムである。
一方、課金装置4は、アプリ15の課金額を算出するための物理サーバや仮想マシン等のコンピュータである。
図2は、課金装置4がアプリ15の課金額を算出する方法について示す模式図である。
図2に示すように、課金装置4は、仮想マシン13が起動しているかどうかを確認する確認通知7を仮想マシン13に定期的に通知する。課金装置4は、その確認通知7に対する応答8が仮想マシン13からあった場合には当該仮想マシン13が起動していると判断し、応答がなかった場合には当該仮想マシン13は停止していると判断する。
更に、課金装置4は、仮想マシン13が最初に起動していると判断したときから停止していると判断した期間を仮想マシン13の稼働期間Tとして特定する。この例では、稼働期間Tにおいてアプリ15も起動していたものとし、課金装置4は、稼働期間Tの長さに応じたアプリ15の課金額を算出する。
このように、VM仮想化技術を使用している場合には、課金装置4が仮想マシン13に対して確認通知7を通知することで稼働期間Tを特定することができ、その稼働期間Tに応じた課金額を算出できる。
しかしながら、この方法をコンテナ仮想化技術に適用すると以下のような問題がある。
図3は、コンテナ仮想化技術を採用した物理サーバ3の構成図である。なお、図3において、図1で説明したのと同じ要素には図1におけるのと同じ符号を付し、以下ではその説明を省略する。
図3に示すように、この例では、仮想マシン13の各々がゲストOS14の上でコンテナエンジン18を実行する。コンテナエンジン18は、コンテナを生成するためのDOCKER(登録商標)等のプログラムである。
コンテナの個数は特に限定されないが、この例では各仮想マシン13が全部でm個のコンテナ19を起動するものとし、各々のコンテナ19を「#1」、「#2」、…、「#m」等の文字列で識別する。各々のコンテナ19は、仮想マシン13のCPU等のリソースが割り当てられた一つのコンピュータである。また、各々のコンテナ19は課金対象のアプリ15を実行する。
なお、各々の仮想マシン13は全体として一つのクラスタコンピュータを実現する。以下では、一つのクラスタコンピュータのことを単にクラスタと呼ぶ。
更に、クラスタに属する複数の仮想マシン13のうちの一つは、m個のコンテナ19を管理するためのコンテナ管理プログラム20を実行する。コンテナ管理プログラム20は、コンテナオーケストレーションプログラムとも呼ばれ、例えばKubernetes(登録商標)やOpenShift(登録商標)等がその一例である。
このようにコンテナ19が実行しているアプリ15の課金額を課金装置4が算出するには、図2の例に倣ってコンテナ19が起動しているかどうかの確認通知7を課金装置4が各コンテナ19に通知すればよいと考えられる。
しかし、課金装置4は、コンテナ管理プログラム20を介さないと各コンテナ19にアクセスできず、しかもコンテナ19への不正アクセスを防止するためにコンテナ管理プログラム20はコンテナ19のIPアドレスを公開していない。そのため、課金装置4が各コンテナ19に確認通知7を通知して課金額を算出することはできない。
更に、コンテナ19が実行するアプリ15の課金額を算出しようとする場合、以下のような問題も生じる。
図4は、その問題について示す模式図である。図4の例では、アプリ15を実行している「#1」のコンテナ19が最初に起動しており、それが何等かの不具合によって停止した場合を想定している。この場合にはコンテナ管理プログラム20が「#2」のコンテナ19を起動し、その「#2」のコンテナ19がアプリ15を実行する。更に、「#2」のコンテナ19が何等かの不具合によって停止すると、コンテナ管理プログラム20が「#3」のコンテナ19を起動し、その「#3」のコンテナ19がアプリ15を実行する。
また、この例では、同時に起動しているコンテナ19の個数に応じてアプリ15の課金額を設定するものとする。例えば、同時に起動しているコンテナ19の個数が2個の場合は、1個のコンテナ19のみが起動している場合の2倍の課金額とする。
このように課金額を設定する場合、課金装置4は、同時に起動しているコンテナ19の個数を正確に特定する必要がある。しかしながら、前述のように課金装置4からコンテナ19に確認通知7を通知することができないため、コンテナ19は同時に稼働しているコンテナ19の個数を特定することができない。更に、コンテナ19は頻繁に起動と停止を繰り返すことがあるので、同時に起動しているコンテナ19の個数を常に把握し続けるのは難しい。その結果、実際には1個のコンテナ19しか起動していないにも関わらず、課金装置4が誤って2個のコンテナ19が起動していると判断してしまい。本来の2倍の課金額を算出するおそれがある。
また、このように同時に起動しているコンテナ19の個数に応じてアプリ15の課金額を設定する方法では、コンテナ19の個数が大量に増大した場合に課金額が急激に増えるため、アプリ15の利用者が納得するような課金額とならない。以下、本実施形態について説明する。
(本実施形態)
図5は、本実施形態に係る課金方法の概略を示す模式図である。なお、図5において、図1~図4で説明したのと同じ要素にはこれらの図におけるのと同じ符号を付し、以下ではその説明を省略する。
まず、コンテナ19の利用者によって、課金装置4から仮想マシン13にモジュールプログラム32がダウンロードされる(ステップS1)。モジュールプログラム32は、コンテナ19を起動するためのDockerfile等の定義ファイルを含むプログラムである。
次に、コンテナの利用者によって、モジュールプログラム32を内包するコンテナ19のイメージファイル33が作成される(ステップS2)。
次いで、コンテナの利用者によって、イメージファイル33を利用してコンテナ19が起動される(ステップS3)。前述のモジュールプログラム32にはアプリ15とソフト管理デーモン34とが同梱されているため、コンテナ19の内部でアプリ15とソフト管理デーモン34とを実行することができる。なお、ソフト管理デーモン34は、課金装置4がアプリ15の課金額を算出できるようにするための常駐プログラムである。
次に、ソフト管理デーモン34が、課金装置4に対して定期的にコンテナ稼働情報35の通知を行う(ステップS4)。
図6は、コンテナ稼働情報35の模式図である。図6に示すように、コンテナ稼働情報35は、バージョン情報35a、契約情報35b、管理情報35c、及びメータリング情報35dを含む。
このうち、バージョン情報35aは、モジュールプログラム32のバージョンを示す情報である。契約情報35bは、契約内容を識別する契約IDである。
また、管理情報35cは、Kubernetes等のコンテナ管理プログラム20を実行している仮想マシン13が管理している情報であって、ID、合計vCPU数、合計Node数、及び名前空間を含む。このうち、IDは、コンテナ管理プログラム20がシステムコンポーネントやアドオンを配備する名前空間を一意に識別する識別子である。合計vCPU数は、同一のクラスタに属する全てのコンテナ19に割り当てられたCPUの総数である。また、合計Node数は、同一のクラスタに属する仮想マシン13の総数である。
一方、名前空間は、各コンテナ19を含むクラスタの空間であって、名前とIDとを有する。このうち、名前はクラスタの名前であり、IDはクラスタを一意に識別する識別子である。
メータリング情報35dは、名前、ID、vCPU数、及びコンテナ情報の各々をPod情報として配列要素に含む情報である。このうち、名前は、コンテナ19を含むPodの名前であり、IDはPodを一意に識別する識別子である。なお、Podは、コンテナ管理プログラム20が管理するコンテナ19の最小単位である。vCPU数は、リソース量の一例であって、Pod内のコンテナ19に割り当てられたCPUの数である。
一方、コンテナ情報は、ID、稼働情報取得日時、vCPU数上限値、及びソフトウェア情報の各々を含む情報である。このうち、IDはコンテナ19を一意に識別する識別子である。また、稼働情報取得日時は、コンテナ稼働情報35を取得した日時である。vCPU数上限値は、一つのコンテナ19に割り当て可能なvCPU数の上限値である。そして、ソフトウェア情報は、アプリ15のライセンスコードである。
ソフト管理デーモン34は、このようにメータリング情報35dにvCPU数を含むコンテナ稼働情報35を15分程度の周期で課金装置4に通知する。
再び図5を参照する。その後、課金装置4の制御部31がコンテナ稼働情報35に基づいてアプリ15の課金額を算出し、該課金額を出力する(ステップS5)。この例では、制御部31は、コンテナ稼働情報35の通知を受け続けている間は、コンテナ19が起動していると判断する。また、制御部31は、課金期間内にコンテナ稼働情報35の通知が一度でもあった場合には、その課金期間の長さに応じた課金額を算出する。
以上により、本実施形態に係る課金方法の基本的な処理を終える。
図7は、ステップS4においてコンテナ19が課金装置4に定期的にコンテナ稼働情報35を通知するときの模式図(その1)である。この例では、「#1」のコンテナ19が起動しており、「#2」と「#3」のコンテナ19は停止している場合を想定している。
この場合は、課金装置4の制御部31は、「#1」のコンテナ19から定期的にコンテナ稼働情報35を受け、これにより「#1」のコンテナ19が起動していると判断する。なお、図7とこれ以降の図では、「#n」のコンテナ19が起動していると制御部31が判断した状況を「生存n」で示す。
また、制御部31は、「#2」と「#3」のコンテナ19からコンテナ稼働情報35を受けていないため、これらのコンテナ19は停止していると判断する。
図8は、コンテナ19が課金装置4に定期的にコンテナ稼働情報35を通知するときの模式図(その2)である。
図8の例では、不具合によって「#1」のコンテナ19が途中で停止し、これを受けてコンテナ管理プログラム20が「#2」のコンテナ19を起動した場合を想定している。なお、図7と以降の図では、ある時刻において同時に起動しているコンテナ19の個数がn個である状況を「n多重」と呼ぶ。図7では全ての時刻で1多重となっているため、同時に起動しているコンテナ19の個数は全ての時刻で1個ということになる。
また、この例では、「#1」のコンテナ19は、自コンテナが停止した後にはコンテナ稼働情報35を課金装置4に通知しなくなる。課金装置4の制御部31は、「#1」のコンテナ19からコンテナ稼働情報35の通知を最後に受けてから2周期(30分)が経過してもコンテナ稼働情報35の通知がない場合、「#1」のコンテナ19は停止したと判断する。図8とこれ以降の図では、「#n」のコンテナ19が停止したと制御部31が判断した状況を「死亡n」で示す。
一方、「#2」のコンテナ19は、自コンテナが起動してから課金装置4に周期的にコンテナ稼働情報35を通知する。この通知を受けた課金装置4の制御部31は、「#2」のコンテナ19が起動したものと判断する。
更に、本実施形態ではコンテナ19が自ら課金装置4に対してコンテナ稼働情報35を通知する。そのため、この例のように「#1」のコンテナ19が停止した後に「#2」のコンテナ19が起動した場合、「#1」と「#2」の両方のコンテナ19が課金装置4に同時にコンテナ稼働情報35を通知することがない。そのため、課金装置4の制御部31が、「#1」と「#2」の両方のコンテナ19が同時に起動していると誤って判断するのを防止でき、「#1」と「#2」の両方のコンテナ19のアプリ15に対して二重に課金するのを防止できる。
図9は、コンテナ19が課金装置4に定期的にコンテナ稼働情報35を通知するときの模式図(その3)である。
図9の例では、不具合によって「#1」のコンテナ19が停止する前に、コンテナ19の利用者によって「#2」のコンテナ19が起動された場合を例示している。この場合は、「#1」と「#2」のコンテナ19が同時に起動している2多重の期間が存在することになる。
同様に、「#2」のコンテナ19が停止する前にコンテナの利用者が「#3」のコンテナ19を起動したため、「#2」と「#3」のコンテナ19が同時に起動している2多重の期間も存在する。
図10は、本実施形態における課金額の算出ロジックを説明するための物理サーバ3の模式図である。
図10では、ある時刻において「#1」~「#8」のコンテナ19が起動しているときの物理サーバ3を例示している。また、課金対象のアプリ15の名前としてA~Cの三つが存在するものとする。
本実施形態では、各コンテナ19に割り当てられたリソース量を、当該コンテナ19を実行している仮想マシン13に割り当てられたリソース量に等しいものとする。また、以下ではリソース量としてCPUの個数を例にして説明する。なお、図6のコンテナ稼働情報35に示したように、仮想マシン13に割り当てられたCPUをvCPUと呼び、その個数をvCPU数と呼ぶ。
例えば「#1」のコンテナ19について考える。「#1」のコンテナ19を実行している仮想マシン13のvCPU数は2個である。よって、「#1」のコンテナ19のvCPU数も2個となる。
また、「#2」と「#3」のコンテナ19は、vCPU数が4個の仮想マシン13が実行している。この場合、「#2」と「#3」の各々のコンテナ19のvCPUの数は4個となる。
本実施形態では、コンテナ19のvCPU数に応じて、そのコンテナ19が実行するアプリ15の課金額を課金装置4が以下の算出ロジックで算出する。
図11は、図10のように各コンテナ19が起動している場合の各アプリ15の課金額の算出ロジックを示す模式図である。
まず、名前がAのアプリ15について考える。「単価」は、名前がAのアプリ15を課金期間内に1つだけ使用する場合の料金である。課金期間は、月額課金の場合は1か月であり、日額課金の場合は1日である。「単価」は、課金期間の長さに応じて予め設定され、課金期間が長くなるほど高くなる。
「vCPU係数」は、名前がAのアプリ15を実行したときにvCPUに加わる負荷を示す係数であり、その値が大きいほどvCPUの使用量が大きくなる。
「ライセンス数」は、名前がAのアプリ15を実行するコンテナ19のvCPU数の総数とvCPU係数との積である。なお、当該積の結果の小数点以下は切り上げるものとする。名前がAのアプリ15ではvCPU数の総数は「2+(4+4)+2+4+0」であり、vCPU係数は「0.5」であるから、これらの積は「8」となる。
「課金額」は、ライセンス数と単価との積であり、名前がAのアプリ15については「8,000 [JPY]」となる。
このような課金額の算出方法によれば、一つの仮想マシン13が複数のコンテナ19を実行している場合、これらのコンテナ19のvCPU数が多いほどアプリ15の課金額が増える。これにより、コンテナ19の個数が増えて実行中のアプリ15が増えるほど課金額が増えるため、アプリ15を提供するサービス提供者にとって納得のいく課金体系を実現できる。
なお、「#1」~「#8」のコンテナ19は課金装置4に定期的にコンテナ稼働情報35を通知するが、図6に示したようにコンテナ稼働情報35にはアプリ15のライセンスコードやコンテナ19のvCPU数も含まれている。課金装置4は、課金期間内にいずれかのコンテナ19からコンテナ稼働情報35の通知が一度でもあった場合、コンテナ稼働情報35からアプリ15の名前やコンテナ19のvCPU数を特定し、図10の算出ロジックに従って課金額を算出する。
名前がBとCのアプリ15についてもこれと同様にして課金装置4が算出する。
なお、課金額の算出方法はこれに限定されず、以下のように課金装置4が課金額を算出してもよい。
図12は、本実施形態における課金額の算出ロジックの別の例を説明するための物理サーバ3の模式図である。
図12の例では、コンテナ19に割り当てられたvCPU数を課金額の算出に使用しないため、各コンテナ19にvCPU数を明示していない。また、「#1」のコンテナ19が使用可能なvCPUの数は1個に制限されているとする。
図13は、図12のように各コンテナ19が起動している場合の各アプリ15の課金額の算出ロジックを示す模式図である。
まず、名前がAのアプリ15について考える。「単価」と「vCPU係数」は図9におけるのと同じである。
「ライセンス数」は、図9の例とは異なり、物理サーバ3で起動している複数の仮想マシン13のvCPU数の総数とvCPU係数との積である。この例では、仮想マシン13のvCPU数の総数は「2+4+2+4+4」である。なお、「#1」のコンテナ19のvCPU数が1個に制限されているが、vCPU数の総数を求める際にはvCPU数の制限については考慮しない。また、名前がAのアプリ15のvCPU係数は「0.5」であるから、vCPU数の総数とvCPU係数との積は「8」となる。
「課金額」は、ライセンス数と単価との積であり、名前がAのアプリ15については「8,000 [JPY]」となる。
このような課金額の算出方法によれば、課金額は複数の仮想マシン13のvCPU数の総数に応じた額となる。そのため、一つの仮想マシン13が実行する複数のコンテナ19の個数によらずに課金額は同じとなる。例えば、ここでは名前がAのアプリ15の課金額は「8,000 [JPY]」となっているが、「#2」と「#3」のコンテナ19を実行している仮想マシン13が新しいコンテナ19を実行した場合にその課金額がどのようになるかを考える。その新しいコンテナ19が名前がAのアプリ15を実行しても、複数の仮想マシン13のvCPU数の総数は「2+4+2+4+4」で変わらないため、名前がAのアプリ15の課金額も「8,000 [JPY]」で変わらない。
これにより、コンテナ19の個数が急激に増えてもアプリ15の課金額が大きく増えるのを抑制でき、コンテナ19の利用者にとって納得のいく課金体系を実現できる。
一方、仮想マシン13の個数が増えれば仮想マシン13のvCPU数の総数も多くなるためアプリ15の課金額も増える。よって、仮想マシン13を提供するサービス提供者にとって納得のいく課金体系を実現できる。
次に、コンテナ19と課金装置4のそれぞれの機能構成について説明する。
図14は、コンテナ19の機能構成図である。図14に示すように、コンテナ19は、通信部51、記憶部52、及び制御部53を有する。
このうち、通信部51は、コンテナ19をネットワーク2(図1参照)に接続するためのインターフェースである。また、記憶部52は、前述のコンテナ稼働情報35を記憶する。
一方、制御部53は、ソフト管理デーモン34によって実現される機能であって、起動部54、取得部55、及び通知部56を有する。
このうち、起動部54は、ソフト管理デーモン34を定期的に起動する処理部である。また、取得部55は、コンテナ稼働情報35に含まれる各情報を取得し、それを記憶部52にコンテナ稼働情報35として格納する処理部である。なお、コンテナ稼働情報35に含まれる各情報のうち、契約情報は課金装置4が自装置の記憶部に記憶している。そのため、取得部55は、契約情報については課金装置4から取得する。
そして、通知部56は、コンテナ稼働情報35を課金装置4に通知する処理部である。
図15は、課金装置4の機能構成図である。図15に示すように、課金装置4は、通信部61、記憶部62、及び制御部31を有する。
このうち、通信部61は、課金装置4をネットワーク2(図1参照)に接続するためのインターフェースである。また、記憶部62は、各コンテナ19のイメージファイル33を作成するためのモジュールプログラム32と、各コンテナ19から通知されたコンテナ稼働情報35とを記憶する。
一方、制御部31は、課金装置4の各部を制御する処理部であって、提供部66、受付部67、算出部68、及び出力部69を有する。
このうち、提供部66は、コンテナ19の利用者にモジュールプログラム32を提供する処理部である。受付部67は、各コンテナ19からコンテナ稼働情報35の通知を受け付け、それを記憶部62に格納する処理部である。
算出部68は、課金期間内に受付部67がコンテナ稼働情報35の通知を受け付けた場合に、コンテナ19のvCPU数と課金期間の長さに応じた額をアプリ15の課金額として算出する処理部である。例えば、算出部68は、図10や図12の算出ロジックに基づいて課金額を算出する。
出力部69は、例えばコンテナ19の利用者が利用している仮想マシン13に、算出部68が算出した課金額を出力する処理部である。課金額の出力先は特に限定されず、例えばネットワーク2に接続されたコンテナ19の利用者端末に出力部69が課金額を出力してもよい。
次に、コンテナ19と課金装置4の各々の処理の流れについて説明する。
図16は、コンテナ19が実行する処理のフローチャートである。
まず、取得部55が、メータリング情報35d(図6参照)におけるソフトウェア情報を自コンテナから取得する(ステップS11)。
次に、取得部55が、管理情報35c(図6参照)における名前空間の名前をコンテナ管理プログラム20を実行している仮想マシン13から取得し、かつメータリング情報35dにおけるライセンスコードを自コンテナから取得する(ステップS12)。
次いで、取得部55が、メータリング情報35dにおけるコンテナ情報のIDを自コンテナから取得し、かつメータリング情報35dにおけるPod情報のIDをコンテナ管理プログラム20から取得する(ステップS13)。
続いて、取得部55が、課金装置4から管理情報35c(図6参照)における契約情報を取得する(ステップS14)。
次に、取得部55が、コンテナ管理プログラム20を実行している仮想マシン13や自コンテナから、ステップS11~S13では取得されていないコンテナ稼働情報35の残りの情報を取得する(ステップS15)。そのような情報としては、コンテナ管理プログラム20を実行している仮想マシン13が管理している管理情報35cのID、合計vCPU数、合計Node数、及び名前空間におけるIDがある。また、メータリング情報35dにおけるID、vCPU数、vCPU数上限値、及び稼働情報取得日時も取得部55が自コンテナから取得する。
次いで、通知部56が、コンテナ稼働情報35を課金装置4に通知する(S16)。
この後は、ステップS11~S16を15分程度の周期で定期的に繰り返す。
図17は、課金装置4が実行する処理のフローチャートである。
まず、受付部67が、各コンテナ19からコンテナ稼働情報35の通知を受け付け、コンテナ稼働情報35を記憶部52に格納する(ステップS21)。
次に、算出部68が、記憶部52からコンテナ稼働情報35を読み出す(ステップS22)。なお、ステップS21とステップS22は30分程度の周期で繰り返される。
次いで、算出部68が、読み出したコンテナ稼働情報35に基づいてアプリ15の課金額を算出する(ステップS23)。一例として、算出部68は、課金期間内に一度でもコンテナ19からコンテナ稼働情報35の通知があった場合、そのコンテナ19のアプリ15の課金額を算出する。
算出部68が課金額の算出に使用する算出ロジックとしては、前述の図11や図13の算出ロジックがある。例えば、図11の算出ロジックを採用する場合は、算出部68は、コンテナ稼働情報35のメータリング情報35dのソフトウェア情報からアプリ15のライセンスコードを特定する。更に、算出部68は、メータリング情報35dのvCPU数をコンテナ19のvCPU数として特定する。そして、算出部68は、名前がAのアプリ15を実行しているコンテナ19のvCPU数の総和を求め、その総和に予め定めておいたvCPU係数と単価とを乗じることで、名前がAのアプリ15の課金額を算出する。
また、図13の算出ロジックを採用する場合は、算出部68は、コンテナ稼働情報35のメータリング情報35dのソフトウェア情報からアプリ15の名前を特定する。更に、算出部68は、メータリング情報35dのvCPU数をコンテナ19のvCPU数として特定する。前述のように、そのvCPU数は、当該コンテナ19を実行している仮想マシン13のvCPU数に等しい。そこで、算出部68は、同一の仮想マシン13で起動している複数のコンテナ19のうちの一つのvCPU数を、当該仮想マシン13のvCPU数として特定する。
そして、算出部68は、名前がAのアプリ15を実行しているコンテナ19が起動している仮想マシン13に割り当てられたvCPU数の総和を求め、その総和にvCPU係数と単価とを乗じることで、名前がAのアプリ15の課金額を算出する。
次いで、出力部69が課金額を出力する(ステップS24)。
この後は、ステップS23~S24を1日に一回の周期で定期的に繰り返す。
以上説明した本実施形態によれば、図17に示したように、課金装置4の制御部31が、課金期間内にコンテナ19からコンテナ稼働情報35の通知を受け付けた場合に、課金期間の長さとコンテナ19のvCPU数に応じた課金額を算出する。これにより、コンテナ19のIPアドレスが公開されておらず課金装置4がコンテナ19にアクセスできない場合でも、コンテナ稼働情報35に含まれるvCPU数に応じた課金額を課金装置4が算出でき、コンテナ19に対して課金できる。
また、停止中のコンテナ19はコンテナ稼働情報35を通知しないため、複数のコンテナ19の各々が起動と停止を頻繁に繰り返す場合であっても、課金装置4が停止中のコンテナ19に誤って課金するおそれがない。
更に、図12~図13に示したように、コンテナ19のvCPU数でなく、そのコンテナ19を実行している仮想マシン13のvCPU数に基づいて課金額を算出することで、コンテナ19の急増に伴って課金額が急激に増えるのを防止できる。
(ハードウェア構成)
図18は、課金装置4のハードウェア構成図である。図18に示すように、課金装置4は、記憶装置4a、メモリ4b、プロセッサ4c、通信インターフェース4d、及び媒体読取装置4eを有する。これらの各部は、バス4gにより相互に接続される。
このうち、記憶装置4aは、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の不揮発性のストレージであって、本実施形態に係る課金プログラム100を記憶する。
なお、課金プログラム100をコンピュータが読み取り可能な記録媒体4fに記録し、媒体読取装置4eを介してプロセッサ4cにその課金プログラム100を読み取らせるようにしてもよい。
そのような記録媒体4fとしては、例えばCD-ROM (Compact Disc - Read Only Memory)、DVD (Digital Versatile Disc)、及びUSB (Universal Serial Bus)メモリ等の物理的な可搬型記録媒体がある。また、フラッシュメモリ等の半導体メモリやハードディスクドライブを記録媒体4fとして使用してもよい。これらの記録媒体4fは、物理的な形態を持たない搬送波のような一時的な媒体ではない。
更に、公衆回線、インターネット、及びLAN等に接続された装置に課金プログラム100を記憶させてもよい。その場合は、プロセッサ4cがその課金プログラム100を読み出して実行すればよい。
一方、メモリ4bは、DRAM(Dynamic Random Access Memory)等のようにデータを一時的に記憶するハードウェアである。
プロセッサ4cは、課金装置4の各部を制御するCPUやGPU(Graphical Processing Unit)等のハードウェアである。また、プロセッサ4cは、メモリ4bと協働して課金プログラム100を実行する。
このようにメモリ4bとプロセッサ4cとが協働して課金プログラム100を実行することにより、課金装置4の制御部31(図15参照)が実現される。
また、記憶部62(図15参照)は、記憶装置4aとメモリ4bによって実現される。
更に、通信インターフェース4dは、課金装置4をネットワーク2(図1参照)に接続するためのNIC(Network Interface Card)等のハードウェアである。その通信インターフェース4dにより通信部61(図15参照)が実現される。
媒体読取装置4eは、記録媒体4fを読み取るためのCDドライブ、DVDドライブ、及びUSBインターフェース等のハードウェアである。
図19は、物理サーバ3のハードウェア構成図である。図19に示すように、物理サーバ3は、記憶装置3a、メモリ3b、プロセッサ3c、通信インターフェース3d、入力装置3f、表示装置3g、及び媒体読取装置3hを有する。これらの各部は、バス3jにより相互に接続される。
このうち、記憶装置3aは、HDDやSSD等の不揮発性のストレージであって、ホストOS12、仮想化プログラム101、ゲストOS14、コンテナエンジン18、及びソフト管理デーモン34を記憶する。メモリ3bとプロセッサ3cが協働して仮想化プログラム101を実行することにより各仮想マシン13(図3参照)を実現することができる。
なお、ソフト管理デーモン34をコンピュータが読み取り可能な記録媒体3iに記録し、媒体読取装置3hを介してプロセッサ3cにそのソフト管理デーモン34を読み取らせるようにしてもよい。
そのような記録媒体3iとしては、例えばCD-ROM、DVD、及びUSBメモリ等の物理的な可搬型記録媒体がある。また、フラッシュメモリ等の半導体メモリやハードディスクドライブを記録媒体3iとして使用してもよい。これらの記録媒体3iは、物理的な形態を持たない搬送波のような一時的な媒体ではない。
更に、公衆回線、インターネット、及びLAN等に接続された装置にソフト管理デーモン34を記憶させてもよい。その場合は、プロセッサ3cがそのソフト管理デーモン34を読み出して実行すればよい。
一方、メモリ3bは、DRAM等のようにデータを一時的に記憶するハードウェアである。
プロセッサ3cは、物理サーバ3の各部を制御するCPUやGPU等のハードウェアである。また、プロセッサ3cは、メモリ3bと協働してソフト管理デーモン34を実行する。
このようにメモリ3bとプロセッサ3cとが協働してソフト管理デーモン34を実行することにより、コンテナ19の制御部53(図14参照)が実現される。
また、記憶部52(図14参照)は、記憶装置3aとメモリ3bによって実現される。
更に、通信インターフェース3dは、物理サーバ3をネットワーク2(図1参照)に接続するためのNIC等のハードウェアである。その通信インターフェース3dにより通信部51(図14参照)が実現される。
また、入力装置3fは、コンテナ19の利用者がモジュールプログラム32に含まれる定義ファイル等を編集するためのキーボードやマウス等のハードウェアである。
表示装置3gは、各種の画面を表示するための液晶ディスプレイ等の表示デバイスである。
媒体読取装置3hは、記録媒体3iを読み取るためのCDドライブ、DVDドライブ、及びUSBインターフェース等のハードウェアである。
1…システム、2…ネットワーク、3…物理サーバ、4…課金装置、11…ハードウェアリソース、13…仮想マシン、15…アプリ、18…コンテナエンジン、19…コンテナ、20…コンテナ管理プログラム、31…制御部、32…モジュールプログラム、33…イメージファイル、34…ソフト管理デーモン、35…コンテナ稼働情報、51…通信部、52…記憶部、53…制御部、54…起動部、55…取得部、56…通知部、61…通信部、62…記憶部、66…提供部、67…受付部、68…算出部、69…出力部、100…課金プログラム、101…仮想化プログラム。

Claims (7)

  1. コンテナに割り当てられたリソース量を示す通知を前記コンテナから受け付け、
    課金期間内に前記通知があった場合に、前記リソース量に応じた額を、前記コンテナが実行するアプリケーションプログラムの課金額として算出する、
    処理をコンピュータに実行させるための課金プログラム。
  2. 前記コンテナは仮想マシンが実行し、
    前記リソース量は、前記仮想マシンに割り当てられたリソース量に等しいことを特徴とする請求項1に記載の課金プログラム。
  3. 前記仮想マシンが前記コンテナを複数実行している場合、各々の前記コンテナに割り当てられた前記リソース量が多いほど前記課金額が増えることを特徴とする請求項2に記載の課金プログラム。
  4. 前記仮想マシンが前記コンテナを複数実行している場合、前記課金額は複数の前記コンテナの個数によらずに同じであることを特徴とする請求項2に記載の課金プログラム。
  5. 前記仮想マシンが複数起動している場合、前記課金額は、複数の前記仮想マシンの各々に割り当てられた前記リソース量の総数に応じた額であることを特徴とする請求項4に記載の課金プログラム。
  6. コンテナに割り当てられたリソース量を示す通知を前記コンテナから受け付ける受付部と
    課金期間内に前記通知があった場合に、前記リソース量に応じた額を、前記コンテナが実行するアプリケーションプログラムの課金額として算出する算出部と、
    を有することを特徴とする課金装置。
  7. コンピュータが、
    コンテナに割り当てられたリソース量を示す通知を前記コンテナから受け付け、
    課金期間内に前記通知があった場合に、前記リソース量に応じた額を、前記コンテナが実行するアプリケーションプログラムの課金額として算出する、
    処理を実行することを特徴とする課金方法。
JP2021043293A 2021-03-17 2021-03-17 課金プログラム、課金装置、及び課金方法 Pending JP2022142986A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021043293A JP2022142986A (ja) 2021-03-17 2021-03-17 課金プログラム、課金装置、及び課金方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021043293A JP2022142986A (ja) 2021-03-17 2021-03-17 課金プログラム、課金装置、及び課金方法

Publications (1)

Publication Number Publication Date
JP2022142986A true JP2022142986A (ja) 2022-10-03

Family

ID=83454740

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021043293A Pending JP2022142986A (ja) 2021-03-17 2021-03-17 課金プログラム、課金装置、及び課金方法

Country Status (1)

Country Link
JP (1) JP2022142986A (ja)

Similar Documents

Publication Publication Date Title
US11425194B1 (en) Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US11182196B2 (en) Unified resource management for containers and virtual machines
US9826031B2 (en) Managing distributed execution of programs
US8321558B1 (en) Dynamically monitoring and modifying distributed execution of programs
US11132237B2 (en) System and method for usage-based application licensing in a hypervisor virtual execution environment
US9276987B1 (en) Identifying nodes already storing indicated input data to perform distributed execution of an indicated program in a node cluster
US9280390B2 (en) Dynamic scaling of a cluster of computing nodes
US8260840B1 (en) Dynamic scaling of a cluster of computing nodes used for distributed execution of a program
CN100487659C (zh) 用于优化分段资源分配的方法和设备
JP5760088B2 (ja) スナップショットアーカイブの柔軟な格納および取り出しを提供するためのシステムおよび方法
Ramakrishnan et al. Defining future platform requirements for e-science clouds
JP2008192145A (ja) 一時使用量に基づくソフトウェアライセンス契約管理
WO2016117694A1 (ja) ネットワーク機能仮想化管理およびオーケストレーション方法と装置とプログラム
US8074223B2 (en) Permanently activating resources based on previous temporary resource usage
US20140075435A1 (en) System, method and program product for cost-aware selection of stored virtual machine images for subsequent use
JP2006018815A (ja) エミュレートされたコンピューティング環境を用いてオペレーティングシステムのライセンス収入を徴収するためのシステムおよび方法
US20060173730A1 (en) Adjusting resource activation based on a manufactured date of a computer
US11507356B2 (en) Multi-cloud licensed software deployment
EP4055477A1 (en) Just-in-time containers
US20170372384A1 (en) Methods and systems to dynamically price information technology services
JP5116304B2 (ja) 未返還待機リソース使用率を確定するためのシステム
JP2022142986A (ja) 課金プログラム、課金装置、及び課金方法
US9369352B1 (en) Method of capturing server and operating system metrics for virtual to physical topology reporting
US20240069944A1 (en) Coordinated hooking mechanism for checkpointing virtual machines
US20230214265A1 (en) High availability scheduler event tracking

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231109