summary:
Knativeは主に,Serving[サービング]とEventing[イベント処理]という2つの中核コンポーネントから構成されている.
なお,Kubernetes[標準のHPA等]においては,基本的に最低1つのPodが常に起動していることが前提となる.一方,KnativeはトラフィックがないときにPodをゼロにする[scale-to-zero]ことが可能.これがFaaS[Function as a Service]的と言われる所以である.
Knative Servingは,コンテナ化されたアプリケーションのデプロイメントとスケーリングを管理し,HTTPリクエストに基づいて自動的にポッド数を増減させる.特に重要な機能として,ゼロからのスケーリング[scale-to-zero]に対応しており,リクエストがないときはリソース消費をゼロに抑えることができる.また,リビジョン管理,自動スケーリング,トラフィック分割による段階的なロールアウト,リビジョン間でのトラフィック移行などの機能も提供する.
Knative Eventingは,アプリケーション間でイベント駆動型の非同期通信を可能にする仕組みを提供する.CloudEvents仕様に準拠しており,イベントソース[Kafka,NATS,GCP Pub/Sub,AWS SNSなど]とアクチュエータ[受信者]との結合を疎結合に構成することができる.イベントの発行,サブスクリプション,フィルタリング,イベントバスを介したルーティングなどの機能を提供し,マイクロサービス間の非同期通信を容易にする.
Knativeのエコシステムには,これらの中核コンポーネントを基盤として,サーバーレス関数[Functions]の開発をサポートするための様々なツールやプロジェクトが存在している.これらは,Knative Servingの上に構築され,Function-as-a-Service[FaaS]スタイルの開発体験を実現するものである.例えば,Func ProjectやKnative関数フレームワークなどがあり,開発者がビジネスロジックに集中できるよう支援している.
KEDAとの関係に関しては,KEDA[Kubernetes-based Event Driven Autoscaling]とKnativeは,どちらもKubernetes上でイベント駆動型の自動スケーリングを実現するためのツールである.しかし,アプローチと焦点が異なる.Knativeは包括的なサーバーレスプラットフォームであり,HTTPリクエストに基づいた自動スケーリングを主に提供するのに対し,KEDAはより広範なイベントソースに基づくスケーリングに特化している.KEDAは様々なイベントソース[Kafka,RabbitMQ,Azure Service Bus,データベースクエリなど]からのメトリクスに基づいてワークロードをスケールすることができる.
両者は競合するというよりも補完的な関係にある.実際,KEDAとKnative Servingを組み合わせて使用することで,HTTPベースのスケーリング[Knative]と様々なイベントソースに基づくスケーリング[KEDA]の両方の利点を活かしたアーキテクチャを構築することが可能である.例えば,Knative ServingでデプロイされたサービスをKEDAでさらに細かくスケーリングするといった使い方ができる.また,KEDAはKnative Eventingのイベントソースとして機能することもできる.
Knativeのアーキテクチャは拡張性を重視して設計されており,Knativeの各機能は個別に使用することも可能である.特定のユースケースに応じて,Servingだけを使ったり,Eventingと外部イベントソースを組み合わせたりといった柔軟な構成が許されている.
Knativeは,Istio,Kourier,Contourなどの様々なインバウンドトラフィック管理ソリューション[Ingress Controllers]と統合可能であり,ルーティング,トラフィック分割,ブルーグリーンデプロイメント,カナリアリリースといった高度な運用にも対応している.当初はIstioとの統合が強調されていたが,現在はより軽量なKourierがデフォルトのネットワークレイヤーとして推奨されるようになっている.
Knativeの採用により,開発者はインフラストラクチャの複雑さではなく,ビジネスロジックに集中できるようになる.コンテナのビルド,デプロイ,スケーリング,トラフィック管理などの運用上の懸念事項が抽象化され,宣言的なAPIを通じて簡単に設定できる.これにより,クラウドネイティブなアプリケーション開発のライフサイクル全体が簡素化される.
このように,KnativeはKubernetes上でのサーバーレス開発を支援するための洗練されたツールチェーンであり,マイクロサービスの迅速な構築と効率的なスケーリング,ならびにイベント駆動型アーキテクチャの実現を可能にする.多くのクラウドプロバイダーやプラットフォームベンダーが独自のサーバーレスオファリングの基盤としてKnativeを採用しており,サーバーレスコンピューティングの標準的な実装のひとつとなっている.
Mathematics is the language with which God has written the universe.