기존 .NET 앱에 오케스트레이션을 추가하는 방법

완료됨

.NET Aspire는 최신 클라우드 네이티브 앱이 직면한 세 가지 문제에 대한 솔루션으로 분류될 수 있습니다. 이는 다음과 같습니다.

  1. 마이크로 서비스 간 오케스트레이션의 복잡성을 관리합니다.
  2. NuGet 패키지를 통해 마이크로 서비스가 구성 요소를 사용하는 방법을 간소화합니다.
  3. 도구 및 템플릿을 통해 개발자 속도를 지원합니다.

이 단원에서는 .NET Aspire 오케스트레이션을 사용하여 기존 클라우드 네이티브 앱에 어떤 이점을 제공하는지 알아봅니다. 그런 다음 .NET Aspire 오케스트레이션에 앱을 등록하는 방법을 알아보고 솔루션에 적용된 변경 내용을 검사합니다.

.NET Aspire 오케스트레이션의 이점

오케스트레이션은 클라우드 네이티브 앱 내에서 다양한 서비스를 조정하고 관리하는 것입니다. .NET Aspire는 솔루션의 서비스 검색, 환경 변수 및 컨테이너 구성을 관리하기 위한 추상화 기능을 제공합니다. 이러한 추상화 기능은 또한 많은 구성 요소와 서비스가 포함된 앱 전체에 일관된 설정 패턴을 제공합니다.

.NET Aspire AppHost 프로젝트와 앱의 다른 서비스 간의 관계를 보여 주는 다이어그램.

.NET Aspire에는 오케스트레이션을 통해 지원하는 세 가지 기본 컴퓨팅 형식이 있습니다.

  • ProjectResource: ASP.NET Core 웹앱과 같은 .NET 프로젝트.
  • ContainerResource: Redis가 포함된 Docker 이미지와 같은 컨테이너 이미지.
  • ExecutableResource: 실행 파일.

.NET Aspire를 Docker Compose를 사용하여 서비스 검색을 관리하는 방법과 비교해 보세요. Docker Compose는 훌륭하지만 여러 프로젝트나 실행 파일을 실행하기만 하면 생산성이 저하되기 시작합니다. 컨테이너 이미지를 빌드하고 YAML을 구성하여 연결한 다음 컨테이너 내부에서 앱을 실행해야 합니다. 또한 환경 변수 대체(및 포함)가 있고 IntelliSense가 없으므로 정확히 무엇이 실행되고 있고 그 이유는 무엇인지 파악하기 어렵습니다. 디버깅도 어려울 수 있습니다.

선언적 코드를 통한 구성이 더 좋습니다. .NET Aspire를 사용하면 이미 알고 있는 것 이상을 알아볼 필요는 없습니다. .NET Aspire는 실제 프로그래밍 언어를 사용하여 Docker Compose와 같은 오케스트레이터로 쉽게 시작하고 크기 스케일 업할 수 있는 더 나은 환경입니다.

.NET Aspire 오케스트레이션은 다음과 같은 방식으로 개발을 지원합니다.

  • 앱 구성: .NET Aspire는 애플리케이션을 구성하는 .NET 프로젝트, 컨테이너, 실행 파일 및 클라우드 리소스를 지정합니다.
  • 서비스 검색 및 연결 문자열 관리: 앱 호스트는 개발자 환경을 간소화하기 위해 올바른 연결 문자열과 서비스 검색 정보를 삽입하는 것을 관리합니다.

.NET Aspire 오케스트레이션에 기존 앱 등록

Visual Studio는 .NET Aspire 오케스트레이션에 기존 프로젝트를 참여시키는 메뉴를 제공합니다.

.NET Aspire Orchestrator 지원이 강조 표시된 추가 메뉴의 스크린샷.

솔루션에 처음으로 오케스트레이션을 추가하면 대화 상자에서 프로젝트 이름 접두사를 묻고 .NET Aspire AppHostServiceDefaults 프로젝트가 추가되었음을 설명합니다. 이미 오케스트레이션된 솔루션에 더 많은 프로젝트를 추가하면 대화 상자에서 해당 프로젝트를 포함하도록 AppHost 프로젝트가 업데이트되었음을 알려 줍니다.

새 프로젝트를 만드는 경우 새 프로젝트 워크플로 중에 Visual Studio에서 .NET Aspire 오케스트레이션에 참여할 것인지 묻습니다.

Enlist in Aspire 오케스트레이션 옵션이 강조 표시된 새 프로젝트 워크플로의 스크린샷.

Aspire가 기존 솔루션에 적용한 변경 내용

솔루션에 .NET Aspire 오케스트레이션을 추가하면 다음과 같은 변경 내용이 발생합니다.

  • AppHost 프로젝트가 추가되었습니다. 프로젝트에는 오케스트레이션 코드가 포함되어 있습니다. 이는 앱의 진입점이 되며 앱 시작 및 중지를 담당합니다. 또한 서비스 검색 및 연결 문자열 관리도 관리합니다.
  • ServiceDefaults 프로젝트가 추가되었습니다. 프로젝트는 OpenTelemetry를 구성하고, 기본 상태 검사 엔드포인트를 추가하고, HttpClient를 통해 서비스 검색을 사용하도록 설정합니다.
  • 솔루션의 기본 시작 프로젝트가 AppHost로 변경되었습니다.
  • 오케스트레이션에 등록된 프로젝트에 대한 종속성은 AppHost 프로젝트에 추가됩니다.
  • .NET Aspire 대시보드가 솔루션에 추가되어 바로 가기를 사용하여 솔루션의 모든 프로젝트 엔드포인트에 액세스할 수 있습니다.
  • 대시보드는 솔루션의 프로젝트에 대한 로그, 추적 및 메트릭을 추가합니다.

웹앱 프로젝트에 오케스트레이션을 추가하면 .NET Aspire는 자동으로 ServiceDefaults 프로젝트에 대한 참조를 추가합니다. 그런 다음 Program.cs의 코드를 다음과 같이 변경합니다.

  • 기본 OpenTelemetry, 미터 및 서비스 검색을 사용하도록 설정하는 AddServiceDefaults에 대한 호출을 추가합니다.
  • /health/alive와 같은 기본 엔드포인트를 사용하도록 설정하는 MapDefaultEndpoints 호출을 추가합니다.