サーバの存在を意識せずにアプリケーションを開発・運用できる「サーバレスアーキテクチャ」を具現化する代表的な手段が、特定のイベントをトリガーにしてプログラムを自動実行する「イベント駆動型プログラミング」だ。イベント駆動型プログラミングを導入したいと考える企業の中には、クラウドサービスの「FaaS」(Function as a Service)の利用を検討する人もいるだろう。だがFaaSが必ずしもニーズに合うとは限らない。そうした場合、イベント駆動型プログラミングを実現する別の手段として「Knative」が選択肢になる。前後編にわたり、Knativeの具体的な用途、メリット、課題について、特にFaaSを使った場合と比較して紹介する。
Knativeは、コンテナの運用管理を自動化するコンテナオーケストレーター「Kubernetes」で、イベント駆動型プログラミングを実現しやすくするソフトウェアだ。クラウドサービスであれオンプレミスのインフラであれ、Kubernetesを実行できるインフラであればKnativeも導入できる。
アーキテクチャ的には、Knativeはイベントを集約・伝達する層として、コンテナオーケストレーターと、コンテナ間の通信を制御する「サービスメッシュ」の間に置かれる。具体的には、コンテナオーケストレーターとしてKubernetesを、サービスメッシュとして「Istio」を利用する。Kubernetesはコンテナのデプロイ(配備)を実行し、Istioはコンポーネントや機能同士を相互に接続する役割を持つ。
Knativeはイベントを認識すると、そのイベントに関連付けられたプロセスを実行する。Knativeはプロセスが実行されている時のみCPUやメモリといったリソースを割り当てる。そのためKnativeを利用すれば「起きる可能性はあっても、現時点では起きていないイベント」のためにリソースを割り当てる必要がなくなる。
イベント駆動型プログラミングでは、イベントのトリガーに応じて処理を実行する。イベント発生時に実行するプログラム(関数)の実行単位である「関数インスタンス」の数は、利用しているサーバの容量と、管理者が定義した関数インスタンスの上限に基づいて制限がかかる。FaaSは、理想的にはリソースに関する制限を持たないが、実際はコストに関する制約がある。トリガーを用意するイベントの数が増えると、コストも増加する恐れがある。
Kubernetesがクラウドサービスとオンプレミスのインフラのどちらで稼働していても、Knativeを利用できる。例えばGoogleのハイブリッドクラウド構築サービス「Anthos」を通じて、複数のKubernetesクラスタ(Kubernetesによるアプリケーション実行のためのマシン群)を一括管理できるようにKubernetesクラスタ同士を連携(フェデレーション)させている場合、それらのKubernetesクラスタを横断的に活用したイベント駆動型プログラミングを実現できる。これは利用可能なリソースとコストが決まっていて、コンテナに配備するアプリケーションの利用リソースが予想できる場合に適している。
米国TechTargetの豊富な記事の中から、最新技術解説や注目分野の製品比較、海外企業のIT製品導入事例などを厳選してお届けします。
2020年度のオンライン商談システム市場はコロナ禍による需要の急増で前年度比176.9%増――ITR調査
営業デジタル化はますます加速しています。
Tableau調査と三井住友海上の事例に学ぶ コロナ禍でも強いデータドリブン組織をどう作るか
データを大切にし、従業員がデータにアクセスしてデータに基づいた経営判断ができる組織...
営業デジタル化の始め方(無料eBook)
「ITmedia マーケティング」では、気になるマーケティングトレンドをeBookにまとめて不定...