20.3K Views
April 14, 24
スライド概要
2024/04/13 第2回 Azure Travelers 勉強会 神戸の旅 の登壇資料です
コンテナ使うならAzureで決まり! 個人的推しサービスの Azure Container Appsを語る 2024/04/13 第2回 Azure Travelers 勉強会 神戸の旅 Shunsuke Yoshikawa
Shunsuke Yoshikawa X: @ussvgr Technical Evangelist @ AP Communications Organizer @Platform Engineering Meetup Microsoft MVP (Microsoft Azure) 2023~
I’m Azure Traveler! 愛知県から来ました © OpenStreetMap contributors
皆さんにとってAzureと言えば? 最近の風潮からして、やっぱりAI? Microsoft自身も "Microsoft is the Copilot Company" って言ってたりする
私にとってのAzure Azureと言えば コンテナ です! ● ● ● Web App for Containers, Azure Container Apps, Azure Kubernetes Serviceなど選択肢が豊富 Kubernetesのオリジナル開発者の1人、Brendan Burnsが在籍 AKSにWASM対応追加したり、マルチクラスタ管理のFleet Managerなど 意欲的な機能追加をバシバシやってる みんな大好きOpenAI社もAzure Kubernetes Service使ってるらしいですよ
Azure上の代表的なコンテナサービス Azure Kubernetes Service Azure Container Apps Web App for Containers 難易度 高 中 小 自由度 高 中 小 ※個人の見解です
「ちょうどいい」サービス Azure Kubernetes Service Azure Container Apps Web App for Containers 難易度 高 中 小 自由度 高 中 小 ※個人の見解です
ここまで前置き 「ちょうどいい」サービス、Azure Container Apps(ACA) が個人的に一推し! そんな推しサービスの推しポイントを語るというのが本セッションの内容です。 Q. AIの本場に来てるのにAIの話しないの? A. もっと詳しい人たちが話してくれると思うので…
ACA 概要
フルマネージドなKubernetesサービス ACA は Azure Kubernetes Service(AKS) と同じく Kubernetes をベースにしたサービス AKS と ACA の大きな違いは、ACAは「フルマネージド」であること Kubernetes の API にユーザーがアクセスすることはできないが、 その代わりに面倒な管理部分はすべてMicrosoft がやってくれる ノードのキャパシティ管理やKubernetes のバージョンアップなどに悩まされることなく アプリケーションの開発・運用に注力できる
2つのリソース ACAは Container Apps 環境 コンテナー アプリ の2つのリソースで構成される Container Apps 環境 は ネットワークやログの保管先などを定義する論理的な境界 コンテナー アプリ は 実際に稼働させるアプリケーションコンテナーの リソースを指す 引用元: Azure Container Apps のコンテナー
Azure の中でもモダンな構成 2022年に GA したサービスということもあり、インフラ的に使いやすい構成になっている ● VNet内に配置可能 ● インターネット上に公開、VNet内にのみ公開のどちらのパターンも可 ● 可用性ゾーン対応 ● マネージド ID 利用可能 ● 開発ロードマップが GitHub で公開されている https://github.com/orgs/microsoft/projects/540
ここが凄いぞACA
お財布に優しい料金プラン コンテナに割り当てたvCPU コア数と メモリ量に応じた秒単位での課金 Azureのサービスには珍しく、アイドル時にはvCPU の費用が下がる 使ってないときは 0個にスケールインして課金を止めることもできる 無料枠もそこそこある(180,000 vCPU 秒 , 360,000 GiB 秒) 特に小規模なアプリケーションをホストする時にはこれらの特徴はグッとくるはず 去年から Savings Plan の対象にもなったので、組み合わせれば更にお安く
多様なワークロードに対応 引用元: Azure Container Apps の概要 | Microsoft Learn
Webアプリケーション・APIの実行基盤として ● ● ● ● ● 標準でTLS対応 マネージド証明書が無料で提供されるので、有効期限の管理いらず HTTPリクエスト数に応じてコンテナの数をスケーリングできる リクエストがないときはコンテナを0個にスケールインしてコストを抑えられる 2つのバージョンのコンテナアプリケーションを同時に動かせる ○ ○ ● Blue / Green デプロイしたり カナリアリリースしたり 認証(EasyAuth)も利用可能
バックグラウンド処理の実行基盤として Webアプリケーションのように継続して起動し続けるものだけでなく、 一連の処理を実行したらそのまま終了するようなジョブ型のアプリケーションも実行可能 Cron式で起動時間を指定できるので、 夜間バッチ処理や月次処理のようなジョブの実行基盤としてACAを利用できる
イベントドリブンアプリケーションの実行基盤として KEDA (Kubernetes Event Driven Autoscaling) が組み込まれており、 多様な イベントの発生 をトリガーにしてコンテナを起動できる ● ● ● Blob Storage にデータが配置された Service Bus キューにメッセージが格納された Event Hub からイベントを受信した
イベントドリブン応用編 KEDAが対応しているイベントには Azure Pipelines / GitHub Actions のジョブキューも含まれる これを利用して、 Azure Pipelines / GitHub Actions のセルフホステッドエージェント/ランナーをACA上で動かせる コンテナならではの制約はあれど、 仮想ネットワーク内で実行でき、使った分だけの従量課金で済むのでけっこう便利 チュートリアル :Azure Container Apps ジョブを使用してセルフホスト型 CI/CD ランナーとエージェントをデプロイする
イベントドリブンならAzure Functionsでよくね? 実はACA上で コンテナ化したFunctionsを動かせる (Azure Functions on Azure Container Apps) Functions特有のトリガー・バインディングでコード記述量減らしたいならFunctionsで、 Azureに慣れてなくて汎用的なコード書きたいなら通常のコンテナアプリケーションとして、 どちらでも対応できる懐の広さ
Dockerfileなしでもアプリを動かせる 通常コンテナアプリケーションを起動するには、 Dockerfileを書いてビルドしてコンテナイメージを作って…という手順が必要 ACA では Buildpack というOSSのコンテナビルドツールを利用して Dockerfileなしでもいい感じにコンテナイメージを作ってアプリケーションを起動できる C#, Java, Javascript, Python, Go に対応している模様 個人的にはプロダクションで使うならDockerfileは書く派だけど、 手元のコードをパッと動かしたいときには便利な選択肢 クイックスタート: ローカル ソース コードから Azure Container Apps へのビルドとデプロイを行う
アドオン機能でデータベースを利用できる OSSの PostgreSQL や Redis を Container Apps環境内で起動してアプリケーションからアクセスできる あくまで非運用環境向けの提供で本番環境では使えないものの、 開発用途で利用するのであれば Azure Database for PostgreSQL や Azure Cache for Redis より低コストでお手軽に利用可能 他のコンテナと同様0スケールもできるし、 ストレージにデータを保管してくれるので0スケール後再起動してもデータは保持される
監視まわり メトリックは Azure Monitor で取得できる AKSと比べると、ノードのメトリックを気にしなくてもよいので、 アプリケーションコンテナのメトリックのみに集中できてわかりやすい ログは標準で Log Analytics ワークスペースに出力する 基盤側のシステムログとコンテナのログがそれぞれ別テーブルに保存される コンテナ側では stdout/stderr にログを吐いておけば収集できる
最近のアップデート
OpenTelemetry サポートの追加(プレビュー) Container Apps 環境内に OpenTelemetryエージェントを構成することにより、 監視データを OpenTelemetry 形式で送信可能 Application Insights OpenTelemetry SDK OpenTelemetry エージェント Datadog
Vector Database add-on のサポート(プレビュー) データベースを環境内に作成できるアドオン機能に、 OSSのベクターストアが追加された 利用できるのは以下の3種 ● ● ● Qdrant Milvus Weaviate
ちょっと AI 関連っぽい話
最近 YouTube でこんな動画が公開されててな 引用元: Build a multi-LLM chat application with Azure Container Apps
Azure Container Apps に LLM Chat アプリをデプロイ 引用元: Build a multi-LLM chat application with Azure Container Apps
GitHub で公開されている 引用元: https://github.com/simonjj/multi-llm-chat
まとめ
私の推し 多様なユースケースに使える、ステキサービスAzure Container Appsの紹介でした みんなも好きになってくれるとうれしいな
ご清聴ありがとうございました