オブザーバビリティを実現し、データストアに伴う複雑化を解決するサービス
高まる抽象化、アプリケーションのマイクロサービス化に伴い、プラットフォームだけではなくアプリを含めた全体ステートの把握、つまりオブザーバビリティ(可観測性)が重要になっている。「可観測性はモニタリング、ロギング、トレーシング、ビジュアライゼーションといった要素で構成され、それぞれを実現するツールも登場している。しかし、オブザーバビリティを実現するには、ツールを組み合わせる必要があるため、当然複雑なものとなる。それに伴うコストなどが増大してしまう問題がある」と川崎氏。
こういったオブザーバビリティに関する問題を解決してくれるのが、Azure Monitor for containersだ。「Azure Monitor for containersを有効化することで、ログやメトリックの収集を自動で行うだけではない。リテンションの管理、ログの検索なども自動で行われるため、オブザーバビリティのために余分なコストをかける必要がなくなる。本業のビジネスに集中したい人にとっては、欠かせないモニタリングツールだ」と川崎氏は言う。
クラウドネイティブになると、データストアの活用も重要になる。なぜなら、コンテナアプリケーションとデータのライフサイクルは異なるからだ。コンテナはデプロイ単位でライフサイクルが終了する。つまりコンテナ起動中に保持したデータは消える。したがってデータを永続化する必要があり、その対応策としては、次の2つが考えられる。1つはコンテナのホストOS側にデータを保存する。もう1つは外のストレージやデータストアに保存する方法だ。
では、Kubernetesでのステートフルワークロードに対応するにはどうすれば良いか。川崎氏のおすすめは、弾力性や回復性をネイティブに備えているPaaSを利用することだという。「PaaSを利用することで、デプロイメントや運用管理の単純化を実現できる」と川崎氏。主にステートレスワークロードをAKSで展開し、ステート・永続化データ対応はステートフルワークロード専用PaaSと連携するという、ワークロードに応じた良いところ取り戦略が得策だというのである。
もう1つ、広域災害対策を意識するのであれば、データをKubernetesに置かず、外に持つ方法が有用だ。「詳しくは『しくみがわかるKubernetes Azureで動かしながら学ぶコンセプトと実践知識』という書籍を読んでほしい」と語り、クラスタレス、ノードレスコンテナの話題へと移った。
通常、Kubernetesを動かすときはクラスタの作成が必要となる。しかし「Azure Container Instances(ACI)」であれば、クラスタは必要なく、コンテナ1つから使える。ACIはマイクロソフトがウォームアップしたサーバインスタンスを用意しており、コンテナを動かすために必要なメモリの量を投げかけるだけで、高速にスタートアップできる。
「ロードテストや大量エンコーディングなど瞬発的なものや、予測可能なバースト型のワークロードで使用することに適している」(川崎氏)
またKubernetesクラスタから外部サービスをプラグインとして利用可能にするOSSプロジェクト「Virtual Kubelet」とACIを組み合わせることで、VMおよびACI上で動作するPodをシームレスに渡すKubernetesサービスを構築できる。つまりVirtual Nodeを使用したAKSクラスタからのACI実行が可能になる。
これはHPA(Podを横にオートスケール)、VPA(PodのResource allocationをスケール)、CA(ノードの数をスケール)のほか、Virtual NodeのPodを外部メトリックに、横にスケールする「Virtual Node Autoscaler(名前がないので川崎氏が勝手に名付けたとのこと)」に応用できるという。
例えば、Prometheus Metric Adapterを利用し、Virtual NodeのPodをメトリックに応じて自動スケールさせることができる。デモでは、Virtual NodeのPodを50個、手動スケールさせてその立ち上がりの速さとスケール能力のデモを実施し、その可能性を示した。
技術やアーキテクチャは適材適所で選択しよう
最後はサーバレス(FaaS)について。FaaSは高度な抽象化、イベントドリブンで自動スケール、使った分だけ細かく課金できるといった特徴を持つ。そのため、FaaSは小さいコードやステートレス(毎回作って実行する)、短時間で終わる処理に向いている。「非常に大きなメリットが得られる適用領域がある」と川崎氏は次の例を挙げた。それがWebやモバイルアプリのバックエンド、大量統計情報のストリーム処理やアップロードされたファイル解析などのリアルタイム処理、Webbookによる疎な連携などだ。
もちろん、ロングランニング処理、ステートフルな処理に弱かったり、複雑化しやすいといった問題もある。だが、FaaSにも新しいパラダイムが登場している。それがAzure Functions拡張機能で提供している「Durable Functions」だ。
サーバレス環境でステートフル関数を記述できるプログラミングモデル。このモデルを使用すると、オーケストレーター関数を使用してステートフルワークフローを定義できるようになる。「Durable Functionsを使うと見通しが良くなり、読みやすい形で実現できるところがメリットだ」と川崎氏は紹介する。
最後に、川崎氏は次のように語り、セッションを締めた。
「技術やアーキテクチャを適材適所で選択して、最大限の付加価値を創造しよう。空いた時間を新たなイノベーションに使おう。何よりも楽しいことに費やしていこう」
お問い合わせ
日本マイクロソフト株式会社