Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[Serverless.ts]Azure Container Appsを使ってみよう!
Search
Taishi Miyata
October 27, 2024
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[Serverless.ts]Azure Container Appsを使ってみよう!
Taishi Miyata
October 27, 2024
More Decks by Taishi Miyata
See All by Taishi Miyata
GlobalAzure@Kansai Microsoft Foundryで構築する AIエージェント開発最前線
teshi22
0
180
[ServerlessMeetupOsaka#2] AzureServerlessで作るコスパ最強RAGシステム構築
teshi22
5
1.4k
【AOAIドーナツ本出版記念】AzureでのChatGPT活用入門【基本から周辺サービスまで解説】
teshi22
2
1.6k
Featured
See All Featured
The browser strikes back
jonoalderson
0
1.4k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
470
Designing Experiences People Love
moore
143
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
390
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
For a Future-Friendly Web
brad_frost
183
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
How to Ace a Technical Interview
jacobian
281
24k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
220
Scaling GitHub
holman
464
140k
Transcript
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がデファクトスタンダード
4 コンテナの特徴 仮想マシンと比べて、コンテナはホ ストOSのカーネルを共有するため、 オーバーヘッドが少なく、リソース 消費が少ない 一度コンテナ内にアプリケーション をパッケージ化すれば、どの環境で も一貫して同じ動作を保証 コンテナは軽量なため、短時間で多
くのコンテナを起動して、アプリ ケーションをスケールさせることが 容易 ①軽量 ②移植性 ③スケーラビリティ ゲストOS ミドルウェア アプリ 仮想マシン ミドルウェア アプリ コンテナ ホストOS1 コンテナエンジン ミドルウェア アプリ コンテナ ホストOS2 コンテナエンジン ミドルウェア アプリ ホストOS1 コンテナエンジン ミドルウェア アプリ コンテナ 大規模なWebアプリーケーションの実行環境としてコンテナを使いた い場合、バージョン管理やスケーリング・モニタリングが必要! ->コンテナオーケストレーションであるKubernetesが有名 ミドルウェア アプリ ミドルウェア アプリ
5 Kubernetesとは? コンテナのデプロイ・スケール・管理を行うためのオープンソースプラットフォーム コンテナ コンテナ Pod Worker Node コンテナ コンテナ
Pod Worker Node コンテナ コンテナ Pod Worker Node Master Node APIサーバ 状態管理 スケジューラ コントローラ Kubernetesクラスター 自動スケーリング: トラフィックや負荷に応じて、コン テナの数を自動で増減させることができます 自己修復: 障害が発生したコンテナを検出し、自動的に 再起動したり、他の正常なコンテナに処理を引き継がせ る機能があります サービスディスカバリとロードバランシング: コンテナ がどこで実行されているかを自動的に検出し、ユーザー のリクエストを適切なコンテナに振り分けることで、負 荷を均等に分散させます。 ローリングアップデートとロールバック: アプリケー ションの新しいバージョンをサービスを停止することな く徐々にデプロイでき、問題があれば簡単に元に戻すこ とができます アーキテクチャ 特徴 ・コンテナを大規模アプリケーションで使う仕組みは分 かったがkubernetes周りの運用・管理がめんどくさい! ・コンテナの開発に集中したい! Azure Container Appsを使おう!
Azure Container Apps 一般提供 マイクロサービス向けのサーバーレス コンテナー オープン ソースによるモダン アプリの構築 インフラストラクチャではなくアプリに専念
イベントに応じた動的なスケーリング Envoy Kubernetes KEDA DAPR
Azure Container Apps で構築できるもの 自動スケーリングの条件 スケーリングは 同時 HTTP リクエスト数によって 決定
スケーリングは CPU またはメモリの 負荷レベルによって決定 個々のマイクロサービスが KEDA スケール トリガーを使用し て単独でスケーリングできること スケーリングは 同時 HTTP リクエスト数によって 決定 スケーリングは キューのメッセージ数によって 決定 パブリック API エンドポイント バックグラウンド 処理 マイクロサービス Web アプリ イベント駆動型の 処理 例: アプリの 2 つのリビジョン に HTTP リクエストを分配す る API アプリ 例: データベースのデータを変換する バックグラウンド プロセスの継続実行 Dapr との連携を選択できる マイクロサービス アーキテクチャ 例: カスタム ドメイン、TLS 証明 書、統合認証を使用する Web アプリ HTTP トラフィック リビジョン 2 リビジョン 1 80% 20% マイクロサービス B マイクロサービス C マイクロサービス A 例: キューに届いたメッセージを 処理するキュー リーダー アプリ
8 Azure Container Registry デモの構成 簡単なチャットボットをAzure Container Appsにデプロイする Azure Azure
Container Apps アプリ Streamlit イメージ Docker 開発PC ソースコード イメージ Docker ①ビルド ②プッシュ ③デプロイ ④確認 Azure OpenAI GPT-4o チャットボットの画面
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
10 スケーリング 最小レプリカ数を0にすることでサーバレスコンテナを実現可能
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
12 まとめ ◼ コンテナを使うメリット 軽量・移植性・スケーラビリティ バージョン管理やスケーリング・モニタリングの仕組みが必要 ◼ Kubernetesの登場
コンテナのデプロイ・スケール・管理を行う kubernetesは運用管理が複雑 ◼ Azure Container Apps マイクロサービス向けのサーバレスコンテナサービス コンテナの開発に集中できる ゼロスケールが可能なためコスト効率が良い
13 Thank you