サーバーレスアーキテクチャを採用することで、開発者はトラフィックやスケーリングなどのインフラストラクチャに関する作業を気にすることなく、コスト削減やパフォーマンス向上を実現し、アプリケーション開発に集中することが可能です。
OpenShift 環境では、Red Hat OpenShift Serverless を導入することでサーバーレスアーキテクチャを実現でき、以前の記事で紹介した OpenShift Pipelines や OpenShift GitOps と組み合わせることで、CI/CD パイプラインを通じたサーバーレスアプリケーションのデプロイもスムーズに行えます。
本記事では Red Hat が提供する OpenShift Serverless と、そのベースとなっている Knative について簡単に概要をつかめるようにまとめていきます。
OpenShift Serverless とは?
OpenShift Serverless は、OpenShift クラスタ上でサーバーレスのアプリケーションを実行させるサービスです。OSS の Knative プロジェクトをベースとしています。通常、アプリを動かすにはサーバーの設定やメンテナンスが必要ですが、OpenShift Serverless を使うと、それらを気にせずにサービスを提供できます。必要な時にだけ Pod を立ち上げるため、リソースの節約にもつながります。
OpenShift Serverless のメリット
- アプリケーションのデプロイメントやスケーリングを自動で行い、サーバーの管理に関する手間を省くことができます。
- イベントをトリガーとしてアプリケーションを実行させることが可能で、リアルタイムデータ処理などのイベントベースのアプリケーションを容易に構築できます。
- アプリケーションのトラフィックに応じてリソースを自動的にスケールアップ・ダウンするため、パフォーマンスを最適化し、リソースの無駄遣いを防ぐことができます。
OpenShift Serverless のコンポーネント
OpenShift Serverless には主に以下のコンポーネントがあります。以前は Knative Build もありましたが、現在(執筆時点のバージョン 1.34.1)は CI/CD の OpenShift Pipelines に移行されています。
Knative Serving
アプリケーションのデプロイメント、オートスケーリング(自動でスケールアップやスケールダウンを行う)、トラフィック管理を担当します。リクエストに応じてコンテナを起動し、不要になれば停止することでリソースの節約を図ることができます。リビジョン管理も可能で、バージョン管理を容易にし、ブルー/グリーンデプロイメントやカナリアリリースなどのデプロイメント戦略もとることができます。
Knative Eventing
イベント駆動型アーキテクチャを実現するためのコンポーネントで、様々なイベントソース(Event Producer)からのイベントを受け取り、それを CloudEvents 仕様へ成形してサービス(Event Consumer)に渡します。CloudEvents 仕様とは、イベントデータの標準化を目的とした CNCF のプロジェクトで、イベントの形式やプロトコルを統一して、異なるシステム間でのイベントの受け渡しを容易にします。Knative Eventing はこの仕様に準拠し、イベントのルーティングやフィルタリング、変換を行うことができます。定期的なイベントであったり、Kafka の Topic メッセージ、GitHub からの Webhook などをイベントソースとして利用することができます。
ユースケース
イベント駆動型アプリケーション
Knative Eventing を利用することで、開発者はイベントソースからのイベントを受け取り、それに応じてサービスをトリガーすることができます。これにより、リアルタイムでのデータ処理や、ユーザーの行動に応じた動的なレスポンスを実現することが可能になります。
API やマイクロサービスの構築
Knative Serving を使用して、トラフィックに基づいて自動的にスケールする API やマイクロサービスを作成できます。アプリケーションは必要に応じてリソースを確保し、使用していないときはリソースを解放します。
類似サービス
AWS Lambda
Amazon Web Services が提供するサーバーレスコンピューティングサービスです。Kubernetes とは異なり、AWS の独自のインフラストラクチャ上で動作します。OpenShift Serverless と比較すると、プログラミング言語のサポートやオートスケールの機能に関しては類似していますが、管理が OpenShift か AWS といった点が大きな違いになります。そのため、OpenShift Serverless(Knative)は特定のクラウドプロバイダーにロックインされるリスクを軽減することができます。
Kubeless、Fission
Kubeless と Fission はどちらも Kubernetes 上で軽量に動作するオープンソースのサーバレスフレームワークです。OpenShift Serverless と比較すると、こちらも管理が OpenShift か Kubernetes といった点が違いにはなりますが、OpenShift Serverless のベースとなっているKnative は同じ Kubernetes 上で動作します。Fission と Kubeless もオートスケールはサポートしていますが、ゼロスケールはサポートしていない点も違いになります。Fission と Kubeless は、よりシンプルで軽量なフレームワークを求める場合などの要件に適しています。
まとめ
OpenShift Serverless(Knative)について簡単にまとめてみました。OpenShift Serverless を実際に構築してみる記事も投稿する予定なのでそちらも読んでみてください。
参考文献
https://www.redhat.com/ja/technologies/cloud-computing/openshift/serverless
https://www.scsk.jp/sp/openshift/developer5.html
https://docs.openshift.com/serverless/1.34/about/about-serverless.html
https://www.densify.com/openshift-tutorial/openshift-serverless/