Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[Serverless.ts]Azure Container Appsを使ってみよう!

Taishi Miyata
October 27, 2024
27

[Serverless.ts]Azure Container Appsを使ってみよう!

Taishi Miyata

October 27, 2024
Tweet

Transcript

  1. 1 Event name or presentation title Serverless.ts Azure Container Appsを使ってみよう!

    Data & AI Cloud Solution Architect Taishi Miyata 2024/10/26
  2. 3 コンテナとは アプリとその依存関係をまとめて、環境に依存せず動作させるための仮想化技術 物理サーバー ホストOS ハイパーバイザー ゲストOS ミドルウェア アプリ 一般的な仮想化技術

    コンテナ 仮想マシン ゲストOS ミドルウェア アプリ 仮想マシン ゲストOS ミドルウェア アプリ 仮想マシン 物理サーバー ホストOS コンテナエンジン※ ミドルウェア アプリ コンテナ ミドルウェア アプリ コンテナ ミドルウェア アプリ コンテナ ※Dockerがデファクトスタンダード
  3. 4 コンテナの特徴 仮想マシンと比べて、コンテナはホ ストOSのカーネルを共有するため、 オーバーヘッドが少なく、リソース 消費が少ない 一度コンテナ内にアプリケーション をパッケージ化すれば、どの環境で も一貫して同じ動作を保証 コンテナは軽量なため、短時間で多

    くのコンテナを起動して、アプリ ケーションをスケールさせることが 容易 ①軽量 ②移植性 ③スケーラビリティ ゲストOS ミドルウェア アプリ 仮想マシン ミドルウェア アプリ コンテナ ホストOS1 コンテナエンジン ミドルウェア アプリ コンテナ ホストOS2 コンテナエンジン ミドルウェア アプリ ホストOS1 コンテナエンジン ミドルウェア アプリ コンテナ 大規模なWebアプリーケーションの実行環境としてコンテナを使いた い場合、バージョン管理やスケーリング・モニタリングが必要! ->コンテナオーケストレーションであるKubernetesが有名 ミドルウェア アプリ ミドルウェア アプリ
  4. 5 Kubernetesとは? コンテナのデプロイ・スケール・管理を行うためのオープンソースプラットフォーム コンテナ コンテナ Pod Worker Node コンテナ コンテナ

    Pod Worker Node コンテナ コンテナ Pod Worker Node Master Node APIサーバ 状態管理 スケジューラ コントローラ Kubernetesクラスター 自動スケーリング: トラフィックや負荷に応じて、コン テナの数を自動で増減させることができます 自己修復: 障害が発生したコンテナを検出し、自動的に 再起動したり、他の正常なコンテナに処理を引き継がせ る機能があります サービスディスカバリとロードバランシング: コンテナ がどこで実行されているかを自動的に検出し、ユーザー のリクエストを適切なコンテナに振り分けることで、負 荷を均等に分散させます。 ローリングアップデートとロールバック: アプリケー ションの新しいバージョンをサービスを停止することな く徐々にデプロイでき、問題があれば簡単に元に戻すこ とができます アーキテクチャ 特徴 ・コンテナを大規模アプリケーションで使う仕組みは分 かったがkubernetes周りの運用・管理がめんどくさい! ・コンテナの開発に集中したい! Azure Container Appsを使おう!
  5. Azure Container Apps で構築できるもの 自動スケーリングの条件 スケーリングは 同時 HTTP リクエスト数によって 決定

    スケーリングは CPU またはメモリの 負荷レベルによって決定 個々のマイクロサービスが KEDA スケール トリガーを使用し て単独でスケーリングできること スケーリングは 同時 HTTP リクエスト数によって 決定 スケーリングは キューのメッセージ数によって 決定 パブリック API エンドポイント バックグラウンド 処理 マイクロサービス Web アプリ イベント駆動型の 処理 例: アプリの 2 つのリビジョン に HTTP リクエストを分配す る API アプリ 例: データベースのデータを変換する バックグラウンド プロセスの継続実行 Dapr との連携を選択できる マイクロサービス アーキテクチャ 例: カスタム ドメイン、TLS 証明 書、統合認証を使用する Web アプリ HTTP トラフィック リビジョン 2 リビジョン 1 80% 20% マイクロサービス B マイクロサービス C マイクロサービス A 例: キューに届いたメッセージを 処理するキュー リーダー アプリ
  6. 8 Azure Container Registry デモの構成 簡単なチャットボットをAzure Container Appsにデプロイする Azure Azure

    Container Apps アプリ Streamlit イメージ Docker 開発PC ソースコード イメージ Docker ①ビルド ②プッシュ ③デプロイ ④確認 Azure OpenAI GPT-4o チャットボットの画面
  7. 9 デモのコマンド ◼ ローカル実行  streamlit run app.py ◼ コンテナ実行

     docker build -t streamlit .  docker run -p 8501:8501 streamlit ◼ Azure Container App  az containerapp up --name chatbot-20241026 --source . --ingress external --resource-group rg-chatbot-20241026 -- location japaneast
  8. 11 [ご参考]Azureのコンテナ実行サービス Azureでのコンテナ実行基盤サービスは用途に合わせて複数のサービスから選択が可能 IaaS CaaS Azure Kubernetes Services Linux Win

    ノード k8s Azure Container Instance Linux Win 利用量 App Services (Web Apps) Linux Win ノード 独自 Azure Container Apps Linux 利用量 k8s Functions Linux ノード 利用量 独自 Virtual Machine Linux Win ノード Linux Win ノード 利用量 独自 k8s 参考:Azure コンピューティング サービスを選択する https://learn.microsoft.com/ja-jp/azure/architecture/guide/technology-choices/compute-decision- tree
  9. 12 まとめ ◼ コンテナを使うメリット  軽量・移植性・スケーラビリティ  バージョン管理やスケーリング・モニタリングの仕組みが必要 ◼ Kubernetesの登場

     コンテナのデプロイ・スケール・管理を行う  kubernetesは運用管理が複雑 ◼ Azure Container Apps  マイクロサービス向けのサーバレスコンテナサービス  コンテナの開発に集中できる  ゼロスケールが可能なためコスト効率が良い