Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Azureクラウドネイティブスタックで、すばやく最大限の価値を提供――サービス選択のポイントは? 【デブサミ2019】

【15-C-2】デベロッパーのためのAzureクラウドネイティブスタック 〜 提供したい価値からはじめる高速+高可用+高付加価値ソリューション

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/03/20 12:00

目次

オブザーバビリティを実現し、データストアに伴う複雑化を解決するサービス

 高まる抽象化、アプリケーションのマイクロサービス化に伴い、プラットフォームだけではなくアプリを含めた全体ステートの把握、つまりオブザーバビリティ(可観測性)が重要になっている。「可観測性はモニタリング、ロギング、トレーシング、ビジュアライゼーションといった要素で構成され、それぞれを実現するツールも登場している。しかし、オブザーバビリティを実現するには、ツールを組み合わせる必要があるため、当然複雑なものとなる。それに伴うコストなどが増大してしまう問題がある」と川崎氏。

 こういったオブザーバビリティに関する問題を解決してくれるのが、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実行が可能になる。

Vitual Nodeを使用し、AKSクラスタからACI実行する
Vitual 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を使うと見通しが良くなり、読みやすい形で実現できるところがメリットだ」と川崎氏は紹介する。

Durable Functionsを使うと見通しが良くなり、可読性が上がる
Durable Functionsを使うと見通しが良くなり、可読性が上がる

 最後に、川崎氏は次のように語り、セッションを締めた。

 「技術やアーキテクチャを適材適所で選択して、最大限の付加価値を創造しよう。空いた時間を新たなイノベーションに使おう。何よりも楽しいことに費やしていこう」

お問い合わせ

 日本マイクロソフト株式会社



  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:【デブサミ2019】セッションレポート

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5