6.4K Views
January 17, 24
スライド概要
New Relic株式会社、Technical Support Manager.
マスター タイトルの書式設定 .NET Aspire 概略 .NET の 2 日間 2024 冬 2024/1/18 @tanaka_733 1
マスター @tanaka_733 自己紹介 タイトルの書式設定 • C# Tokyo運営 • 福岡(北九州)出身 • Microsoft MVP for Developer Technologies • 最近の興味 • Radius Project ブログ • .NET Aspire • OpenTelemetry .NET ブログ 2 2
マスター .NET Aspireとは? タイトルの書式設定 • .NET Aspire は、監視可能で本番環境に対応した分散アプリケー ションを構築するための独自のクラウド対応スタックです。 • .NET Aspire は、クラウドネイティブの特定の懸念事項を処理する NuGet パッケージのコレクションを通じて提供されます。 https://learn.microsoft.com/ja-jp/dotnet/aspire/getstarted/aspire-overview より引用 3 3
マスター タイトルの書式設定 今日の情報源 • Microsoft Learn • https://learn.microsoft.com/jajp/dotnet/aspire/get-started/aspireoverview?WT.mc_id=AZ-MVP-5000211 • Visual Studio 2022 Preview • Visual Studioで開発する場合はPreview必須 • そのほかDocker Desktopなど 4 4
マスター .NET Aspireが支援するもの タイトルの書式設定 • オーケストレーション • マルチプロジェクトアプリとその依存関係を実行および接続 • アプリの構成、サービス検出、接続文字列の管理 • コンポーネント • サービスへの接続を容易にするNuGetパッケージ • サービス: RedisやPostgreSQL、クラウドサービスなど • アプリとの一貫したシームレスな接続を保証する標準化されたインターフェイスを提供 • ツール • Visual Sutdio用プロジェクトテンプレートや、アプリの作成や管理を行うdotnet CLI • 構造化ログ、メトリクス、トレースなどを計測するOpenTelemetry • ヘルスチェックエンドポイント • サービス検出 5 5
マスター タイトルの書式設定 プロジェクトテンプレートから見てみよう .NET Aspire Starter Applicationから作成 6 6
マスター タイトルの書式設定 プロジェクトテンプレートからの新規作成 7 7
マスター タイトルの書式設定 プロジェクトの構造 AppHostプロジェクト プロジェクト 依存 Apiプロジェクト Webプロジェクトが APIプロジェクトを参照 Webプロジェクト ServiceDefault プロジェクト 8 8
マスター タイトルの書式設定 プロジェクトの種類 • AppHostプロジェクト • ソリューションのスタートアッププロジェクト • コンポーネントとなるプロジェクトを参照し依存関係を定義する • Sharedプロジェクト • Aspireの設定などを記載するプロジェクト • ヘルスチェックやOpenTelemetryの設定を行える • コンポーネントとなるプロジェクトから参照される • コンポーネントとなるプロジェクト • 通常の.NETのプロジェクト • AppHostでコンポーネントとして定義される 9 9
マスター タイトルの書式設定 AppHostプロジェクトのProgram.csでモデルを定義 AddProjectメソッドで プロジェクトを アプリケーションモデルに追加する WithReferenceメソッドで webfrontendがapiserviceを参照することを宣言 10 10
マスター タイトルの書式設定 プロジェクト間の通信 Webプロジェクト側の記述 WithReferenceで参照したプロジェクトに対して AddProjectで指定した名前で名前解決できるように設定されている 技術的には.NETでのサービス検出を参照 プレリリースのNuGetライブラリで提供されており、 ソース上はAspireプロジェクトの一部となっているが独立して利用可 11 11
マスター タイトルの書式設定 ダッシュボード • ローカル環境でAppHostを実行することですぐにテストが可能 • AppHostを実行するとダッシュボードが起動する • コンポーネント一覧 • オブザーバビリティ 12 12
マスター タイトルの書式設定 接続先情報が環境変数で追加されている • 依存しているコンポーネントの接続情報 は環境変数に注入される • DBなど種類に応じて命名規則あり • プロジェクト参照の場合の接続先は プロジェクトテンプレートが使っている サービス検出ではない直接の接続先 13 13
マスター タイトルの書式設定 Aspireはさまざまなものをオーケストレーションできる • プロジェクトテンプレートではプロジェクト同士のみだが、 実行ファイル、コンテナなどさまざまなものをオーケストレーションできる • アプリケーションの一部となるそれらをリソースと呼ぶ • リソースは組み込みリソースとそのほかのリソースに分けられる • 組み込みリソース • プロジェクト • 実行ファイル • コンテナ • そのほかのリソース • ミドルウェア • クラウドサービス(現時点ではAzure関連のみ) • リソースの間に参照関係を定義できる 14 14
マスター タイトルの書式設定 プロジェクトの構造(概念) AppHostプロジェクト 実行ファイルA DockerコンテナA プロジェクトA プロジェクトB クラウドサービス ミドルウェア (コンテナ) ミドルウェア (サービス) 15 15
マスター Logs, Traces, タイトルの書式設定 Metricsのテレメトリーデータの取得 • OpenTelemetry(OTEL)を利用したテレメトリーデータの取得が デフォルトで計装されている • ローカル開発ではAppHostのダッシュボードにOTELサーバー・表示機能が実装済み • 各プロジェクトに自動的に送信先が設定されるので、原則設定不要 • 運用環境では好きなバックエンドに送信可能 • 送信先は各コンポーネントとなるプロジェクトの環境変数に設定 • OTEL .NETの仕様に従う。詳細はドキュメント参照。 • デフォルトの計装の設定はServiceDefaultプロジェクトに記述 • OpenTelemetryとは?OpenTelemetry .NETとは?についてはこちらのブログ参照 https://tech.tanaka733.net/archive/category/OpenTelemetry 16 16
マスター タイトルの書式設定 Logs • .NET Coreの標準ログ機能でOpenTelemetryに対応している • 構造化ログにも対応 17 17
マスター タイトルの書式設定 Traces 18 18
マスター タイトルの書式設定 Metrics 19 19
マスター .NET Aspireの現在地 タイトルの書式設定 • 本番運用は厳しそう • そもそもプレビューかつVisual Studioもプレビュー必須 • デプロイはAzure Developer CLIを利用したAzure Container Instancesのみサポート • さまざまな技術をNuGet経由で利用しているので、全部入りAspireで検証を進め、 個別要素を選択して導入することも可能 • この資料で説明できなかったこと(一例) • プロジェクト間での名前解決の詳細(例: kubernetes上ではどうする?) • コンテナ、実行ファイルなどをアプリケーションモデルとして追加 • ミドルウェア、クラウドサービスをリソースとして追加し参照 • ストレージ、データベース、キャッシュ(Redis)、機密情報(Azure Key Vault)など • OpenTelemetryの構成 20 20
マスター タイトルの書式設定 ご清聴ありがとうございました 21