다음을 통해 공유


Aspire 개요

Aspire관찰 가능한 프로덕션 준비 분산 앱을 빌드하기 위한 도구, 템플릿 및 패키지를 제공합니다. 중심에는 앱의 서비스, 리소스 및 연결을 정의하는 코드 우선 단일 진실 소스 인 앱 모델이 있습니다.

Aspire는 하나의 명령으로 전체 앱을 로컬로 시작하고 디버그한 다음, 동일한 컴퍼지션을 사용하여 어디서나Kubernetes, 클라우드 또는 사용자 고유의 서버를 배포하는 통합된 도구 체인을 제공합니다.

확장성은 핵심 초점입니다. Aspire'의 API는 플랫폼을 인프라, 서비스 및 워크플로에 맞게 조정할 수 있도록 설계되었습니다.

Key capabilities

  • 앱 호스트 오케스트레이션: 코드에서 서비스, 종속성 및 구성을 정의합니다.
  • 다양한 통합: 표준화된 인터페이스를 사용하는 인기 있는 서비스에 대한 NuGet 패키지입니다.
  • 일관된 도구: VS Code 및 CLI에 대한 Visual Studio프로젝트 템플릿 및 환경입니다.

공식 지원 정보는 지원 정책을 참조Aspire하세요.

The AppHost

Aspire'의 앱 호스트는 복잡한 구성 파일이 필요하지 않은 코드에서 앱의 서비스 및 종속성을 정의하는 위치입니다. 앱 호스트는 서비스 검색, 환경 변수 및 컨테이너 구성 관리를 간소화하여 로컬 개발 환경에 대한 오케스트레이션을 제공합니다.

데이터베이스에 연결하는 API에 따라 달라지는 프런트 엔드라는 일반적인 3계층 아키텍처를 설명합니다. 에서 Aspire이 토폴로지는 다음 코드와 같이 앱 호스트에 표시됩니다.

var builder = DistributedApplication.CreateBuilder(args);

// Add database service
var postgres = builder.AddPostgres("db")
    .AddDatabase("appdata")
    .WithDataVolume();

// Add API service and reference dependencies
var api = builder.AddProject<Projects.ApiService>("api")
    .WithReference(postgres)
    .WaitFor(postgres);

// Add frontend service and reference the API
var frontend = builder.AddProject<Projects.Frontend>("frontend")
    .WithReference(api);

builder.Build().Run();

앱 호스트는 다음과 같은 문제를 지원합니다.

  • 앱 컴퍼지션: 애플리케이션을 구성하는 프로젝트, 컨테이너, 실행 파일 및 클라우드 리소스를 지정합니다.
  • 서비스 검색 및 연결 문자열 관리: 올바른 연결 문자열 및 네트워크 구성을 자동으로 삽입합니다.

Aspire오케스트레이션은 로컬 개발 환경을 향상시키는 데 중점을 둡니다. 프로덕션 시스템을 대체하는 Kubernetes것이 아니라 개발 중에 하위 수준 구현 세부 정보를 제거하는 추상화가 제공됩니다.

자세한 내용은 오케스트레이션 개요를 참조Aspire하세요.

Aspire 통합

Aspire 통합을 사용하여 앱에 필요한 모든 것을 쉽게 정의할 수 있습니다. 인기 있는 서비스 및 플랫폼에 대한 연결을 간소화하도록 설계된 NuGet 패키지입니다. 각 통합은 클라우드 리소스 설정을 처리하고 상태 검사, 원격 분석 및 구성에 대한 표준화된 패턴을 제공합니다.

통합할 수 있는 리소스는 다음과 같습니다.

  • AI 서비스: 대규모 언어 모델, AI 엔드포인트 및 인식 서비스.
  • 캐시: Redis메모리 내 캐시 및 분산 캐싱 솔루션.
  • 컨테이너: Docker 데이터베이스, 메시지 브로커 및 기타 서비스에 대한 컨테이너입니다.
  • 데이터베이스: SQL Server, PostgreSQL, MySQLMongoDB및 기타 데이터 저장소.
  • 실행 파일: 콘솔 애플리케이션, 스크립트 및 백그라운드 서비스.
  • 프레임워크: 다양한 프레임워크를 사용하여 빌드된 웹 애플리케이션, API 및 마이크로 서비스.
  • Messaging Services: Azure Service Bus, RabbitMQKafka 및 기타 메시징 시스템.
  • 프로젝트: .NET 프로젝트, Node.js 애플리케이션, Python 서비스 등.
  • 스토리지: Blob Storage, 파일 시스템 및 클라우드 스토리지 서비스.

통합은 두 가지입니다. "호스팅" 통합은 연결하는 서비스를 나타내고 "클라이언트" 통합은 해당 서비스의 소비자를 나타냅니다.

Tip

내부적으로 호스팅통합 은 별도의 프로세스를 실행하지 않고 리소스를 구성하는 컨테이너, 실행 파일 또는 C# 코드를 나타낼 수 있습니다. 컨테이너 이미지, 코드베이스, 스크립트 또는 클라우드 리소스를 앱 호스트에 추가할 수 있습니다. 재사용 가능한 Aspire 통합을 만드는 것은 앱에 재사용 가능한 구성 요소를 빌드하는 것과 유사합니다.

대시보드를 사용하여 모니터링 및 문제 해결 Aspire

Aspire 에는 분산 앱에 대한 실시간 가시성을 제공하는 강력한 개발자 대시보드가 포함되어 있습니다. 대시보드를 사용하면 단일 UI에서 리소스를 검사하고, 로그, 추적 및 메트릭을 보고, 앱의 서비스를 관리할 수 있습니다.

앱을 Aspire 실행하면 대시보드가 자동으로 시작됩니다. You can:

  • 앱의 모든 리소스 및 해당 상태를 확인합니다.
  • 모든 서비스에 대한 로그, 추적 및 메트릭을 드릴인합니다.
  • 대시보드에서 직접 리소스를 시작, 중지 또는 다시 시작합니다.
  • 종속성을 시각화하고 문제를 더 빠르게 해결합니다.

대시보드는 솔루션의 Aspire 일부 또는 데이터를 내보내는 모든 앱에 대한 독립 실행형 도구 로 사용할 수 있습니다 OpenTelemetry .

대시보드 개요에 대해 자세히 알아보거나 대시보드 기능 및 사용에 대해 자세히 알아보세요.

개발에서 배포로

'의 앱 호스트에서 Aspire분산 앱을 작성하는 경우 로컬 개발을 위한 서비스를 정의하는 것이 아니라 배포를 위한 기반을 설정하는 것입니다. 로컬로 실행하고 디버그하는 데 사용하는 동일한 컴퍼지션이 프로덕션 배포의 청사진이 되어 개발에서 프로덕션까지 일관성을 보장합니다.

Aspire 는 즐겨 찾는 개발 환경을 위한 프로젝트 템플릿 및 도구 환경을 제공합니다. 이러한 템플릿에는 상태 검사, 로깅 및 원격 분석에 대한 상용구 코드가 포함된 의견 있는 기본값이 포함 됩니다. 템플릿에는 일반적인 구성을 처리하는 서비스 기본값도 포함됩니다.

builder.AddServiceDefaults();

C# 코드에 추가된 경우 이 메서드는 다음을 구성합니다.

  • OpenTelemetry: ASPCore, gRPC 및 HTTP에 대한 형식이 지정된 로깅, 런타임 메트릭 및 추적입니다.
  • 상태 검사: 도구가 앱을 모니터링하기 위해 쿼리할 수 있는 기본 엔드포인트입니다.
  • 서비스 검색: 서비스 검색을 사용하도록 설정하고 그에 따라 구성합니다 HttpClient .

자세한 내용은 서비스 기본값을 참조Aspire하세요.

3계층 아키텍처 예제를 여러 환경에 배포하는 방법을 고려합니다.

Resource Local development Azure AWS
Frontend npm run Azure Container Apps Amazon Elastic Container Service
API service dotnet run Azure Container Apps AWS Lambda
Database docker.io/library/postgres Azure 데이터베이스: PostgreSQL Amazon 관계형 데이터베이스 서비스

Tip

다음은 앱을 배포 Aspire 하는 방법의 몇 가지 예에 불과합니다.

Aspire'의 배포 기능은 유연하며 기존 워크플로를 방해하지 않습니다. 앱 호스트에 정의된 일관된 앱 토폴로지의 이점을 활용하면서 기본 설정 도구 및 서비스를 계속 사용할 수 있습니다.

자세한 내용은 앱 배포Aspire를 참조하세요.

Next steps