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
390
.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
250
Semantic Kernel の Agent 機能試してみた!
okazuki
1
740
空のプロジェクトから始める Blazor
okazuki
1
510
.NET Aspire を使おう!
okazuki
0
290
Semantic Kernel を使って ChatGPT Plugins をアプリに組み込んでみよう
okazuki
1
850
Other Decks in Technology
See All in Technology
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
16
5k
読んで学ぶ Amplify Gen2 / Amplify と CDK の関係を紐解く #jawsug_tokyo
tacck
PRO
1
300
もう難しくない!誰でもカンタンDocker入門 〜30分であなたのPCにアプリを立ち上げる〜
devops_vtj
0
180
社会人力と研究力ー博士号をキャリアの武器にするー
kentaro
2
100
QA/SDETの現在と、これからの挑戦
imtnd
0
220
Simplify! 10 ways to reduce complexity in software development
ufried
1
190
Mastraに入門してみた ~AWS CDKを添えて~
tsukuboshi
0
380
白金鉱業Meetup_Vol.18_生成AIはデータサイエンティストを代替するのか?
brainpadpr
4
220
Compose におけるパスワード自動入力とパスワード保存
tonionagauzzi
0
190
「経験の点」の位置を意識したキャリア形成 / Career development with an awareness of the “point of experience” position
pauli
4
130
勝手に!深堀り!Cloud Run worker pools / Deep dive Cloud Run worker pools
iselegant
4
620
OPENLOGI Company Profile
hr01
0
63k
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
KATA
mclloyd
29
14k
How GitHub (no longer) Works
holman
314
140k
Building Applications with DynamoDB
mza
94
6.4k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.4k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
Faster Mobile Websites
deanohume
306
31k
Designing Experiences People Love
moore
142
24k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
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.