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
57_.NET___Lambda_のパフォーマンスを最適化する方法.pdf
Search
iwasa
July 14, 2023
0
2.5k
57_.NET___Lambda_のパフォーマンスを最適化する方法.pdf
iwasa
July 14, 2023
Tweet
Share
More Decks by iwasa
See All by iwasa
Amazon Q Detector Library から学ぶセキュアコーディング
tak1wa
0
170
はじめての「さくらのクラウド」
tak1wa
0
220
Azure Native ISV Services「Datadog」
tak1wa
0
350
ブレイクアウトセッションから振り返る AWS re:Invent 2024 SaaS トレンド
tak1wa
0
300
5分でわかる Oracle Database@AWS
tak1wa
0
340
Amazon Q Developer の最新アップデートと SDLC
tak1wa
0
310
Azure アーキテクチャセンターから Microsoft Azure の基本構成を学ぼう
tak1wa
0
860
30分でマスターする SaaS on AWS
tak1wa
0
1.2k
AWSユーザーが知って得するAzureの基本:クラウドスキルの幅を広げる
tak1wa
0
510
Featured
See All Featured
A better future with KSS
kneath
238
17k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
6
310
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Typedesign – Prime Four
hannesfritz
42
2.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
How to train your dragon (web standard)
notwaldorf
96
6.1k
Why Our Code Smells
bkeepers
PRO
336
57k
RailsConf 2023
tenderlove
30
1.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
.NET + Lambda のパフォーマンスを最適 化する方法 2023/7/13 AWS事業本部 岩浅貴大
自己紹介 岩浅 貴大(いわさ) クラスメソッド株式会社 AWS事業本部 コンサルティング部 ソリューションアーキテクト
アジェンダ 1. Lambda と .NET 2. パフォーマンス向上のアプローチ a. .NET バージョンアップ
b. Native AOT c. Lambda のアーキテクチャ 3. パフォーマンス比較 4. まとめ
前置き 【DevelopersIO 2022】.NETアプリケーションのAWS移行 https://youtu.be/Lbax8pgFoEc
Lambda と .NET
AWS Lambda の概要 サーバーレスコンピューティングサービス ❖ イベント駆動型 ❖ サーバーのプロビジョニングや管理が不要 ❖ 実行した時間に応じた従量課金
.NET の概要 マイクロソフトによって開発 ❖ .NET Framework と .NET Core ❖
C#, Visual Basic, F# https://learn.microsoft.com/ja-jp/dotnet/architecture/microservices/net-core-net-framework-containers/net-container-os-targets より
AWS Lambda での .NET サポート • マネージドランタイムで LTS の .NET
6 • カスタムランタイムで STS の .NET 7 https://aws-labs.net/netonaws.html https://aws.amazon.com/developer/language/net/
パフォーマンス向上のアプローチ
.NET バージョンアップ • バージョンアップ ◦ 新機能 ◦ セキュリティ向上 ◦ パフォーマンス向上
Native AOT • Just-In-Time • Ahead-Of-Time ◦ ツールチェーンに組み込まれている
Lambda アーキテクチャ • X86_64 と ARM • .NET の ARM
パフォーマンス改善 https://aws.amazon.com/jp/blogs/news/aws-lambda-functions-powered-by-aws-graviton2-processor-run-your-functions-on-arm-and-get-up-to-34-better-price-performance/
パフォーマンス比較
パフォーマンス比較の前提条件 https://github.com/aws-samples/serverless-dotnet-demo
.NET バージョンごとの比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core
3.1 1004.80 1422.78 6.11 29.40 .NET 6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 8 (Preview) 1476.39 1878.51 6.01 28.94
.NET バージョンごとの比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core
3.1 1004.80 1422.78 6.11 29.40 .NET 6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 8 (Preview) 1476.39 1878.51 6.01 28.94
.NET バージョンごとの比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core
3.1 1004.80 1422.78 6.11 29.40 .NET 6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 8 (Preview) 1476.39 1878.51 6.01 28.94
.NET バージョンごとの比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core
3.1 1004.80 1422.78 6.11 29.40 .NET 6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 8 (Preview) 1476.39 1878.51 6.01 28.94
Native AOT の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET
6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 7 + Native AOT 372.43 581.62 6.77 45.44 .NET 8 + Native AOT 361.79 515.88 6.01 26.31
Native AOT の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET
6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 7 + Native AOT 372.43 581.62 6.77 45.44 .NET 8 + Native AOT 361.79 515.88 6.01 26.31
Native AOT の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET
6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 7 + Native AOT 372.43 581.62 6.77 45.44 .NET 8 + Native AOT 361.79 515.88 6.01 26.31
Native AOT の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET
6 778.74 1470.50 6.41 31.33 .NET 7 1467.56 2423.83 7.16 45.13 .NET 7 + Native AOT 372.43 581.62 6.77 45.44 .NET 8 + Native AOT 361.79 515.88 6.01 26.31
CPUアーキテクチャ別の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core 3.1
- x86 1004.80 1422.78 6.11 29.40 .NET Core 3.1 - ARM 1122.70 1225.92 5.55 19.85 .NET 6 - x86 778.74 1470.50 6.41 31.33 .NET 6 - ARM 873.59 944.42 5.50 19.53
CPUアーキテクチャ別の比較 コールドスタート ウォームスタート p50 p99 p50 p99 .NET Core 3.1
- x86 1004.80 1422.78 6.11 29.40 .NET Core 3.1 - ARM 1122.70 1225.92 5.55 19.85 .NET 6 - x86 778.74 1470.50 6.41 31.33 .NET 6 - ARM 873.59 944.42 5.50 19.53
まとめ
まとめ 1. .NET バージョンは最新のマネージドランタイムを使う 2. Native AOT が使える場合はカスタムランタイムも良い 3. Native
AOT でコールドスタートの速度が改善される 4. ARM アーキテクチャのほうが速度が改善されるかは処理に依 るが、安定する傾向にありそう
None