[レポート] re:Invent 2023: .NET on AWS セッションまとめ #AWSreInvent

2023.12.20

いわさです。

私は毎年 re:Invent の .NET 関係のセッションを視聴しているのですが、今年も .NET セッション視聴しました!
少数派だとは思いますが .NET on AWS についてキャッチアップされている方もいるかと思いまして、.NET 系のセッションをまとめてレポートしてみたいと思います。

この記事では関係セッションの見どころやサマリを紹介したいと思います。
オンデマンド動画も埋め込んでおくので興味ある方は動画のほうも見てください。

re:Invent 2023 の .NET on AWS セッション

.NET のセッションは「XNT」というプレフィックスのセッション番号のものが対象です。
厳密には上記以外にも「ENT」などでも .NET に関係したセッションがあるのですが、この記事では「XNT」セッションのみを対象にしたいと思います。

セッションタイプに関わらず、XNT のセッションラインナップは次のようになっています。

セッションコード セッションタイプ タイトル 動画公開
XNT301 Breakout Session Build production-ready serverless NET apps with AWS Lambda
XNT302 Workshop Modernize and optimize an ASP.NET app in 2 hours -
XNT303 Chalk Talk Architecting resilient and highly available .NET workloads -
XNT304 Breakout Session Boost your productivity with AWS Toolkits and Amazon CodeWhisperer
XNT305 Breakout Session Enrich your .NET applications with Al capabilities
XNT306 Breakout Session Lessons in modernizing monolithic .NET applications to microservices
XNT307 Breakout Session Modernize .NET apps at scale: DraftKings principles for success
XNT308 Breakout Session Test automation for .NET applications running on AWS
XNT309 Chalk Talk Managing .NET dependencies: Strategies for migration and modernization -
XNT310 Chalk Talk Modern observability tooling for .NET applications on AWS -
XNT401 Breakout Session Getting the most performance for your .NET apps from AWS SDK for .NET

上記のうち Breakout Session については本日時点で YouTube にてオンデマンド動画が公開されておりました、7 つのセッションを視聴したのでポイントなどをまとめておきます。

Build production-ready serverless NET apps with AWS Lambda (XNT301)

オンデマンド動画

セッション概要

このセッションでは、.NET と AWS Lambda を使用してサーバーレスアプリケーションを構築する際の開発とアーキテクチャのベストプラクティスについて説明します。これには、ASP.NET を Lambda で実行するタイミング、コード構造、ネイティブの AOT を使用してパフォーマンスを大幅に向上させる方法などが含まれます。このセッションに参加して、.NET サーバーレスアプリケーションを開発、テスト、デプロイする方法を学び、本番環境に対応した高性能のサーバーレスアプリケーションを構築する方法をしっかりと理解してください。

ポイント

このセッションは .NET on Lambda を開発する際に .NET 特有のツールやアプローチについて網羅的に紹介されています。
テーマとしては一貫して .NET 開発者の開発者体験的なところが言及されている点がおもしろいです。
.NET 開発者は Visual Studio や ASP.NET に慣れ親しんでいるので親和性のある形でツールが提供されているという話です。

ASP.NET on Lambda で、既存の ASP.NET 資産をそのまま Lambda に持っていくことが出来る点についてはじめに説明されています。
それと同時に、モノリス Lambda なこの構成はコールドスタートの問題がある点がトレードオフとして言及されています。

別のアプローチとして最近 GA になった Lambda Annotaions Framework が紹介されていました。
こちらも ASP.NET 開発者に馴染みのある形での開発が可能なフレームワークです。
ASP.NET on Lambda と異なり、こちらはモノリス Lambda ではありません。

そもそも .NET on Lambda ではコールドスタート時間が大きくなりやすい問題がありますが、改善アプローチとして Native AOT が紹介されていました。出たな!!

また、Lambda でマイクロサービスを構築していくとトレーサビリティやログの管理問題が起きやすいのですが、Powertools for AWS Lambda がそのあたりの解決策になる点も紹介されています。

Boost your productivity with AWS Toolkits and Amazon CodeWhisperer (XNT304)

オンデマンド動画

セッション概要

.NET 開発者の生産性を高めるために AWS がどのように役立つかをご覧ください。ソフトウェア開発者は常に、より少ないリソースでより多くのことを行うよう求められます。フローを遅くする障害を取り除き、生産性を低下させるコンテキスト切り替えを減らす必要があります。AWS ツールキットは、お気に入りの IDE に集中し続けるのに役立ちます。このセッションでは、コードとしてのインフラストラクチャに関する深い知識がなくても、AWS サービスにアクセスして AWS にデプロイし、プロジェクトを数分でテストする方法を学びます。また、Amazon CodeWhisperer により、AWS ツールキットがどのようにしてさらに多くのことを実現したかについても学んでください。この新しい AI コーディングコンパニオンが、より多くのことをより早く成し遂げるのにどのように役立つかをご覧ください。

ポイント

このセッションはもうほとんどライブコーディングセッションでした。
Visual Studio などを使ってひたすらコーディングとデモを実行しています。

目新しいところだと Amazon CodeWhisperer を Visual Studio 上で実行していました。Visual Studio Code ではなくて Visual Studio です。

あとはローカルテストツールとして AWS .NET 6.0 Mock Lambda Test Tool が使われていました。
これは AWS Toolkit for Visual Studio に組み込まれていたと思うので使ったことある方も多いですかね?

簡単なアプリケーションを 30 分くらいで構築していました。

Enrich your .NET applications with Al capabilities (XNT305)

オンデマンド動画

セッション概要

.NET アプリケーションを AWS AI サービスで強化する方法をご覧ください。このデモ中心のセッションでは、自然言語処理、言語検出、翻訳などの AI 機能をすべて AI 支援のコードジェネレーターを使用して .NET アプリケーションに追加する方法を学びます。また、AWS AI サービスを使用して .NET でエンドツーエンドのインテリジェントな文書処理アプリケーションを構築する方法も確認できます。

ポイント

このセッションは AWS の AI サービスを AWS SDK for .NET を使って組み込もうというやつです。
たぶんこれは毎年やってるセッションな気がします。

.NET というよりも AWS の AI サービスを学ぶためのセッションと考えたほうが良いと思います。

Lessons in modernizing monolithic .NET applications to microservices (XNT306)

オンデマンド動画

セッション概要

10年以上前の.NETアプリケーションを引き継いで機能を改良し、それをクラウドネイティブサービスに再構築することがあなたの使命です。どこから始めますか?ソースコードを評価して労力のレベルを把握するにはどうすればよいでしょうか?リスクを最小限に抑えながら実験を行うにはどうすればよいのでしょうか?このセッションでは、AWS 上のモノリスからマイクロサービスに移行するためのモダナイゼーションの道筋を探ります。人員配置と採用のプラットフォームである Avionté は、シングルテナントのレガシー.NET Framework アプリケーションを AWS 上のマルチテナント SaaS ソリューションに変えています。大規模なモノリスを切り離して、コスト削減、サービス稼働時間の向上、機能提供の迅速化を実現し、クラウドネイティブアーキテクチャをどのように採用しているかをご覧ください。

ポイント

このセッションではモノリス .NET アプリケーションをマイクロサービス化していく過程をひとつづつ学んでいくことが出来るセッションです。

Strangler Fig パターンを採用する場合にどのようにサービスを抽出し、AWS が提供する AWS Microservice Extractor for .NET を活用してどのようにリファクタリングを行っていくのかが解説されています。

また、アプリケーションがマイクロサービスに移行していく過程で、データベースについても目的にあったものを選択することで様々なメリットが得られてる点にも言及されています。

Modernize .NET apps at scale: DraftKings principles for success (XNT307)

オンデマンド動画

セッション概要

このセッションでは、DraftKingsがどのようにしてWindows上の.NET FrameworkからLinuxおよびKubernetes上の.NET Coreに移行し、急速に成長している組織でインフラストラクチャとソフトウェアに大きな変更を安全に行ったかをご覧ください。次に、彼らが.NET Coreの「すべて非同期」をKubernetes上のHPAと組み合わせて利用して、試合当日のロード時のスループットを大幅に改善した方法について詳しく説明します。DraftKings が実装した主なベストプラクティスのいくつかと、これらのテクノロジーがオンプレミスと Amazon EKS ワークロードの CI/CD と開発者エクスペリエンスの簡素化と標準化にどのように役立ったかについて学んでください。

ポイント

このセッションは XNT306 と関連している動画です。
XNT306 ではモダナイズの手法について言及されていましたが、このセッションが実際の .NET モダナイゼーションの事例を元にどういうアプローチで何が達成出来たのかについて解説されています。

様々な技術選定を経て、移行後には多くのベネフィットがあったそうです。

最後には AWS が .NET アプリケーションのモダナイゼーション向けに提供しているツールやサービスがまとめられています。

Test automation for .NET applications running on AWS (XNT308)

オンデマンド動画

セッション概要

ソフトウェア開発者は、品質を犠牲にすることなく、新しい機能を迅速に開発する必要があります。ソフトウェアが成長するにつれ、ますます複雑になるコードベースの構築とデプロイは困難になり、間違いも起こりやすくなります。さらに、開発者はクラウドベースのサービスだけでなく、開発マシンではテストできないマイクロサービスやサーバーレスアプリケーションも使用しています。このセッションでは、.NET マイクロサービスとサーバーレスアプリケーションのテストに使用できるさまざまなタイプの自動テストとツールを紹介します。また、自動テストを適用して、プロジェクトの成功に役立つ一貫性のある効果的なテストを作成する方法についても学びます。

ポイント

このセッションは .NET アプリケーションにおけるテスト手法について言及されています。
ただし、セッション全体を通して AWS に特化した内容はあまりありませんでした。

このセッションは AWS に関わらない .NET 全般のテスト手法を学ぶために見てみると良いと思います。

Getting the most performance for your .NET apps from AWS SDK for .NET (XNT401)

オンデマンド動画

セッション概要

.NET 用 AWS SDK は、AWS サービスを使用してアプリケーションを構築する .NET 開発者にとって重要です。このセッションでは、サービスへのリクエストを行うという単純な例にとどまらず、SDK for .NET を使用してパフォーマンスと信頼性を最大化する高度な方法を紹介します。このセッションでは、あまり知られておらず、劇的な効果をもたらす可能性のある、多くの微妙な機能やチューニングオプションについて学びます。これらには、再試行、タイムアウト、HTTP クライアント処理をチューニングする機能や、SDK による HTTP リクエストをカスタマイズする機能が含まれます。

ポイント

このセッションは .NET カテゴリで唯一のレベル 400 です。
SDK for .NET を使った実装 TIPS のような構成となっています。

内容としては大きく以下の構成でライブコーディングが行われていました。

  • HttpClinet
  • AWS Security Token Service
  • SDK retry behaviro
  • DynamoDB High-Level Library
  • S3 Streaming
  • Native AOT

HttpClinet のキャッシュをオフにするとか、AWS_STS_REGIONAL_ENDPOINTSに自分のメインリージョンを設定するとか、そのまま使うのではなくてカスタマイズするとパフォーマンス向上できる点があるよと詳しく解説されています。

.NET on AWS 実装後に、さらにチューニングを試みたい方は是非みておきたいセッションです。

その他

セッションが公開されていないものに関してはセッション概要だけは確認出来たので紹介します。

XNT302 : Modernize and optimize an ASP.NET app in 2 hours

このセッションは .NET カテゴリで唯一のワークショップです。
.NET Framework な Web アプリを .NET 化・マイクロサービス化して、要はモダナイズの過程を経験出来るワークショップみたいですね。

このワークショップでは、架空のEコマース企業の開発者として、ウェブアプリケーションを強化してコストを削減し、動的に拡張し、運用効率を向上させる方法を学びます。AWS の最新化ツールと AL を活用した提案を使用して、サンプル NET フレームワークアプリケーションを AWS Fargate 上の Amazon ECS に移動します。支援ツールを使用して、クロスプラットフォーム.NET への移植、マイクロサービスの作成、AWS Fargate 上の Amazon ECS へのデプロイをわずか 2 時間で行う方法を学びましょう。参加するにはラップトップを持参する必要があります。

XNT303: Architecting resilient and highly available .NET workloads

こちらはチョークトークです。
レジリエンスは今回の re:Invent でちょっと取り上げられていたテーマですが、.NET に固有したアプローチが何かある感じなのでしょうか。無さそうな気もするのですが気になりますね。このセッション見た人いないかな?

企業は、顧客のアプリケーション耐障害性に対する期待に応えるために、高可用性 (HA) とディザスタリカバリ (DR) に対応したワークロードを設計する必要があります。このチョークトークでは、耐障害性のあるアーキテクチャ、RPORTO の設計方法、Microsoft NET ワークロードの最適化に役立つ AWS のツールとサービスについて説明します。モダナイゼーションのどの段階にいるかにかかわらず、このトークに参加して、コストを最適化しながらアプリケーションの耐障害性を高めるための戦略について学びましょう。

XNT309 : Managing .NET dependencies: Strategies for migration and modernization

こちらもチョークトークです。
これはおそらく XNT306, XNT307 あたりと関係のありそうなテーマですね。
依存関係にフォーカスしている感じです。NuGet パッケージとかそのあたりの話だろうか?

Porting Assistant for .NET で依存関係の解決機能があるので、そのあたりなのかも。

.NET ワークロードの移行と最新化の際に、.NET の依存関係を管理するための効果的なアプローチをご覧ください。依存関係のホスティング、アップグレード、自動化に関するベストプラクティスをご覧ください。これにより、スムーズな移行を実現し、モダナイゼーションのメリットを最大限に引き出すことができます。パッケージマネージャー、バージョン管理戦略、自動依存関係分析など、依存関係管理のツールとテクニックについて学んでください。互換性の課題への対処、クラウドサービスとの統合、パフォーマンスの最適化のための戦略についての洞察を得ましょう。このチョークトークでは、新しいプラットフォームへの移行、最新の .NET へのアップグレード、依存関係管理ワークフローの自動化など、.NET の依存関係をうまく管理し、アプリケーションの最新化を効率化するための実践的なガイダンスを提供します。

XNT310 : Modern observability tooling for .NET applications on AWS

こちらもチョークトークです。
オブザーバビリティですね。PowerTool Lambda か、あるいは AWS Distro for OpenTelemetry .NET あたりの話なのではと予想します。
このセッションも参加した方がいればどんな内容だったか教えてほしいですね...!

ソフトウェアシステムの構築に使用されるアーキテクチャパターンは、過去10年間で大きく変化しました。すべてがワークステーション上で実行され、1 つのデータベースを更新するモノリスであると、システムの監視が容易になりました。最新のアプリケーションでは、仮想マシン、コンテナ、サーバーレス機能を含むさまざまなプラットフォームで実行されている何百ものマイクロサービスを監視する必要があります。これにより、企業が機能するために不可欠な時間と収益の損失を回避するために、監視の必要性が大幅に高まります。このチョークトークでは、AWS 上の .NET アプリケーションを監視してコストのかかるダウンタイムを減らし、エンドユーザーエクスペリエンスを向上させるために使用できるオブザーバビリティツールを紹介します。

さいごに

本日は AWS re:Invent 2023 の.NET 関係のセッションをまとめて紹介してみました。

セッションレベルが 300 以上ということで、全てのセッションは .NET をある程度理解している前提かつ AWS で構築した経験がある方向けという感じがしました。
今年一年は実は .NET 向けにはあまり目立った AWS アップデートはなかったので、re:Invent セッションでも新しい機能に関する内容はありませんでしたね。

もうすぐ .NET 8 が Lambda マネージドランタイムとして登場するのでパフォーマンスなど色々比較情報が出てくるはずです。
来年の re:Invent はそのあたりにもっと言及されるかもしれないですね。