「Knative」とは? Kubernetesでサーバレスを実現する「FaaS」以外の選択肢「Knative」とは何か【前編】

「Kubernetes」ユーザーがイベント駆動型プログラミングによるサーバレスアーキテクチャを実現したい場合、有力な手段となるのが「Knative」だ。クラウドサービスの「FaaS」とは何が違うのか。

2020年09月28日 05時00分 公開
[Tom NolleTechTarget]

 サーバの存在を意識せずにアプリケーションを開発・運用できる「サーバレスアーキテクチャ」を具現化する代表的な手段が、特定のイベントをトリガーにしてプログラムを自動実行する「イベント駆動型プログラミング」だ。イベント駆動型プログラミングを導入したいと考える企業の中には、クラウドサービスの「FaaS」(Function as a Service)の利用を検討する人もいるだろう。だがFaaSが必ずしもニーズに合うとは限らない。そうした場合、イベント駆動型プログラミングを実現する別の手段として「Knative」が選択肢になる。前後編にわたり、Knativeの具体的な用途、メリット、課題について、特にFaaSを使った場合と比較して紹介する。

 Knativeは、コンテナの運用管理を自動化するコンテナオーケストレーター「Kubernetes」で、イベント駆動型プログラミングを実現しやすくするソフトウェアだ。クラウドサービスであれオンプレミスのインフラであれ、Kubernetesを実行できるインフラであればKnativeも導入できる。

KnativeはFaaSと何が違うのか

 アーキテクチャ的には、Knativeはイベントを集約・伝達する層として、コンテナオーケストレーターと、コンテナ間の通信を制御する「サービスメッシュ」の間に置かれる。具体的には、コンテナオーケストレーターとしてKubernetesを、サービスメッシュとして「Istio」を利用する。Kubernetesはコンテナのデプロイ(配備)を実行し、Istioはコンポーネントや機能同士を相互に接続する役割を持つ。

 Knativeはイベントを認識すると、そのイベントに関連付けられたプロセスを実行する。Knativeはプロセスが実行されている時のみCPUやメモリといったリソースを割り当てる。そのためKnativeを利用すれば「起きる可能性はあっても、現時点では起きていないイベント」のためにリソースを割り当てる必要がなくなる。

リソース利用タイプで比較

 イベント駆動型プログラミングでは、イベントのトリガーに応じて処理を実行する。イベント発生時に実行するプログラム(関数)の実行単位である「関数インスタンス」の数は、利用しているサーバの容量と、管理者が定義した関数インスタンスの上限に基づいて制限がかかる。FaaSは、理想的にはリソースに関する制限を持たないが、実際はコストに関する制約がある。トリガーを用意するイベントの数が増えると、コストも増加する恐れがある。

 Kubernetesがクラウドサービスとオンプレミスのインフラのどちらで稼働していても、Knativeを利用できる。例えばGoogleのハイブリッドクラウド構築サービス「Anthos」を通じて、複数のKubernetesクラスタ(Kubernetesによるアプリケーション実行のためのマシン群)を一括管理できるようにKubernetesクラスタ同士を連携(フェデレーション)させている場合、それらのKubernetesクラスタを横断的に活用したイベント駆動型プログラミングを実現できる。これは利用可能なリソースとコストが決まっていて、コンテナに配備するアプリケーションの利用リソースが予想できる場合に適している。

TechTarget発 先取りITトレンド

米国TechTargetの豊富な記事の中から、最新技術解説や注目分野の製品比較、海外企業のIT製品導入事例などを厳選してお届けします。

ITmedia マーケティング新着記事

news171.png

2024年のGW予算は横ばい 賃上げよりも物価高と円安の影響が勝る?――インテージ調査
インテージが全国の15歳から79歳の男女を対象に実施したゴールデンウイークに関する調査...

news148.jpg

CNN幹部が語る、メディアビジネスにとってのAIのリスクと機会
生成AIがコンテンツを量産し、真偽の明らかでない情報があふれかえる中、メディアの価値...

news016.png

「サイト内検索」&「ライブチャット」売れ筋TOP5(2024年4月)
今週は、サイト内検索ツールとライブチャットの国内売れ筋TOP5をそれぞれ紹介します。