既存のアプリを Aspireify する
このガイドでは、既存のアプリケーションに Aspire のオーケストレーションを追加する方法を紹介します。アプリが C#、Python、JavaScript、またはそれらの組み合わせで書かれていても問題ありません。ゼロから始めるのではなく、 aspire init コマンドを使って、現在のプロジェクトに段階的に Aspire を取り入れていきます。
既存のアプリに Aspire を追加する理由は?
Section titled “既存のアプリに Aspire を追加する理由は?”分散アプリケーションが成長すると、複数のサービスを調整する作業は、設定ファイルの乱立、ハードコードされた URL、壊れやすい起動スクリプトといった“絡み合った糸”のようになっていきます。環境ごとに異なる接続文字列の管理、サービス間依存関係の手作業での配線、マイクロサービス全体にまたがる問題の追跡…。開発環境のセットアップも儀式のようになり、「データベース → キャッシュ → サービス A → サービス B」の順で起動しなければならず、わずかな手順ミスで最初からやり直し、ということも珍しくありません。
Aspire は、これらの複雑さを ひとつの統合オーケストレーション層 によって解消します。アプリケーション全体を一つのシステムとして扱い、コード内でサービスとその関係を一度定義するだけで (AppHost)、Aspire が自動的にサービス検出を行い、設定を挿入し、ログ・トレース・メトリクスを含むダッシュボードまで提供します。サービスが C#、Python、JavaScript のいずれで書かれていても、あるいはそれらが混在していても、開発からデプロイまで一貫した体験が得られます。
そして何より魅力的なのは、Aspire を段階的に採用できる ことです。まずはオーケストレーションを導入し、準備ができたら可観測性を追加し、必要に応じて外部サービスを統合するといった柔軟な進め方ができます。既存のコードベースに大幅な変更を加える必要はほとんどなく、もし Aspire が合わないと感じた場合でも元に戻すことができます。
始める前に、アプリケーションの使用言語に応じて、次の要件を満たすようにインストールされていることを確認してください。
- .NET SDK 10.0 以降 — アプリケーションの言語に関係なく、Aspire AppHost に必要です。
- Aspire CLI のインストール — オーケストレーションやデプロイのコマンドに必要です。
- Aspire を追加する既存のアプリケーション。
開発言語ごとの要件
Section titled “開発言語ごとの要件”C# アプリケーションの場合:
- 1 つ以上の .NET または ASP.NET Core プロジェクト (
.csproj) を含むソリューション - Visual Studio 2022 17.13 以降、Visual Studio Code、JetBrains Rider(任意)
プロジェクトタイプの例:
- ASP.NET Core Minimal API
- ASP.NET Core Razor Pages または Blazor アプリ
- コンソールアプリケーション
- Worker サービス
- gRPC サービス
- Azure Functions
Python アプリケーションの場合:
- Python 3.10 以降 がインストールされていること
- パッケージ管理のための uv (推奨) または pip
- 既存の Python アプリケーション
アプリケーションタイプの例:
- FastAPI web アプリケーション
- Flask web アプリケーション
- Django アプリケーション
- Python スクリプト や Worker プロセス
- Streamlit などのその他 Python Web フレームワーク
JavaScript/TypeScript アプリケーションの場合:
- Node.js 22 以降 がインストールされていること
- パッケージ管理のための npm, yarn, or pnpm
- 既存の JavaScript/TypeScript アプリケーション
アプリケーションタイプの例:
- React、 Vue、 Svelte アプリケーション (特に Vite ベース)
- Node.js/Express API
- Next.js アプリケーション
- Angular アプリケーション
- TypeScript バックエンド サービス
プロセスの概要
Section titled “プロセスの概要”既存のアプリケーションに Aspire を追加する手順は、主に次のステップで進めます:
- Aspire 対応を初期化 —
aspire initを使用して AppHost(オーケストレーション層)を追加します。 - アプリケーションを追加 — AppHost に C#、Python、JavaScript のアプリケーションを登録します。
- テレメトリーを構成(任意) — 可観測性のために OpenTelemetry を追加します。
- 統合を追加(任意) — データベース、キャッシュ、メッセージキューなどを接続します。
- 実行と検証 — Aspire オーケストレーションでアプリケーションの動作を確認します。
Aspire 対応を初期化
Section titled “Aspire 対応を初期化”aspire init コマンドは、既存のアプリケーションに Aspire を追加するための出発点です。このコマンドはプロジェクト構造を分析し、サービスをオーケストレーションする AppHost を追加します。
-
プロジェクトのディレクトリに移動します:
ソリューションのディレクトリに移動 cd /path/to/your-solutionプロジェクトルートに移動 cd /path/to/your-projectワークスペースルートに移動 cd /path/to/your-workspace -
aspire initを実行して Aspire を初期化:Aspire を初期化 aspire initaspire initコマンドは、既定で 対話モード で実行されます。実行すると次の処理が行われます。:- 既存のソリューション構成を検出する - プロジェクトベースの
AppHost(
AppHost.csを含む AppHost プロジェクト)を作成する - プロジェクトを分析し、オーケストレーションに追加すべきものを提案する - 必要な Aspire パッケージをインストールする
- 既存のプロジェクト構成を検出する - ファイルベースの
AppHost(
apphost.cs)を作成する - Python アプリケーションを分析し、オーケストレーションに追加すべきものを提案する - 必要な Aspire パッケージをインストールする
- 既存のワークスペース構成を検出する - ファイルベースの
AppHost(
apphost.cs)を作成する - JavaScript / Node.js アプリケーションを分析し、オーケストレーションに追加すべきものを提案する - 必要な Aspire パッケージをインストールする
aspire initコマンドおよびそのオプションの詳細については、 CLI リファレンス:aspire initを参照してください。 - 既存のソリューション構成を検出する - プロジェクトベースの
AppHost(
aspire init は何を作成するのか?
Section titled “aspire init は何を作成するのか?”aspire init を実行すると、ソリューションにはプロジェクトベースの AppHost が作成されます:
- ExampleEcommerce.sln (updated)
ディレクトリsrc/
ディレクトリExampleEcommerce.AppHost/ (new) orchestration project
- ExampleEcommerce.AppHost.csproj project file
- AppHost.cs orchestration code
ディレクトリApi/
- ExampleEcommerce.Api.csproj
- Program.cs
ディレクトリControllers/
- …
ディレクトリWeb/
- ExampleEcommerce.Web.csproj
- Program.cs
ディレクトリPages/
- …
ディレクトリOrderProcessor/
- ExampleEcommerce.OrderProcessor.csproj
- Worker.cs
これは Web フロントエンド、API サービス、バックグラウンド ワーカーを備えた典型的な e コマース ソリューションの例です。
aspire init を実行すると、プロジェクトにはファイルベースの AppHost が作成されます:
ディレクトリmy-saas-app/
- apphost.cs (new) orchestration code
- apphost.run.json (new) configuration
ディレクトリapi/
- main.py
ディレクトリrouters/
- …
ディレクトリmodels/
- …
- pyproject.toml
ディレクトリfrontend/
- app.py
ディレクトリtemplates/
- …
ディレクトリstatic/
- …
- requirements.txt
ディレクトリworker/
- tasks.py
- celery_config.py
- requirements.txt
これは FastAPI バックエンド、Flask フロントエンド、Celery ワーカーを備えた典型的な SaaS アプリケーションの例です。
aspire init を実行すると、プロジェクトにはファイルベースの AppHost が作成されます:
ディレクトリmy-store/
- apphost.cs (new) orchestration code
- apphost.run.json (new) configuration
ディレクトリpackages/
ディレクトリapi/
ディレクトリsrc/
- server.js
ディレクトリroutes/
- …
- package.json
ディレクトリweb/
ディレクトリsrc/
- App.tsx
ディレクトリcomponents/
- …
- package.json
- vite.config.ts
ディレクトリadmin/
ディレクトリsrc/
- main.ts
ディレクトリviews/
- …
- package.json
- package.json (workspace root)
これは Node.js API、React ストアフロント、管理ダッシュボードを備えた典型的なモノレポの例です。
新しく作成された AppHost プロジェクト内の AppHost.cs ファイルには、最初に次のような最小限のスターターコードが含まれています:
var builder = DistributedApplication.CreateBuilder(args);
// TODO: Add resources here
builder.Build().Run();apphost.cs ファイルには、最初に次のような最小限のスターターコードが含まれています:
#:sdk Aspire.AppHost.Sdk@13.0.0
var builder = DistributedApplication.CreateBuilder(args);
// TODO: Add resources here
builder.Build().Run();apphost.cs ファイルには、最初に次のような最小限のスターターコードが含まれています:
#:sdk Aspire.AppHost.Sdk@13.0.0
var builder = DistributedApplication.CreateBuilder(args);
// TODO: Add resources here
builder.Build().Run();これは出発点となるコードです。次のセクションでは、既存のアプリケーションを追加し、それらの関係を構成していきます。
AppHost にアプリケーションを追加する
Section titled “AppHost にアプリケーションを追加する”AppHost を用意したら、既存のアプリケーションを登録する必要があります。まず、アプリケーションの種類に応じたホスティング パッケージをインストールし、その後 AppHost にリソースを追加します。
ホスティング パッケージのインストール
Section titled “ホスティング パッケージのインストール”C# プロジェクトで、プロジェクトベースのオーケストレーション (.csproj ファイル) を使用している場合、追加のパッケージは不要です。基本の Aspire SDK には、 AddProject<T> (またはファイルベース アプリ用の AddCSharpApp)のサポートが含まれています。
Python アプリケーションでは、Python 用のホスティング パッケージをインストールします。:
aspire add pythonAspire CLI は対話的です。求められたら適切な結果を選択してください:
Select an integration to add:
> python (Aspire.Hosting.Python)> Other results listed as selectable options...#:package Aspire.Hosting.Python@*このパッケージは、AddUvicornApp、AddPythonApp、AddPythonModule などのメソッドを提供します。
JavaScript / TypeScript アプリケーションの場合は、JavaScript 用のホスティング パッケージをインストールします:
aspire add javascriptAspire CLI は対話的です。求められたら適切な結果を選択してください:
Select an integration to add:
> javascript (Aspire.Hosting.JavaScript)> Other results listed as selectable options...#:package Aspire.Hosting.JavaScript@*このパッケージは、AddViteApp、AddNodeApp、AddJavaScriptApp などのメソッドを提供します。
AppHost でリソースをモデル化する
Section titled “AppHost でリソースをモデル化する”AppHost プロジェクト内の AppHost.cs
ファイルを更新し、アプリケーションをリソースとして登録します。リソースは分散アプリケーションの構成要素であり、各サービス、コンテナー、インフラストラクチャ
リソースは、Aspire がオーケストレーションできる対象になります。
apphost.cs
ファイルを更新し、アプリケーションをリソースとして登録します。リソースは分散アプリケーションの構成要素であり、各サービス、コンテナー、インフラストラクチャ
リソースは、Aspire がオーケストレーションできる対象になります。
C# プロジェクトの場合は、AddProject を使用して既存の C# プロジェクトを参照します:
var builder = DistributedApplication.CreateBuilder(args);
var api = builder.AddProject<Projects.ExampleEcommerce_Api>("api") .WithHttpHealthCheck("/health");
var web = builder.AddProject<Projects.ExampleEcommerce_Web>("web") .WithExternalHttpEndpoints() .WithReference(api) .WaitFor(api);
var orderProcessor = builder.AddProject<Projects.ExampleEcommerce_OrderProcessor>("orderprocessor") .WithReference(api);
builder.Build().Run();主なメソッド:
AddProject<T>- ソリューション内の .NET プロジェクトを追加します。WithHttpHealthCheck- HTTP エンドポイントを通じてサービスの正常性を監視します。WithReference- サービス間通信を有効にします。WaitFor- 適切な起動順序を保証します。
Aspire では、Python アプリケーション向けにいくつかのメソッドが提供されています:
#:sdk Aspire.AppHost.Sdk@13.0.0#:package Aspire.Hosting.Python@13.0.0
var builder = DistributedApplication.CreateBuilder(args);
// FastAPI backendvar api = builder.AddUvicornApp("api", "./api", "main:app") .WithUv() .WithHttpHealthCheck("/health");
// Flask frontendvar frontend = builder.AddUvicornApp("frontend", "./frontend", "app:app") .WithUv() .WithExternalHttpEndpoints() .WithReference(api) .WaitFor(api);
// Celery workervar worker = builder.AddPythonApp("worker", "./worker", "celery") .WithUv() .WithArgs("worker", "-A", "tasks") .WithReference(api);
builder.Build().Run();主なメソッド:
AddUvicornApp- FastAPI、Flask などの ASGI / WSGI フレームワーク向け。AddPythonApp- 単体の Python スクリプト向け。WithUv()- 高速なパッケージ管理のために uv を使用します。(推奨)WithPip()- 従来の pip を使用したパッケージ管理。
JavaScript アプリケーションの場合は、アプリケーションの種類に応じて適切なメソッドを使用します:
#:sdk Aspire.AppHost.Sdk@13.0.0#:package Aspire.Hosting.JavaScript@13.0.0
var builder = DistributedApplication.CreateBuilder(args);
// Node.js APIvar api = builder.AddNodeApp("api", "./packages/api", "src/server.js") .WithNpm() .WithHttpHealthCheck("/health");
// React storefrontvar web = builder.AddViteApp("web", "./packages/web") .WithExternalHttpEndpoints() .WithReference(api) .WaitFor(api);
// Admin dashboardvar admin = builder.AddViteApp("admin", "./packages/admin") .WithExternalHttpEndpoints() .WithReference(api) .WaitFor(api);
builder.Build().Run();主なメソッド:
AddViteApp- Vite ベースのアプリケーション(React、Vue、Svelte など)向け。AddNodeApp- Node.js アプリケーション向け。AddJavaScriptApp-npm/yarn/pnpm を使用する汎用的な JavaScript アプリケーション向けWithNpm()/WithYarn()/WithPnpm()- 使用するパッケージ マネージャーを指定
WithRunScript- 開発時に実行する npm スクリプトを指定
サービスを接続する
Section titled “サービスを接続する”WithReference の呼び出しにより、サービス間の依存関係が確立され、サービス検出が有効になります:
// Omitted for brevity...
var api = builder.AddProject<Projects.YourApi>("api");
var web = builder.AddProject<Projects.YourWeb>("web") .WithReference(api); // Web can call API
var worker = builder.AddProject<Projects.YourWorker>("worker") .WithReference(api); // Worker can call API
// Omitted for brevity...// Omitted for brevity...
var api = builder.AddUvicornApp("api", "../python-api", "main:app") .WithUv();
var worker = builder.AddPythonApp("worker", "../python-worker", "worker.py") .WithReference(api); // Worker gets API_HTTP and API_HTTPS env vars
// Omitted for brevity...// Omitted for brevity...
var api = builder.AddNodeApp("api", "../node-api", "server.js") .WithNpm();
var frontend = builder.AddViteApp("frontend", "../react-frontend") .WithReference(api); // Frontend gets API_HTTP and API_HTTPS env vars
// Omitted for brevity...WithReference を呼び出すことで、リソース間の依存関係を宣言します。あとは Aspire が自動的に処理し、ローカル実行時でも本番環境でも、サービス同士が円滑に通信できるように、実行時およびデプロイ時に必要な構成を自動で注入してくれます。
テレメトリ構成を追加する(任意)
Section titled “テレメトリ構成を追加する(任意)”ServiceDefaults は、.NET サービスに可観測性、回復性、正常性チェックを追加するための標準化された方法を提供します。この手順は任意ですが、本番アプリケーションでは推奨されます。
-
aspire initの実行中に、ServiceDefaults を追加するかどうかを確認される場合があります。最初に追加しなかった場合でも、後から Aspire CLI を使用するか、手動で追加できます。 -
ServiceDefaults を手動でプロジェクトに追加する:
.NET CLI — ServiceDefaults をプロジェクトに追加する dotnet new aspire-servicedefaults -n YourProject.ServiceDefaultsdotnet sln add YourProject.ServiceDefaultsdotnet add YourProject reference YourProject.ServiceDefaults -
プロジェクトの
Program.csを更新して、ServiceDefaults を使用するようにする:Program.cs — ServiceDefaults を追加する var builder = WebApplication.CreateBuilder(args);// Add Aspire ServiceDefaults for observability and resiliencebuilder.AddServiceDefaults();// ... your existing service configuration ...var app = builder.Build();// Map Aspire ServiceDefaults endpointsapp.MapDefaultEndpoints();// ... your existing middleware ...app.Run();
ServiceDefaults の詳細については、 Service Defaults を参照してください。
Python アプリケーションは、OpenTelemetry を使用して Aspire ダッシュボードにテレメトリを送信できます:
-
Python アプリケーションに OpenTelemetry パッケージをインストールします:
Install OpenTelemetry packages uv add opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpcuv add opentelemetry-instrumentation-fastapi # For FastAPI# Or for Flask:# uv add opentelemetry-instrumentation-flask -
Python アプリケーションで OpenTelemetry を構成します:
Python — Configure OpenTelemetry import osfrom opentelemetry import trace, metricsfrom opentelemetry.sdk.trace import TracerProviderfrom opentelemetry.sdk.metrics import MeterProviderfrom opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporterfrom opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporterfrom opentelemetry.sdk.resources import Resourcefrom opentelemetry.instrumentation.fastapi import FastAPIInstrumentor# Get OTLP endpoint from environment (injected by Aspire)otlp_endpoint = os.getenv("OTEL_EXPORTER_OTLP_ENDPOINT")# Configure tracing and metricsresource = Resource.create({"service.name": "api"})trace.set_tracer_provider(TracerProvider(resource=resource))metrics.set_meter_provider(MeterProvider(resource=resource))# Instrument your FastAPI appFastAPIInstrumentor.instrument_app(app)
JavaScript / Node.js アプリケーションも、OpenTelemetry を使用してテレメトリを送信できます:
-
OpenTelemetry パッケージをインストールします:
OpenTelemetry パッケージをインストール npm install @opentelemetry/api @opentelemetry/sdk-node \@opentelemetry/auto-instrumentations-node \@opentelemetry/exporter-trace-otlp-grpc \@opentelemetry/exporter-metrics-otlp-grpc -
テレメトリ構成ファイルを作成します:
JavaScript — telemetry.js const { NodeSDK } = require('@opentelemetry/sdk-node');const {getNodeAutoInstrumentations,} = require('@opentelemetry/auto-instrumentations-node');const {OTLPTraceExporter,} = require('@opentelemetry/exporter-trace-otlp-grpc');const {OTLPMetricExporter,} = require('@opentelemetry/exporter-metrics-otlp-grpc');const {PeriodicExportingMetricReader,} = require('@opentelemetry/sdk-metrics');const { Resource } = require('@opentelemetry/resources');const otlpEndpoint =process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://localhost:4317';const sdk = new NodeSDK({resource: new Resource({ 'service.name': 'frontend' }),traceExporter: new OTLPTraceExporter({ url: otlpEndpoint }),metricReader: new PeriodicExportingMetricReader({exporter: new OTLPMetricExporter({ url: otlpEndpoint }),}),instrumentations: [getNodeAutoInstrumentations()],});sdk.start(); -
アプリケーションのエントリーポイントの先頭で、テレメトリ構成をインポートします:
JavaScript — app.js // This must be first!require('./telemetry');const express = require('express');// ... rest of your app
統合機能を追加する(任意)
Section titled “統合機能を追加する(任意)”Aspire には、Redis、PostgreSQL、RabbitMQ などの一般的なサービスを簡単に扱える統合ライブラリが用意されています。これらの統合機能は、構成、正常性チェック、テレメトリを自動的に処理します。
AppHost に Redis などのホスティング統合を追加し、それを依存するリソースから参照すると、Aspire は必要な構成を自動的に注入します。これには、接続文字列、URL、環境変数、その他サービス固有の設定が含まれ、サービス間での接続文字列の手動管理が不要になります。
-
アプリケーション内で Aspire の統合機能が有効に活用できるサービスを特定します。一般的な対象は次のとおりです:
- データベース(PostgreSQL、SQL Server、MongoDB)
- キャッシュ(Redis、Valkey)
- メッセージング(RabbitMQ、Azure Service Bus、Kafka)
- ストレージ(Azure Blob Storage、AWS S3)
-
aspire addコマンドを使用して、AppHost に統合パッケージを追加します:Add a Redis integration aspire add redisこのコマンドにより、必要な NuGet パッケージが追加され、統合の構成を支援します。
-
AppHost を更新して統合機能を参照し、すべてのサービス間で共有します。:
apphost.cs — Add Redis integration for polyglot apps var builder = DistributedApplication.CreateBuilder(args);// Add Redis resourcevar cache = builder.AddRedis("cache");// Share Redis with .NET APIvar api = builder.AddProject<Projects.YourApi>("api").WithReference(cache).WithHttpHealthCheck("/health");// Share Redis with Python workervar pythonWorker = builder.AddPythonApp("worker", "../python-worker", "worker.py").WithReference(cache); // Python gets CACHE_HOST, CACHE_PORT env vars// Share Redis with Node.js servicevar nodeService = builder.AddNodeApp("service", "../node-service", "index.js").WithReference(cache); // Node.js gets CACHE_HOST, CACHE_PORT env varsbuilder.Build().Run(); -
各開発言語で統合機能を構成します:
Redis クライアントを .NET プロジェクトに追加 dotnet add YourApi package Aspire.StackExchange.RedisProgram.cs — Redis クライアントを構成する var builder = WebApplication.CreateBuilder(args);builder.AddRedisClient("cache");Redis クライアントを Python プロジェクトに追加 uv add redisPython — Redis クライアントを構成する import osimport redis# Aspire injects CACHE_HOST and CACHE_PORTredis_client = redis.Redis(host=os.getenv("CACHE_HOST"),port=int(os.getenv("CACHE_PORT")),decode_responses=True)Redis クライアントを Node.js プロジェクトに追加 npm install redisJavaScript — Redis クライアントを構成する const redis = require('redis');// Aspire injects CACHE_HOST and CACHE_PORTconst client = redis.createClient({socket: {host: process.env.CACHE_HOST,port: process.env.CACHE_PORT,},});
Integrations section で利用可能な統合機能を参照してください。
Aspire をアプリケーションに追加したので、実際に実行してオーケストレーションの動作を確認しましょう。
-
ソリューション ディレクトリから、Aspire CLI を使用してアプリケーションを実行します:
Aspire でアプリケーションを実行 aspire runAspire CLI は次の処理を行います:
- AppHost(ファイルベースの
apphost.cs)を検出する - ソリューションをビルドする
- オーケストレーションされたすべてのサービスを起動する
- Aspire ダッシュボードを起動する
- AppHost(ファイルベースの
-
ダッシュボードの URL がターミナル出力に表示されます:
出力の例 🔍 Finding apphosts...apphost.csDashboard: https://localhost:17068/login?t=ea559845d54cea66b837dc0ff33c3bd3Logs: ~/.aspire/cli/logs/apphost-13024-2025-11-19-12-00-00.logPress CTRL+C to stop the apphost and exit. -
表示された URL を使用して、ブラウザーでダッシュボードを開きます。次の情報を確認できます:
- オーケストレーションされたすべてのリソースとその状態
- 各サービスのリアルタイム ログ
- 可観測性のためのトレースとメトリクス
- 環境変数と構成情報
-
次の方法で、サービスが正しく動作していることを確認します:
- Resources ページでサービスの正常性を確認する
- アプリケーションのエンドポイントにアクセスする
- ダッシュボードでログやトレースを確認する
-
ターミナルで
⌘+C ⌘+C Control + C CtrlC Control + C CtrlC を押して、アプリケーションを停止します。
ボーナスコンテンツ
Section titled “ボーナスコンテンツ”現在 Docker Compose を使用してサービスをオーケストレーションしている場合、Aspire はそれを置き換えることができ、さらに次のような追加のメリットを提供します。:
services: postgres: image: postgres:latest environment: - POSTGRES_PASSWORD=postgres - POSTGRES_DB=mydb ports: - "5432:5432"
api: build: ./api ports: - "8080:8080" environment: - DATABASE_URL=postgres://postgres:postgres@postgres:5432/mydb depends_on: - postgres
web: build: ./web ports: - "3000:3000" environment: - API_URL=http://api:8080 depends_on: - apivar builder = DistributedApplication.CreateBuilder(args);
var db = builder.AddPostgres("postgres").AddDatabase("mydb");
var api = builder.AddProject<Projects.Api>("api").WithReference(db);
var web = builder.AddProject<Projects.Web>("web").WithExternalHttpEndpoints().WithReference(api).WaitFor(api);
builder.Build().Run();Docker Compose と比べた Aspire の主な利点:
- 記述量が圧倒的に少ない — それでいて、より表現力が高く強力。
- URL の手動設定が不要 — サービス同士が自動的に相互発見する。
- 型安全な参照 — サービス依存関係をコンパイル時にチェック可能。
- 組み込みダッシュボード — Prometheus や Grafana などの追加ツールなしで可観測性を実現。
- 開発からデプロイまで一貫 — 同じオーケストレーション コードをローカル実行にも利用でき、Docker Compose の生成や任意の環境へのデプロイが可能。
- 統合ライブラリ — データベース、キャッシュ、メッセージ キュー向けのベストプラクティスを組み込んだ事前構築済みサポート。
- 開発言語非依存 — C#、Python、JavaScript など多くの言語や、コンテナー化されたサービスに対応。
次のステップ
Section titled “次のステップ”おめでとうございます! 既存のアプリケーションに Aspire を正常に追加できました。次におすすめのステップは次のとおりです:
- さらに統合機能を追加する — データベース、キャッシュ、メッセージ キューの利用を簡素化するために、 インテグレーション を確認してください
- 可観測性を構成する — アプリケーションのテレメトリを強化:
- Service Defaults を参照してください
- Standalone dashboard for Python を参照してください
- Standalone dashboard for Node.js を参照してください
- アプリケーションをデプロイする — 最初のアプリをデプロイする チュートリアルに従って、Aspire アプリケーションをデプロイしてください
- ダッシュボードを活用する — Aspire ダッシュボード とその機能について詳しく学びましょう
- ポリグロット(多開発言語)機能について学ぶ: