コンテナ使うならAzureで決まり!個人的推しサービスのAzure Container Appsを語る_

10.8K Views

April 14, 24

スライド概要

2024/04/13 第2回 Azure Travelers 勉強会 神戸の旅 の登壇資料です

profile-image

SIer所属のインフラ屋さんです

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

コンテナ使うならAzureで決まり! 個人的推しサービスの Azure Container Appsを語る 2024/04/13 第2回 Azure Travelers 勉強会 神戸の旅 Shunsuke Yoshikawa

2.

Shunsuke Yoshikawa X: @ussvgr Technical Evangelist @ AP Communications Organizer @Platform Engineering Meetup Microsoft MVP (Microsoft Azure) 2023~

3.

I’m Azure Traveler! 愛知県から来ました © OpenStreetMap contributors

4.

皆さんにとってAzureと言えば? 最近の風潮からして、やっぱりAI? Microsoft自身も "Microsoft is the Copilot Company" って言ってたりする

5.

私にとってのAzure Azureと言えば コンテナ です! ● ● ● Web App for Containers, Azure Container Apps, Azure Kubernetes Serviceなど選択肢が豊富 Kubernetesのオリジナル開発者の1人、Brendan Burnsが在籍 AKSにWASM対応追加したり、マルチクラスタ管理のFleet Managerなど 意欲的な機能追加をバシバシやってる みんな大好きOpenAI社もAzure Kubernetes Service使ってるらしいですよ

6.

Azure上の代表的なコンテナサービス Azure Kubernetes Service Azure Container Apps Web App for Containers 難易度 高 中 小 自由度 高 中 小 ※個人の見解です

7.

「ちょうどいい」サービス Azure Kubernetes Service Azure Container Apps Web App for Containers 難易度 高 中 小 自由度 高 中 小 ※個人の見解です

8.

ここまで前置き 「ちょうどいい」サービス、Azure Container Apps(ACA) が個人的に一推し! そんな推しサービスの推しポイントを語るというのが本セッションの内容です。 Q. AIの本場に来てるのにAIの話しないの? A. もっと詳しい人たちが話してくれると思うので…

9.

ACA 概要

10.

フルマネージドなKubernetesサービス ACA は Azure Kubernetes Service(AKS) と同じく Kubernetes をベースにしたサービス AKS と ACA の大きな違いは、ACAは「フルマネージド」であること Kubernetes の API にユーザーがアクセスすることはできないが、 その代わりに面倒な管理部分はすべてMicrosoft がやってくれる ノードのキャパシティ管理やKubernetes のバージョンアップなどに悩まされることなく アプリケーションの開発・運用に注力できる

11.

2つのリソース ACAは Container Apps 環境 コンテナー アプリ の2つのリソースで構成される Container Apps 環境 は ネットワークやログの保管先などを定義する論理的な境界 コンテナー アプリ は 実際に稼働させるアプリケーションコンテナーの リソースを指す 引用元: Azure Container Apps のコンテナー

12.

Azure の中でもモダンな構成 2022年に GA したサービスということもあり、インフラ的に使いやすい構成になっている ● VNet内に配置可能 ● インターネット上に公開、VNet内にのみ公開のどちらのパターンも可 ● 可用性ゾーン対応 ● マネージド ID 利用可能 ● 開発ロードマップが GitHub で公開されている https://github.com/orgs/microsoft/projects/540

13.

ここが凄いぞACA

14.

お財布に優しい料金プラン コンテナに割り当てたvCPU コア数と メモリ量に応じた秒単位での課金 Azureのサービスには珍しく、アイドル時にはvCPU の費用が下がる 使ってないときは 0個にスケールインして課金を止めることもできる 無料枠もそこそこある(180,000 vCPU 秒 , 360,000 GiB 秒) 特に小規模なアプリケーションをホストする時にはこれらの特徴はグッとくるはず 去年から Savings Plan の対象にもなったので、組み合わせれば更にお安く

15.

多様なワークロードに対応 引用元: Azure Container Apps の概要 | Microsoft Learn

16.

Webアプリケーション・APIの実行基盤として ● ● ● ● ● 標準でTLS対応 マネージド証明書が無料で提供されるので、有効期限の管理いらず HTTPリクエスト数に応じてコンテナの数をスケーリングできる リクエストがないときはコンテナを0個にスケールインしてコストを抑えられる 2つのバージョンのコンテナアプリケーションを同時に動かせる ○ ○ ● Blue / Green デプロイしたり カナリアリリースしたり 認証(EasyAuth)も利用可能

17.

バックグラウンド処理の実行基盤として Webアプリケーションのように継続して起動し続けるものだけでなく、 一連の処理を実行したらそのまま終了するようなジョブ型のアプリケーションも実行可能 Cron式で起動時間を指定できるので、 夜間バッチ処理や月次処理のようなジョブの実行基盤としてACAを利用できる

18.

イベントドリブンアプリケーションの実行基盤として KEDA (Kubernetes Event Driven Autoscaling) が組み込まれており、 多様な イベントの発生 をトリガーにしてコンテナを起動できる ● ● ● Blob Storage にデータが配置された Service Bus キューにメッセージが格納された Event Hub からイベントを受信した

19.

イベントドリブン応用編 KEDAが対応しているイベントには Azure Pipelines / GitHub Actions のジョブキューも含まれる これを利用して、 Azure Pipelines / GitHub Actions のセルフホステッドエージェント/ランナーをACA上で動かせる コンテナならではの制約はあれど、 仮想ネットワーク内で実行でき、使った分だけの従量課金で済むのでけっこう便利 チュートリアル :Azure Container Apps ジョブを使用してセルフホスト型 CI/CD ランナーとエージェントをデプロイする

20.

イベントドリブンならAzure Functionsでよくね? 実はACA上で コンテナ化したFunctionsを動かせる (Azure Functions on Azure Container Apps) Functions特有のトリガー・バインディングでコード記述量減らしたいならFunctionsで、 Azureに慣れてなくて汎用的なコード書きたいなら通常のコンテナアプリケーションとして、 どちらでも対応できる懐の広さ

21.

Dockerfileなしでもアプリを動かせる 通常コンテナアプリケーションを起動するには、 Dockerfileを書いてビルドしてコンテナイメージを作って…という手順が必要 ACA では Buildpack というOSSのコンテナビルドツールを利用して Dockerfileなしでもいい感じにコンテナイメージを作ってアプリケーションを起動できる C#, Java, Javascript, Python, Go に対応している模様 個人的にはプロダクションで使うならDockerfileは書く派だけど、 手元のコードをパッと動かしたいときには便利な選択肢 クイックスタート: ローカル ソース コードから Azure Container Apps へのビルドとデプロイを行う

22.

アドオン機能でデータベースを利用できる OSSの PostgreSQL や Redis を Container Apps環境内で起動してアプリケーションからアクセスできる あくまで非運用環境向けの提供で本番環境では使えないものの、 開発用途で利用するのであれば Azure Database for PostgreSQL や Azure Cache for Redis より低コストでお手軽に利用可能 他のコンテナと同様0スケールもできるし、 ストレージにデータを保管してくれるので0スケール後再起動してもデータは保持される

23.

監視まわり メトリックは Azure Monitor で取得できる AKSと比べると、ノードのメトリックを気にしなくてもよいので、 アプリケーションコンテナのメトリックのみに集中できてわかりやすい ログは標準で Log Analytics ワークスペースに出力する 基盤側のシステムログとコンテナのログがそれぞれ別テーブルに保存される コンテナ側では stdout/stderr にログを吐いておけば収集できる

24.

最近のアップデート

25.

OpenTelemetry サポートの追加(プレビュー) Container Apps 環境内に OpenTelemetryエージェントを構成することにより、 監視データを OpenTelemetry 形式で送信可能 Application Insights OpenTelemetry SDK OpenTelemetry エージェント Datadog

26.

Vector Database add-on のサポート(プレビュー) データベースを環境内に作成できるアドオン機能に、 OSSのベクターストアが追加された 利用できるのは以下の3種 ● ● ● Qdrant Milvus Weaviate

27.

ちょっと AI 関連っぽい話

28.

最近 YouTube でこんな動画が公開されててな 引用元: Build a multi-LLM chat application with Azure Container Apps

29.

Azure Container Apps に LLM Chat アプリをデプロイ 引用元: Build a multi-LLM chat application with Azure Container Apps

30.

GitHub で公開されている 引用元: https://github.com/simonjj/multi-llm-chat

31.

まとめ

32.

私の推し 多様なユースケースに使える、ステキサービスAzure Container Appsの紹介でした みんなも好きになってくれるとうれしいな

33.

ご清聴ありがとうございました