SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2019】セッションレポート (AD)

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

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

 こういったオブザーバビリティに関する問題を解決してくれるのが、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を使うと見通しが良くなり、可読性が上がる

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

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

お問い合わせ

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

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2019】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11414 2019/03/20 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング