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
Azure Serverless のパフォーマンスとコストを 最適化
Search
Tatsuro Shibamura
PRO
April 20, 2024
Technology
14
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Azure Serverless のパフォーマンスとコストを 最適化
Tatsuro Shibamura
PRO
April 20, 2024
More Decks by Tatsuro Shibamura
See All by Tatsuro Shibamura
AI Agent を本番環境へ―― Microsoft Foundry × Azure Serverless で作る Enterprise-Ready な基盤
shibayan
PRO
2
1.2k
Azure Cosmos DB パフォーマンス最適化入門 - 設計・開発・運用の実践テクニック
shibayan
PRO
0
570
Microsoft Azure で実現する最新クラウドアーキテクチャ
shibayan
PRO
0
22
Hack Azure! #5 - Geek of Azure Serverless
shibayan
PRO
0
140
.NET Conf 2020 Online - .NET 5 リリース記念パーティートーク
shibayan
PRO
0
10k
Terraform Provider for Azure に貢献してみた話
shibayan
PRO
0
660
Azure Functions と SendGrid の良い関係
shibayan
PRO
0
1.3k
Azure Serverless を活用したリアルタイム Web のすべて
shibayan
PRO
1
3.1k
祝 東日本リージョン一般提供! Azure Application Insights 基礎と実践
shibayan
PRO
1
42k
Other Decks in Technology
See All in Technology
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
2
950
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
220
Flutterをカメラで動かしたかった話
sony
1
140
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
790
PLATEAU で バーチャル花火大会
tatsuya1970
0
160
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
580
猫付きpingコマンドを自作
uyuki234
0
240
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
260
Genie Codeハンズオン基礎編
taka_aki
1
120
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
13
13k
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
120
システム思考で問題に対処する
yussak
0
290
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
480
Between Models and Reality
mayunak
4
390
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
119
120k
Designing for Performance
lara
611
70k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Leo the Paperboy
mayatellez
8
2.1k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
910
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
Ruling the World: When Life Gets Gamed
codingconduct
0
300
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
250
Ethics towards AI in product and experience design
skipperchong
2
340
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Transcript
Azure Serverless のパフォーマンスとコストを 最適化 Global Azure 2024 in Fukuoka Tatsuro
Shibamura @shibayan
私について 芝村 達郎 @shibayan ZEN Architects Distinguished Engineer Microsoft MVP
for Microsoft Azure Microsoft Top Partner Engineer Award Blog : https://blog.shibayan.jp GitHub : https://github.com/shibayan
Azure が 2024 年 4 月から約 20% 値上げ
None
20% 値上げの衝撃は思ったより大きい 個人で使ってる Microsoft 365 Personal も値上げされてた
None
コストは下げたい、しかし節約はしたくな い 必要な場面ではちゃんとコストをかけるのが重要
どのような手順でコストを最適化するとよ いのか 失敗例:いきなりアプリケーションの構成を変える
コスト最適化には正しい手順がある 使われていない、不要なリソースを特定し削除する リソースの設定を変更し、パフォーマンスを改善する 過剰に割り当てられているリソースを適切なサイズに変更、集約する アプリケーションを改善する コンピューティングのリザーブドインスタンスを購入する アーキテクチャレベルから再設計する
Azure Serverless のリソース単価は割高な設定 素の VM と比べると機能が多く、付加価値が乗っている 内部では複数のサービスが使われているのでその分のコストが乗る 例: App Service
は VMSS x 2 / SQL DB / Storage / File Server など 上手く利用すると管理・運用コストは劇的に下がる 一番高額な人間のコストを下げられる 単価が高いからと言って PaaS / Serverless を避けるのは間違っている
不要なリソースの特定と削除 意外に検証用のリソースが大量に残っているケースが多い 各々が作りっぱなしで放置されたリソースグループ オーナーや作成した経緯が不明なリソースも多い 孤立してしまった App Service Plan などが代表例 環境ごとにサブスクリプションを分けると把握しやすい
Cost Analysis を利用すると特定が簡単
サブスクリプションを環境ごとに分けて運用 検証・開発・本番の環境向けにサブスクリプションを用意する RBAC を使ったアクセス制限、コストの把握がしやすい 開発向けでは Dev / Test サブスクリプションを使うことも検討したい コンピューティング系リソースのコストが大幅に割り引かれる
EA 契約の場合はやりやすい、はず
リソースの定期的な棚卸は重要、運用変更 も検討 不要なリソースの削除だけで 20% 削減を達成することも
リソースの設定変更でパフォーマンスを改善 App Service / Azure Functions Session Affinity を無効化する HTTP/2
の有効化を検討する 可能な場合は Linux の App Service Plan を利用する Cosmos DB Burst Capacity を有効化する Dynamic Scaling Per Region and Per Partition の有効化を検討する Front Door キャッシュを有効化する HTTP 圧縮を有効化する
PaaS / Serverless は設定が多い 提供する機能が多いので、その分だけ設定値も多くなっている 適切な設定になっていないことも多々ある 設定値が多いので IaC の導入が必須 アップデートで随時パフォーマンス、コスト最適化に役立つ機能が追加
キャッチアップが重要になってくる 公式のアナウンス、ブログ(ブチザッキなど)を参照する
設定の変更だけで改善するものは確実に利 用する 特に Cosmos DB については忘れずに有効化しておきたい
リソースの適切なサイジングを行う 漠然とした不安から過剰なリソースを割り当ててしまうケースが多い 1 つの App Service Plan に 1 つだけ
Web App / Azure Functions を載せる Cosmos DB の RU 設定を多めにプロビジョニングする インスタンス数、サイズを過剰に割り当ててしまう。など Azure Monitor を利用して、過剰にリソースを割り当てていないか確認 PaaS / Serverless はスケーリングが自由 オートスケールを活用する
Azure でやってしまいがちな構成 App Service / Azure Functions App Service Plan
を数多く作ってしまっている 古い SKU を利用し続けている スケールアップとスケールアウトのどちらが適切かを見誤る Cosmos DB Database Provisioned Throughput を使っていない Provisioned Throughput で大きな RU を割り当てている Front Door (Standard / Premium) Endpoint を使わずに Front Door をたくさん作っている
Azure でやってしまいがちな構成(改善策) App Service / Azure Functions スケールによっては App Service
Plan の集約を検討する 本番では Premium V3 (P0v3)、開発・検証では Basic の利用を検討する コア数を増やすより、インスタンス数を増やした方が良いケースもある Cosmos DB 25 コンテナーまでは RU を共有できる 一定のリクエストがある場合以外はオートスケールの利用を検討する Front Door (Standard / Premium) Endpoint は複数作っても課金されないためお得
Azure の特徴を生かして柔軟なリソース割 り当て デプロイの早いサービスを使っていれば間違いない
アプリケーションのコードを改善する 最新のランタイム、フレームワークを利用するように書き換える 特に .NET へのアップデートは効果的 コンピューティング系のコア数を大きく減らせる可能性 Azure SDK も最新バージョンを使うようにする 信頼性とパフォーマンス改善のアップデートが継続的に行われている
最新の PaaS / Serverless 機能を使うために必須なことも
APM を使ってパフォーマンスを継続的に改善する アプリケーション実装に問題があれば Azure のコストは上がる アプリケーションのパフォーマンス改善はコスト削減とイコール Application Insights を有効化して、コード内のボトルネックを特定し改善する 本番環境では確実に有効化しておきたい
非効率なクエリ実行や、過剰な外部依存関係の呼び出しが発生していることも Application Insights を使うと可視化される
アプリケーション側のチューニングから逃 げない ランタイム、フレームワークのアップデートは特に逃げないように する
リザーブドインスタンスを購入する(最終段階) 適切なリソースが確定しないとリザーブドインスタンスを買いにくい 余計な分まで購入するのは無駄になる(返金は出来るが…) 常に使われるリソース分だけを購入して、超える分はオートスケールで対応 一通りの最適化をやり切った後に購入するのを推奨 手っ取り早いのでコストカットの観点では選び勝ち Azure Storage のような容量に対しては早めに購入する価値がある
リザーブドインスタンスの対象となるリソース App Service (Web Apps / Azure Functions) Premium V3
/ Isolated V2 (ASE) のみ対象 Cosmos DB Provisioned Throughtput が対象 ストレージサイズは対象外 Azure Storage ストレージ容量が対象
早いリザーブドインスタンス購入は問題の 先送り コストを正確に把握して最適化した後に購入する
アーキテクチャレベルから再設計する 現在のアーキテクチャでは最適化の限界にぶつかることがある RDB や偽 PaaS と言っても良いサービスを多用した構成 Azure に最適化されておらず、オンプレのような構成と言える Azure のサービスに最適化しないとコスト効率が下がる
要件をまとめて、アーキテクチャから再設計する オンプレと同じ使い方をすると高くなるのは当然
Lift and Shift は幻想、Azure に特化した設 計を 仮想マシンを売りたい、使いたい人のセールストークに騙されては いけない
再掲 : コスト最適化には正しい手順がある 使われていない、不要なリソースを特定し削除する リソースの設定を変更し、パフォーマンスを改善する 過剰に割り当てられているリソースを適切なサイズに変更、集約する アプリケーションコードを改善する コンピューティングのリザーブドインスタンスを購入する アーキテクチャレベルから再設計する
ご清聴ありがとうございました