Slide 1

Slide 1 text

.NET + Lambda のパフォーマンスを最適 化する方法 2023/7/13 AWS事業本部 岩浅貴大

Slide 2

Slide 2 text

自己紹介 岩浅 貴大(いわさ) クラスメソッド株式会社 AWS事業本部 コンサルティング部 ソリューションアーキテクト

Slide 3

Slide 3 text

アジェンダ 1. Lambda と .NET 2. パフォーマンス向上のアプローチ a. .NET バージョンアップ b. Native AOT c. Lambda のアーキテクチャ 3. パフォーマンス比較 4. まとめ

Slide 4

Slide 4 text

前置き 【DevelopersIO 2022】.NETアプリケーションのAWS移行 https://youtu.be/Lbax8pgFoEc

Slide 5

Slide 5 text

Lambda と .NET

Slide 6

Slide 6 text

AWS Lambda の概要 サーバーレスコンピューティングサービス ❖ イベント駆動型 ❖ サーバーのプロビジョニングや管理が不要 ❖ 実行した時間に応じた従量課金

Slide 7

Slide 7 text

.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 より

Slide 8

Slide 8 text

AWS Lambda での .NET サポート ● マネージドランタイムで LTS の .NET 6 ● カスタムランタイムで STS の .NET 7 https://aws-labs.net/netonaws.html https://aws.amazon.com/developer/language/net/

Slide 9

Slide 9 text

パフォーマンス向上のアプローチ

Slide 10

Slide 10 text

.NET バージョンアップ ● バージョンアップ ○ 新機能 ○ セキュリティ向上 ○ パフォーマンス向上

Slide 11

Slide 11 text

Native AOT ● Just-In-Time ● Ahead-Of-Time ○ ツールチェーンに組み込まれている

Slide 12

Slide 12 text

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/

Slide 13

Slide 13 text

パフォーマンス比較

Slide 14

Slide 14 text

パフォーマンス比較の前提条件 https://github.com/aws-samples/serverless-dotnet-demo

Slide 15

Slide 15 text

.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

Slide 16

Slide 16 text

.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

Slide 17

Slide 17 text

.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

Slide 18

Slide 18 text

.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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

まとめ

Slide 26

Slide 26 text

まとめ 1. .NET バージョンは最新のマネージドランタイムを使う 2. Native AOT が使える場合はカスタムランタイムも良い 3. Native AOT でコールドスタートの速度が改善される 4. ARM アーキテクチャのほうが速度が改善されるかは処理に依 るが、安定する傾向にありそう

Slide 27

Slide 27 text

No content