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
2k
57_.NET___Lambda_のパフォーマンスを最適化する方法.pdf
iwasa
July 14, 2023
Tweet
Share
More Decks by iwasa
See All by iwasa
TLS1.3対応のサービスが増えているが、クライアントアプリケーション側で考慮すべきことも考えてみる
tak1wa
0
600
最近、レジリエンス関連のアップデートが(多分)熱い
tak1wa
0
290
第1回 Azure Traveler 勉強会 札幌の旅 Azure でのマルチテナント SaaS のはなし
tak1wa
1
2.5k
re:Growth 2023 in Sapporo Serverless Updates
tak1wa
0
580
フルマネージドなAzure Load TestingでWebの負荷テストを実施しよう
tak1wa
0
5
AWS_の_SaaS_レンズ_を使って_堅牢でコスト効率の良いマルチテナント_SaaS_アプリケーションを設計しよう.pdf
tak1wa
1
1.7k
Build-Recap-Dev-Tech-Night-Recap-Sapporo-2023
tak1wa
0
510
Amazon_CodeCatalyst_で_Web開発.pdf
tak1wa
0
68
公開情報のみで_AWS_Supply_Chain_を掘り下げる
tak1wa
0
1k
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
How to Ace a Technical Interview
jacobian
273
22k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
323
20k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
356
18k
Optimising Largest Contentful Paint
csswizardry
13
2.4k
What's in a price? How to price your products and services
michaelherold
238
11k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
The MySQL Ecosystem @ GitHub 2015
samlambert
244
12k
Why Our Code Smells
bkeepers
PRO
331
56k
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