MS_DotNetAspire - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る(開発ツール)
複数のサービスで構成されるアプリケーション開発やデプロイを支援する
ツールやライブラリの集合体
- CI/CD の派生物件
- コンテナのチェーンで言及されていることに近い。
-
LocalServicesOnDocker の
試みみたいなもの。
補足(何を解決しようとしているか): 「Web アプリ + API + DB + Redis + …」
という構成をローカルで一発で立ち上げ、繋ぎ、観測するための仕組みである。【従来】docker-compose.yml を書く ・接続文字列を環境変数で手渡し ・待ち合わせ(depends_on)を自分で面倒みる ・ログ/メトリクスは各自 【Aspire】AppHost プロジェクト(C# のコード)で構成を書く ・接続情報が自動的に注入される(サービス ディスカバリ) ・ダッシュボードでログ/トレース/メトリクスを一望 ・一部だけコンテナ、一部はプロセス、という混在が自然構成が YAML ではなく C# のコードである点が特徴で、
補完とコンパイル エラーの恩恵を受けられる。var builder = DistributedApplication.CreateBuilder(args); var cache = builder.AddRedis("cache"); var db = builder.AddSqlServer("sql").AddDatabase("appdb"); builder.AddProject<Projects.Api>("api").WithReference(db); builder.AddProject<Projects.Web>("web").WithReference(cache).WithReference(api); builder.Build().Run();
3つ以上の新規プロジェクト、3つ以上のコンテナ・プロセスを必要するケースなどでは
有効かも...と言う程度。
- Docker コンポーズと異なり、全部 Docker 化する必要はない。
Docker 側のリモート・デバッグが出来るのは良い。 - Docker 側のリモート・デバッグもコンテナ化されているものはプロダクトなのだから
デバッグまでは要らんだろ...と言う感じ。 - 一部のコンテナを「コレから安定したコンテナに変えて移行したい。」と言う
過渡期がプロジェクト中に在れば話は別だが...。 - 新しいモノを覚えるのが大変なので、使いこなせれば良いケド、
使いこなすのが大変なので使わないと言う話になりそう。
補足(この評価について): 「導入コストに見合うか」という原文の慎重な評価は、
判断基準として妥当である。整理すると次のようになる。
条件 Aspire の要否 サービスが 1〜2 個 不要(複雑さが増えるだけ) 全部コンテナ化済みで安定 不要(Compose で足りる) サービスが多く、依存の配線が煩雑 有効 一部だけコンテナ、一部はローカル実行という過渡期 有効(原文が唯一認めている場面) 分散トレースを手軽に見たい 有効 原文が「新しいモノを覚えるのが大変」と述べる点は、
IaC (Infrastructure as Code) の
「適切なターゲットに有効」「スケール・メリットが必要」という留保と
同じ趣旨であり、学習コストを回収できる規模かどうかが判断軸になる。補足(誤解されやすい点): Aspire は
本番のオーケストレーターではない。【開発時】Aspire AppHost がローカルで全部を起動・配線する 【本番時】Aspire は動かない → マニフェストを出力し、Azure Container Apps / K8s へ変換するつまり Docker Compose や Kubernetes を置き換えるものではなく、
「開発時の体験」と「本番へのデプロイ定義の生成」を担う。
この点を誤解すると評価を誤る。補足(観測可能性): Aspire が標準で持つ
OpenTelemetry ベースのダッシュボードは、
Application Insights の
ローカル版のような位置づけで、
ログ・トレース・メトリクスを最初から得られる。
「サービス間の呼び出しがどこで詰まっているか」を
追加実装なしで見られるのは、多サービス構成では効果が大きい。
- .NET Aspire のドキュメント
https://learn.microsoft.com/ja-jp/dotnet/aspire/
Tags: 移行, .NET開発, ツール類