Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
.NET Aspire を始めよう
Search
Kazuki
July 27, 2024
Technology
580
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
.NET Aspire を始めよう
.NETラボ 勉強会 2024年7月の「.NET Aspire を始めよう」の登壇資料です。
https://dotnetlab.connpass.com/event/323373/
Kazuki
July 27, 2024
More Decks by Kazuki
See All by Kazuki
GitHub Copilot CLI の 個人的な好きなところ
okazuki
1
710
.NET ユーザーにやさしい GitHub Copilot の使い方
okazuki
0
670
Durable Task Extension for Microsoft Agent Framework はいいぞ
okazuki
2
460
正式リリースされた Semantic Kernel の Agent Framework 全部紹介!
okazuki
1
3.3k
.NET のUnified AI Building Blocks 入門...!
okazuki
0
380
Semantic Kernel の Agent 機能試してみた!
okazuki
1
1.2k
空のプロジェクトから始める Blazor
okazuki
1
780
.NET Aspire を使おう!
okazuki
0
470
Semantic Kernel を使って ChatGPT Plugins をアプリに組み込んでみよう
okazuki
1
980
Other Decks in Technology
See All in Technology
しろおびから始める!ログ活用の第一歩
shumei_ito
0
930
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
580
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
110
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
160
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
900
メルペイ 会計システム概要と歴史
mewuto
1
220
Refining Active Record
shugo
0
110
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
290
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
370
Datadog の学び方 - あるいは、オブザーバビリティを学ぶとは何か
mananyuki
1
560
【Data Engineering Summit2026_登壇資料】医療ビッグデータ×AIエージェントを支えるデータ基盤とハーネスエンジニアリング
jmdc_presentation
0
140
Running Kotlin + Quarkus with Lambda
nealle
1
470
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
How to Ace a Technical Interview
jacobian
280
24k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
400
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The Language of Interfaces
destraynor
162
27k
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.