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.6k
57_.NET___Lambda_のパフォーマンスを最適化する方法.pdf
iwasa
July 14, 2023
Tweet
Share
More Decks by iwasa
See All by iwasa
3大クラウドから学ぶクラウド上でのランサムウェア対策
tak1wa
0
320
Lambdaの様々な新機能とユースケース
tak1wa
0
330
AWS最新機能を駆使したマルチテナントSaaSアーキテクチャーを考えてみる
tak1wa
0
790
Tsumiki を使って仕様駆動開発をやってみよう
tak1wa
0
580
社内開発で Amazon Q Developer を使っていたが Kiro に乗り換えた話
tak1wa
0
1.6k
Microsoft Azure プランの復習とプラン切り替えのお話
tak1wa
0
270
Amazon Q Detector Library から学ぶセキュアコーディング
tak1wa
0
370
はじめての「さくらのクラウド」
tak1wa
0
320
Azure Native ISV Services「Datadog」
tak1wa
0
430
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
190
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
GraphQLとの向き合い方2022年版
quramy
50
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Making Projects Easy
brettharned
120
6.6k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Google's AI Overviews - The New Search
badams
0
910
We Are The Robots
honzajavorek
0
170
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