この記事は、求ム!Cloud Nativeアプリケーション開発のTips!【PR】日本マイクロソフト Advent Calendar 2020 の 4 日目です(後から追っかけで書いています)。
KEDA についてご紹介します。
What is KEDA ?
KEDA は Kubernetesに導入可能なコンポーネントの名前です。語源である「Kubernetes Event-driven Autoscaling」の通り、Kubernetes 上でイベント駆動のオートスケールを実現します。
2020年4月に CNCF(Cloud Native Computing Foundation) の sandbox project に採用されてニュースになっていました。
KEDA の使いどころは?
語源である「Kubernetes Event-driven Autoscaling」にもあるイベント駆動(Event-driven)とは何かのイベントに応じて処理を行う仕組みのことなのはご存知の通りです。
不定期に大量メッセージを受け取る Web システムを例にしてご説明します。
イベント駆動(Event-driven)で構築せず、Web サーバで構築した場合を考えてみましょう。
常時メッセージを待ち受けていると、ほとんどの時間は処理するものが何も無いため、リソースが無駄になってしまいます。一方、無駄にするリソースを最小限になるように構築してしまうと、いざ大量のメッセージが来た時に処理しきれなくなってしまいます。
キューにメッセージが無い状態は何も動かず、キューにメッセージが大量に投入されれば、そのメッセージ数に応じて処理を並列に動かすこと(=イベント駆動(Event-driven))が求められます。イベント駆動(Event-driven)にすれば、リソースを無駄にせず、有効活用できます。
こういった処理の代表的なパターンとして、Azure なら ServiceBus と Azure Functions、AWS なら
SQS と Lambdaなどがあげられます。
このようなイベント駆動の処理を Kubernetes 上で実現するものが、今回ご紹介している KEDA になります。
KEDA の使い方
KEDA は Kubernetes 上にインストールして使います。
詳細は公式サイトをご覧ください。
公式サイトを見ると、Scaler という見慣れない言葉を見ると思いますが、これはスケールの元情報となっているものになります。Scaler は拡張可能な仕様になっていて様々なサービス、コンポーネントに対応しており、記事執筆時点でも以下のサービスに対応しています。
これをご覧になれば、KEDA が特定のサービスに依存したものではなく、汎用的に利用できるものであることがおわかりになるかと思います。
もちろん、Azure Kubernetes Service (AKS) でも利用可能です。
- ActiveMQ Artemis
- Apache Kafka
- AWS CloudWatch
- AWS Kinesis Stream
- AWS SQS Queue
- Azure Blob Storage
- Azure Event Hubs
- Azure Log Analytics
- Azure Monitor
- Azure Service Bus
- Azure Storage Queue
- CPU
- Cron
- External
- External Push
- Google Cloud Platform Pub/Sub
- Huawei Cloudeye
- IBM MQ
- Liiklus Topic
- Memory
- Metrics API
- MySQL
- NATS Streaming
- PostgreSQL
- Prometheus
- RabbitMQ Queue
- Redis Lists
- Redis Streams
5 日目は @changeworld の「What's new in .NET 5」です。引き続きお楽しみください。