Microsoft Build 2019レポート 3日目〜「どこにコードをホストすべきか、Kubernetes?コンテナ?サーバーレス?」

こんにちは、サイオステクノロジー 技術2部 水倉です。
Microsoft Build 2019 3日目のセッション「Where should I host my code? Choosing between Kubernetes, Containers, and Serverless」をレポートします。

クラウドネイティブの鍵となるコンポーネント

まず、クラウドネイティで鍵となるコンポーネントとして、コンテナ、Kubernetes、サーバーレスについて簡単に説明されていました。

  • コンテナ
    • アプリケーションコードと依存関係をパッケージ化したもの。一貫した方法で異なるホストでポータブルに実行できる。
  • Kubernetes
    • コンテナベースのアプリケーションを管理し、信頼性のあるスケーラビリティを得るためのプラットフォーム。
    • 運用のための道具であって、開発のためのものではない。
  • サーバーレス
    • クラウドプロバイダーによって運用される環境でアプリケーションを実行し、スケーリング可能なプラットフォーム。
    • 開発者をコードとビジネスバリューに集中させることができるように最適化。

どこにコードをホストすべきか?

では、どこにコードをホストすべきかという話。
下記の図は左へ行くほど細かな制御、管理が可能で、右へ行くほど細かな制御はできないけれど生産性が高い、ということを示しています。

where-should-i-host-code2

  • まずは生産性が高い選択肢から始めて、より細かな制御が必要になれば段階的に図の左の方の選択肢を検討していくのが望ましい。
  • 常にどれか一つではなく、組み合わせることも考えていく
  • それぞれの強みを活かしたサービスを利用していくことが大事

ここまででかなり短時間でしたので、早めに終わるかと思われたセッションでしたが、最後に KEDA のデモを披露してくれました。KEDA については他にも複数のセッションで触れられていて、注目度の高さが伺えましたので、簡単に整理してみたいと思います。

KEDAとは?

KEDA ※1 (Kubernetes-based Event Driven Autoscaling) は Kubernetes の pod を イベント駆動でスケーリングできる OSS プロダクトです。Knative が有名ですが、Kubernetes 上でサーバーレスプラットフォームを実現できるものですね。KEDA は Kafka や RabbitMQ など非 HTTP なイベントに連動した処理が可能で、イベント負荷に応じて Kubernetes ベースのスケール制御が可能です。特に、Azure Functions と統合されているので、各種 Azure サービスのイベントをトリガーにして、イベントに対する処理を Functions で手軽に実装することが可能となっています。スケールアウトはもちろんのこと、Pod ゼロへのスケールインが可能です。

(※1) 「ケーダ」あるいは「ケイダ」と発音されてました。Microsoft 社と RedHat 社の共同開発。

KEDA のアーキテクチャ

keda-architecture
引用:https://github.com/kedacore/keda

KEDA は主に 2 つの役割を持っています。

  1. スケールイン/アウトするために Kubernetes デプロイメントを有効化/無効化をするエージェントの役割
  2. 水平 pod オートスケーラーへイベントメトリクス(キューの長さだったり、ストリームの遅延具合だったり)を連携する Kubernetes メトリクスサーバーの役割

KEDA の利用を検討するのはこんな時

  • オンプレミスや、エッジで関数を実行したい時
  • 既存の Kubernetes と一緒に関数を実行したい時
  • 異なるプラットフォーム、異なるクラウド環境で関数を実行したい時
  • スケールとコンピューティングを細かく制御、管理して関数を実行したい時

最後に

少し前まではサーバーレスでの制約がネックになって、開発案件で採用できるのは一部のちょっとした処理が中心になりがちでしたが、Azure Functions のアップデート内容を見ると、かなり状況が変わってきていると感じました。コンテナ、Kubernetes なども含め、それぞれの強みを活かして、適切に組み合わせていくのは当たり前のことではありますが、ビジネスの世界では割と見逃されがちな点ではないでしょうか。(流行ってるからとか、とにかく運用コストを下げたいからの一点で「サーバーレス採用!」みたいな・・・)

KEDA は既に Kubernetes で運用されているワークロードがあると、選択肢として検討してみたいと思いました。それにしても、Kubernetes エコシステムの進化がすごいスピードで進んでいて、ちょっと目を離すと「何それ?」状態ですが、変化を楽しんでやっていきたいですね!

STI 水倉

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*