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
.NET Aspire を始めよう
Search
Kazuki
July 27, 2024
Technology
0
350
.NET Aspire を始めよう
.NETラボ 勉強会 2024年7月の「.NET Aspire を始めよう」の登壇資料です。
https://dotnetlab.connpass.com/event/323373/
Kazuki
July 27, 2024
Tweet
Share
More Decks by Kazuki
See All by Kazuki
.NET のUnified AI Building Blocks 入門...!
okazuki
0
230
Semantic Kernel の Agent 機能試してみた!
okazuki
1
580
空のプロジェクトから始める Blazor
okazuki
1
440
.NET Aspire を使おう!
okazuki
0
230
Semantic Kernel を使って ChatGPT Plugins をアプリに組み込んでみよう
okazuki
1
840
Other Decks in Technology
See All in Technology
アーキテクチャわからん、の話
shirayanagiryuji
0
150
Japan AWS Jr. Championsがお届けするre:Invent2024のハイライト ~ラスベガスで見てきた景色~
fukuchiiinu
0
1.1k
BLEAでAWSアカウントのセキュリティレベルを向上させよう
koheiyoshikawa
0
130
ソフトウェア開発現代史:製造業とソフトウェアは本当に共存できていたのか?品質とスピードを問い直す
takabow
15
5.3k
panicを深ぼってみる
kworkdev
PRO
2
150
ソフトウェアアーキテクトのための意思決定術: Software Architecture and Decision-Making
snoozer05
PRO
17
4k
Tech Blog執筆のモチベート向上作戦
imamura_ko_0314
0
740
Makuake*UPSIDER_LightningTalk
upsider_tech
0
200
プロダクト観点で考えるデータ基盤の育成戦略 / Growth Strategy of Data Analytics Platforms from a Product Perspective
yamamotoyuta
0
200
顧客の声を集めて活かすリクルートPdMのVoC活用事例を徹底解剖!〜プロデザ!〜
recruitengineers
PRO
0
200
現実的なCompose化戦略 ~既存リスト画面の置き換え~
sansantech
PRO
0
160
サーバーレスで楽しよう!お気軽に始められる3つのポイント / Have fun with Serverless!
_kensh
2
230
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
Music & Morning Musume
bryan
46
6.3k
Documentation Writing (for coders)
carmenintech
67
4.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Speed Design
sergeychernyshev
25
760
Making Projects Easy
brettharned
116
6k
Automating Front-end Workflow
addyosmani
1367
200k
Practical Orchestrator
shlominoach
186
10k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Why Our Code Smells
bkeepers
PRO
335
57k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
RailsConf 2023
tenderlove
29
980
Transcript
#dotnetlab .NET Aspire を始めよう 2024/07/27 日本マイクロソフト Kazuki Ota
#dotnetlab 自己紹介 名前: 大田 一希 (Kazuki Ota) 所属: 日本マイクロソフト 役職:
クラウド ソリューション アーキテクト エバンジェリスト(AI & AppDev) 好き: C#、Azure PaaS 系サービス 苦手: パクチー、インテリセンスの弱い言語 趣味: ゲーム、絵を描くこと X(旧 Twitter): @okazuki
#dotnetlab 本セッションのゴール .NET Aspire を自分のプロジェクトに 追加してもいいかなって思ってもらう
#dotnetlab .NET Aspire とは
#dotnetlab .NET Aspire とは 以下のようなアプリケーションを開発するための便利機能詰め合わせ 分散アプリケーション 本番運用に耐えうるアプリケーション
監視可能なアプリケーション リトライ etc... .NET Aspire overview - .NET Aspire | Microsoft Learn
#dotnetlab .NET 自体が持つ機能 .NET 自体が既に、これらをサポートする機能を持っている サービス検出 OpenTelemetry リトライ メトリクス コンテナ
サポート ヘルスチェック 必要なものを、いい感じに設定するにはそれなりの労力がかかる… などなど…
#dotnetlab そこで .NET Aspire ですよ!!
#dotnetlab .NET Aspire の機能 .NET Aspire の基本的な機能 サービスの規定値 (Smart Defaults)
開発ダッシュボード (Developer Dashboard) オーケストレーション (Orchestration) サービス検出 (Service Discovery) コンポーネント (Components) デプロイ (Deployment)
#dotnetlab .NET Aspire の機能 .NET Aspire の基本的な機能 サービスの規定値 (Smart Defaults)
開発ダッシュボード (Developer Dashboard) オーケストレーション (Orchestration) サービス検出 (Service Discovery) コンポーネント (Components) デプロイ (Deployment) これらを全て もしくは部分的に使える
#dotnetlab .NET Aspire の機能紹介
#dotnetlab サービスの規定値 | Service Defaults 全てのアプリケーションに必要な規定値を提供 • リトライ • OpenTelemetry
の構成 • ヘルスチェック エンドポイントの構成 • 開発用途のものが提供される • 本番用は要件に応じて自分で実装が必要 • サービス検出 • 後ほど個別に取り上げます 実態は上記の構成をアプリケーションに追加する小さなコード
#dotnetlab 開発ダッシュボード | Developer dashboard 起動したサービスの状態の可視化 ✓ 各サービスのエンドポイント確認 ✓ 各サービスの環境変数の確認
✓ 各サービスの死活監視 ✓ トレースの確認 ✓ メトリックの確認 ✓ アプリのログの確認
#dotnetlab オーケストレーション | Orchestration アプリ ホスト プロジェクトで定義されたアプリ モデルの内容に 従ってプロジェクトなどを一括起動する機能 Before
After マルチ スタートアップ プロジェクトを構成して実行 アプリ ホスト プロジェクトを 起動すると一括で実行される
#dotnetlab アプリ モデル アプリ ホスト プロジェクトの Program.cs で DistributedApplicationBuilder を使って組み立てる
var builder = DistributedApplication.CreateBuilder(args); builder.AddProject<Projects.Backend>("backend"); builder.AddProject<Projects.Frontend>("frontend"); builder.Build().Run(); Backend プロジェクトを "backend" という名前で登録 BlazorApp11 プロジェクトを "frontend" という名前で登録
#dotnetlab サービス検出 | Service Discovery サービスのエンドポイントを名前でアクセスできるようにする機能 • アプリ モデルで定義した名前でアクセス可能 var
builder = DistributedApplication.CreateBuilder(args); var backend = builder.AddProject<Projects.Backend>("backend"); builder.AddProject<Projects.Frontend>("frontend") .WithReference(backend) .WithExternalHttpEndpoints(); builder.Build().Run(); WithReference メソッドで依存関係を定義 この例では frontend から backend を呼ぶということを設定 client.BaseAddress = new Uri("https+http://backend"); このような URL でアクセスできるようになる AppHost frontend
#dotnetlab サービス検出 | Service Discovery 実際のエンドポイントの値は環境変数に以下のような命名規約の値で設定 Services__backend__http__0=http://localhost:xxxx Services__backend__https__0=https://localhost:yyyy IHostApplicationBuilder AddServiceDefaults(
this IHostApplicationBuilder builder) { // 省略 builder.Services.AddServiceDiscovery(); builder.Services.ConfigureHttpClientDefaults(http => { // 省略 http.AddServiceDiscovery(); }); // 省略 } サービスの規定値 でサービス検出も有効化するコードが組み込まれている ServiceDefaults frontend の環境変数
#dotnetlab オーケストレーション | Orchestration .NET Aspire ホスティング パッケージを使うことでプロジェクト以外にも様々な ものをオーケストレーション可能 •
実態は Aspire.Hosting で始まる名前の NuGet パッケージ群 • アプリ ホスト プロジェクトに追加して使用 var cache = builder.AddRedis("cache"); var backend = builder.AddProject<Projects.Backend>("backend") .WithReference(cache); アプリホストプロジェクトに NuGet で Azure.Hosting.Redis パッケージを追加 AddRedis メソッドでアプリ モデルに Redis を 追加して WithReference で関連性を定義
#dotnetlab オーケストレーション | Orchestration .NET Aspire ホスティング パッケージを使うことでプロジェクト以外にも様々な ものをオーケストレーション可能 •
実態は Aspire.Hosting で始まる名前の NuGet パッケージ群 • アプリ ホスト プロジェクトに追加して使用 var cache = builder.AddRedis("cache"); var backend = builder.AddProject<Projects.Backend>("backend") .WithReference(cache); アプリホストプロジェクトに NuGet で Azure.Hosting.Redis パッケージを追加 AddRedis メソッドでアプリ モデルに Redis を 追加して WithReference で関連性を定義 Redis の Docker コンテナが起動 backend に接続文字列が追加
#dotnetlab オーケストレーション | Orchestration その他、様々なものに対応 • AddContainer: 任意のコンテナ イメージを追加 •
AddDockerfile: 任意の Dockerfile を追加 • AddExecutable: 任意の exe を追加 • AddNodeApp、AddNpmApp: Node.js や JavaScript フロントエンドを追加 • AddPythonProject: Python のアプリを追加 • AddConnectionString: 構成ファイル内の接続文字列を追加 • AddParameter: 構成ファイル内のパラメーターを追加 • など…
#dotnetlab コンポーネント | Components 各種サービスのためのクライアント ライブラリ • Redis、PostgreSQL、SQL Server、Azure OpenAI
Service など • リトライや OpenTelemetry などの構成が組 み込まれている • NuGet パッケージで配布 • コンポーネントの一覧 .NET Aspire コンポーネントの概要 - .NET Aspire |Microsoft Learn • .NET Aspire ホスティング パッケージとあわ せて使うと強力!
#dotnetlab コンポーネント | Components Redis Cache を HTTP レスポンスの出力キャッシュにする場合 Redis
を使うプロジェクトに Aspire.StackExchange.Redis.Out putCaching パッケージを追加 var builder = WebApplication.CreateBuilder(args); builder.AddServiceDefaults(); builder.AddRedisOutputCache("cache"); builder.Services.AddOutputCache( options => options.AddBasePolicy( policy => policy.Expire(TimeSpan.FromSeconds(5)))); // 省略 var app = builder.Build(); app.MapDefaultEndpoints(); app.UseOutputCache(); // 省略 コンポーネントを使うコード (緑部分) と ASP.NET Core のキャッシュの 構成 (赤部分) のコードを追加
#dotnetlab コンポーネント | Components Redis Cache を HTTP レスポンスの出力キャッシュにする場合 Redis
を使うプロジェクトに Aspire.StackExchange.Redis.Out putCaching パッケージを追加 var builder = WebApplication.CreateBuilder(args); builder.AddServiceDefaults(); builder.AddRedisOutputCache("cache"); builder.Services.AddOutputCache( options => options.AddBasePolicy( policy => policy.Expire(TimeSpan.FromSeconds(5)))); // 省略 var app = builder.Build(); app.MapDefaultEndpoints(); app.UseOutputCache(); // 省略 コンポーネントを使うコード (緑部分) と ASP.NET Core のキャッシュの 構成 (赤部分) のコードを追加 出力キャッシュが構成され、分散トレーシングなどにも対応
#dotnetlab デプロイ | Deployment Azure Developer CLI や Visual Studio
を使った Azure Container Apps へのデプロイが可能 デプロイ Azure Container Apps AppHost プロジェクト frontend backend cache Azure Dev CLI Visual Studio
#dotnetlab デプロイ | Deployment 従来通りのデプロイも可能 • 1 つ 1 つのアプリは単純な
.NET アプリ • デプロイをして環境変数を設定するだけで動作可能 • GitHub Actions などでの自動化も可能 • 従来通りのデプロイでも Azure Developer CLI の使用でも • Aspir8 を使った Kubernates へのデプロイ • prom3theu5/aspirational-manifests: Handle deployments of .NET Aspire AppHost Projects (github.com) • AWS CDK にも対応 • Deploy .NET Aspire to AWS Using CDK | by Rishupal Singh | Jul, 2024 | Medium • Add AWS CDK support by vlesierse · Pull Request #2225 · dotnet/aspire (github.com)
#dotnetlab クイック スタート .NET Aspire Starter アプリケーション 既存プロジェクトに .NET Aspire
を追加可能 フロントエンド バックエンドなどを含んだ 基本的なアプリケーション プロジェクトの右クリックメニューから 「追加」→「.NET Orchestrator サポート」
#dotnetlab まとめ
#dotnetlab .NET Aspire とは 以下のようなアプリケーションを開発するための便利機能詰め合わせ 分散アプリケーション 本番運用に耐えうるアプリケーション .NET
Aspire の機能 サービスの規定値 (Smart Defaults) 開発ダッシュボード (Developer Dashboard) オーケストレーション (Orchestration) サービス検出 (Service Discovery) コンポーネント (Components) デプロイ (Deployment)
#dotnetlab まとめ 気になった人は 是非 .NET Aspire を使ってみてください
#dotnetlab 参考情報 • マイクロソフト上坂さんの Qiita の記事 • .NET Aspire って何?
- 概要 #.NETAspire – Qiita • Microsoft Learn 公式ドキュメント • .NET Aspire documentation | Microsoft Learn • Microsoft Learn のトレーニングの .NET Aspire のラーニング パス • .NET Aspire を使用して分散アプリを構築する - Training | Microsoft Learn • eShop Reference Application – "AdventureWorks" • dotnet/eShop: A reference .NET application implementing an eCommerce site (github.com)
#dotnetlab © Copyright Microsoft Corporation. All rights reserved.