푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 도구 및 생산성

Aspire 9.5 소개 - 이 필수 도구를 빠르게 시작하십시오

Tim Corey
43분 49초

웹 애플리케이션 개발을 하는 모든 최신 .NET 개발자는 Aspire 9.5 사용법을 알아야 합니다. Tim Corey는 그의 상세한 비디오 " Aspire 9.5 소개 - 이 필수 도구로 빠르게 시작하기 "에서 새로운 .NET Aspire 시스템을 소개하고, 그 기능, 가치, 그리고 빠르게 시작하는 방법을 설명합니다.

이 영상에서 Tim은 Visual Studio와 최신 프로젝트 템플릿을 사용하여 예제 솔루션을 단계별로 구축합니다. 이 글에서는 그의 단계별 진행 과정을 면밀히 따라가며, 프로젝트 파일, 설정 과정, 그리고 Aspire를 통해 프로덕션 환경에 적합한 분산 앱을 구축하는 데 필요한 개발자 경험에 대한 완벽한 가이드를 제공합니다.

Aspire 9.5 시작하기 및 설치

Tim은 Aspire의 목적을 설명하는 것으로 시작합니다. API나 웹 애플리케이션을 개발하는 모든 .NET 개발자는 이 필수적인 Microsoft 도구를 이해해야 합니다. Aspire의 기능에 대한 혼란이 있었기에 Tim은 Aspire의 목적, 설정 및 사용법을 처음부터 자세히 설명하기 시작했습니다.

그는 Visual Studio를 열고 Aspire 시작 앱 템플릿을 사용하여 새 프로젝트를 시작합니다. Aspire가 설치되어 있지 않은 경우, 그는 Microsoft 웹사이트에서 Aspire 설치 및 도구를 참조하라고 안내하며, .NET CLI, Visual Studio 또는 VS Code를 통해 설치할 수 있다고 언급합니다. 편의를 위해 Tim은 CLI 명령어를 사용할 것을 권장합니다.

dotnet new install aspire.templates

이 과정을 통해 Aspire 9.5를 포함한 최신 프로젝트 템플릿이 설치됩니다. 설치 후 템플릿이 표시되려면 Visual Studio를 다시 시작해야 할 수 있습니다.

Tim은 Aspire 데모 앱을 선택하고, .NET 9를 선택하고, HTTPS를 활성화하고, 캐싱을 위해 Redis 통합을 사용합니다. 이는 Aspire가 전체 앱을 로컬에서 관리하는 실제 시나리오를 보여줍니다. 그는 단위 테스트를 건너뛰고 솔루션 파일 생성으로 넘어갑니다.

프로젝트 구조 및 앱 모델 살펴보기

프로젝트가 생성되면 Tim은 Aspire의 앱 모델에서 생성된 프로젝트 파일을 분석합니다. 이 솔루션은 일반적인 .NET 프로젝트와 Aspire 전용 프로젝트를 모두 반영하는 네 가지 주요 프로젝트로 구성되어 있습니다.

  1. 웹 프로젝트 – Blazor 기반 웹 애플리케이션.

  2. API 서비스 – 데이터 또는 비즈니스 로직을 위한 백엔드 서비스.

  3. AppHost – 전체 앱을 실행하는 단일 파일인 AppHost입니다.

  4. ServiceDefaults – 상태 확인, 서비스 검색 및 원격 측정 설정이 포함된 라이브러리입니다.

처음 두 개는 일반적인 분산 시스템(프런트엔드 및 백엔드)을 나타내고, 나머지 두 개는 환경 변수, 종속성 및 리소스 수명 주기 이벤트 API를 관리하기 위한 Aspire의 통합 툴체인을 나타냅니다.

Tim은 이 새로운 앱 모델이 멀티 프로젝트 오케스트레이션을 위한 탁월한 지원을 제공하여 개발자가 단 하나의 명령으로 전체 앱을 실행할 수 있도록 해준다고 강조합니다. AppHost는 시작 순서와 종속성을 제어하는 ​​반면, ServiceDefaults는 구성 기본값, 상태 확인 및 원격 측정 통합을 자동으로 주입합니다.

Aspire가 지역 개발을 간소화하는 이유는 무엇일까요?

Tim은 Aspire 없이 분산 시스템을 로컬에서 관리할 때 발생하는 문제점을 설명합니다. 기존 방식에서는 개발자가 각 서비스에 대해 컨테이너 런타임 설정, 포트 포워딩 및 연결 문자열을 수동으로 구성해야 했습니다. 각 개발자는 환경 변수, 사용자 비밀 키, Redis 또는 API 연결을 개별적으로 복제해야 합니다.

Aspire를 사용하면 Aspire CLI가 이 작업을 자동으로 처리합니다. 이 시스템은 개발 컨테이너 또는 Docker 인스턴스를 통해 Redis 컨테이너와 같은 종속성을 실행하고, 엔드포인트 검색을 관리하며, 서비스 검색을 사용하여 서비스 간의 비공개 액세스를 제공합니다.

Aspire는 리버스 프록시 및 엔드포인트 확인 시스템을 사용하므로 웹 프런트엔드는 하드코딩된 포트 번호를 알 필요가 없습니다. 단순히 API 이름을 (예: "apiservice") 지정하기만 하면 Aspire가 나머지를 알아서 처리합니다.

이는 번거로운 설정 단계를 제거하여 개발자가 인프라가 아닌 코드 작성에 집중할 수 있도록 함으로써 개발자 경험을 획기적으로 향상시킵니다.

AppHost에서 서비스 및 종속성 정의하기

Tim은 Aspire 구성의 핵심인 AppHost의 Program.cs 파일을 보여줍니다. Aspire는 변수 빌더 패턴을 사용하여 다음과 같은 간단한 명령으로 각 서비스를 정의합니다.

var cache = builder.AddRedis("cache");
var api = builder.AddProject<Projects.ApiService>("apiservice");
var web = builder.AddProject<Projects.Web>("webfrontend")
    .WithReference(cache)
    .WithReference(api);
var cache = builder.AddRedis("cache");
var api = builder.AddProject<Projects.ApiService>("apiservice");
var web = builder.AddProject<Projects.Web>("webfrontend")
    .WithReference(cache)
    .WithReference(api);

이 구문은 각 리소스를 정의하고, 종속성 순서를 설정하며, 명확한 리소스 수명 주기를 생성합니다. Aspire는 종속성 대기를 자동으로 처리하여 캐시가 먼저 시작되고, 그 다음 API, 마지막으로 웹 프런트엔드가 시작되도록 합니다.

이 간단한 지침 세트는 개발자에게 시작 동작을 세부적으로 제어할 수 있는 권한을 부여하여 실제 운영 환경에서 실행되는 분산 앱과 유사한 방식으로 작동하게 합니다.

Aspire 실행 및 대시보드 이해하기

Tim이 프로젝트를 실행하면 Aspire는 자체 컨테이너 런타임을 시작하고 모든 것을 모니터링할 수 있는 중앙 인터페이스인 Aspire 대시보드를 엽니다. 처음에 "컨테이너 런타임이 비정상입니다" 라는 오류 메시지가 나타납니다. Docker가 실행 중이 아니라는 뜻입니다. Docker가 시작되면 Aspire는 자동으로 Redis 실행 파일 리소스를 초기화하고 이를 앱의 나머지 부분에 연결합니다.

대시보드에는 각 리소스의 상태를 나타내는 색상으로 구분된 상태 아이콘이 표시됩니다. Redis, API 및 웹 프런트엔드가 모두 실행되면 대시보드가 ​​녹색으로 바뀌어 전체 앱이 정상적으로 작동하고 있음을 나타냅니다.

이 알림 시스템은 실시간 상태를 즉시 반영하여 표준 콘솔 로그보다 더 명확한 오류 메시지를 제공합니다. 개발자는 서비스 관계를 시각화하고, 지표를 모니터링하고, 심지어 UI에서 직접 리소스 엔드포인트에 액세스할 수도 있습니다.

Aspire 대시보드를 통한 시각적 인사이트

대시보드의 그래프 보기에서는 서비스들이 어떻게 연결되는지 시각화할 수 있습니다. 예를 들어 웹 프런트엔드는 Redis와 API 서비스 모두에 연결되지만, API는 독립적입니다. 이 추적 보기를 통해 내부 호출 흐름과 종속성을 이해할 수 있습니다.

팀은 대시보드에 추적 필터링 옵션 및 시간 분석 표시와 같은 추적 세부 정보 개선 사항이 포함되어 있다고 강조합니다. 개발자는 Aspire의 추적 보기 기능을 사용하여 서비스 간 HTTP 요청을 추적하고 성능 영향을 확인할 수 있습니다.

중앙 집중식 로깅 및 구조화된 로그

Aspire는 모든 프로젝트 파일의 콘솔 로그를 하나의 보기로 통합합니다. 개발자는 여러 개의 로그 창을 관리하는 대신 대시보드를 사용하여 웹 앱, API 및 Redis 통합을 포함한 모든 서비스의 로그를 하나의 타임라인에서 볼 수 있습니다.

Tim은 Aspire가 구조화된 로깅을 사용하여 ID, 매개변수 및 태그와 같은 컨텍스트가 풍부한 항목을 입력할 수 있음을 보여줍니다. 개발자는 로그를 수준(정보, 경고, 오류) 또는 속성 값으로 필터링할 수 있습니다.

예를 들어, 개발자는 "evenOddResult"가 "odd"인 항목만 볼 수 있습니다. 이 고급 로그 필터링 기능은 Aspire의 색상 코드 접두사와 결합되어 디버깅을 직관적이고 시각적으로 만들어 줍니다.

추적 및 원격 측정 데이터 작업

추적 탭에서 Tim은 Aspire가 앱의 여러 서비스에서 요청을 추적하는 방법을 보여줍니다. 각 추적 정보에는 어떤 서비스가 무엇을 처리했는지 보여주는 시간, 상태 및 기간이 포함되어 있습니다.

예를 들어, "GetWeather" 요청을 보면 캐시 적중 여부, API 호출 발생 시점, 각 작업에 소요된 시간 등을 확인할 수 있습니다. 이러한 추적 필터링을 통해 병목 현상과 종속성을 정확하게 식별할 수 있습니다.

Aspire는 추적 데이터를 다른 도구나 시스템으로 내보낼 수 있는 OpenTelemetry도 지원하여 개발자가 분산 서비스 전반에 걸쳐 완벽한 관찰 가능성을 확보할 수 있도록 합니다.

실시간 지표 및 성능 모니터링

Tim은 요청 지속 시간, SignalR 활성 연결 수, 활성 요청 수와 같은 지표를 분석합니다. 이러한 지표는 앱의 실시간 상태를 시각화하고 연결 또는 지연 문제를 조기에 감지하는 데 도움이 됩니다.

Aspire 9.5의 메트릭 데이터는 추적 세부 정보 개선 및 향상된 추적 필터링 기능을 통해 개발자가 성능 저하가 발생하는 위치를 실시간으로 정확하게 파악할 수 있도록 지원합니다.

Aspire는 지역 개발을 위한 것이지 생산을 위한 것이 아닙니다.

Tim은 Aspire의 대시보드가 ​​운영 서버에 배포하기 위한 것이 아니라는 점을 분명히 언급했습니다. 이를 배포하면 내부 시스템 세부 정보와 환경 변수가 노출되어 위험할 수 있습니다.

하지만 개발자는 여전히 Aspire의 aspire deploy 명령을 사용하여 Azure Container Apps, Azure Container App Jobs 또는 기타 Aspire 통합에 서비스를 게시할 수 있습니다. 이러한 배포 옵션은 점점 늘어나고 있지만 대시보드와는 별도로 운영됩니다.

Aspire의 목적은 프로덕션 환경을 안전한 업그레이드 및 미리 보기 지원을 통해 로컬에서 프로덕션과 유사한 환경을 구현하는 것이지, 프로덕션 모니터링 시스템을 대체하는 것이 아닙니다.

로깅 및 예외 처리 실험

Tim은 카운터 페이지에 구조화된 로깅을 추가하고 날씨 페이지에 의도적으로 NotImplementedException을 도입했습니다. 재실행 시 대시보드는 구조화된 로그와 처리되지 않은 예외를 즉시 캡처합니다.

그는 Aspire의 로그가 매개변수 이름, 값 및 호출 스택을 포함한 모든 세부 정보를 표시하는 방법을 보여줍니다. GitHub Models 및 Copilot AI와의 통합을 통해 예외에 대한 자동 설명과 수정 코드 제안이 가능해졌습니다. 이는 초기 AI 서비스 및 생성형 AI 시각화 도구가 개발자 경험에 통합된 사례입니다.

추적 필터링을 이용한 오류 분석

추적 탭에서 Tim은 실패한 API 호출이 빨간색 느낌표 아이콘으로 표시되는 방식을 보여줍니다. 하나를 클릭하면 스팬 ID로 필터링된 모든 관련 로그가 표시되며, 여러 .NET 프로젝트에 걸쳐 각 요청을 연결합니다.

로그, 추적 및 상태 점검을 결합한 이 통합 보기는 외부 구성 없이 디버깅 및 관찰 가능한 시스템 구축을 위한 대화형 프롬프트를 제공합니다.

기존 .NET 프로젝트에 Aspire 통합하기

Tim은 기존 앱에 Aspire를 통합하는 방법을 설명합니다. 개발자는 다음 두 가지만 추가하면 됩니다.

  • AppHost 프로젝트는 어떤 서비스가 시작되는지, 그리고 그 서비스의 종속성을 제어합니다.

  • ServiceDefaults 프로젝트는 기능 플래그, 상태 점검, 원격 측정 및 서비스 검색을 제공합니다.

각 프로젝트 파일에서 ServiceDefaults를 참조하면 개발자는 기본 환경 변수, 로깅 설정 및 원격 측정 데이터를 자동으로 얻을 수 있습니다. Aspire의 엔드포인트 해결 시스템을 사용하면 수동 포트 포워딩이나 연결 문자열 관리가 필요 없어집니다.

Aspire를 지역적 사용을 넘어 확장합니다

팀은 Aspire의 기능이 로컬 사용을 넘어 어떻게 확장되고 있는지에 대해 설명합니다. Azure Container Apps 및 Azure AI Foundry 통합을 통해 개발자는 Aspire CLI를 사용하여 최소한의 구성으로 분산 시스템을 배포할 수 있습니다.

이 시스템은 이미 사용자 지정 리소스 아이콘, 이름 속성을 지원하며 OpenAI 엔드포인트 또는 Azure PostgreSQL 연결과 같은 AI 서비스에 대한 미리 보기 지원을 제공합니다.

Aspire의 통합 툴체인은 버전 관리와 주요 버전 및 마이너 버전 간의 안전한 업그레이드를 지원하여 팀이 Aspire 9.5와 같은 업데이트를 안심하고 도입할 수 있도록 도와줍니다.

결론 및 향후 전망

영상 말미에서 팀은 Aspire를 "개발자에게는 보물창고"라고 부릅니다. 이 대시보드는 추적 보기, 상태 점검, 로그 및 메트릭을 하나의 통합 패널로 결합하는데, 이는 이전에는 로컬 개발 환경에서 사용할 수 없었던 기능입니다.

팀과 그의 팀에게 있어 이제 모든 새로운 .NET Aspire 프로젝트는 기본적으로 이 시스템을 사용합니다. 이를 통해 사용자 지정 빌드 속도가 빨라지고 개발자 경험이 향상되며 프로덕션 환경에 배포된 앱이 여러 기기에서 일관되게 작동하도록 보장합니다.

그는 주요 Aspire 릴리스에서 추적 필터링, 엔드포인트 해결 및 AI 통합 기능을 지속적으로 개선하는 동시에 안전한 업그레이드와 일반 공급에 중점을 둘 것이라고 언급했습니다.

Tim은 모든 사람이 Aspire 9.5를 살펴보고, 다음 .NET 프로젝트에 활용하고, 간단한 명령 하나로 로그를 확인하고, 개발 터널을 관리하고, 전체 앱을 로컬에서 안심하고 테스트할 수 있도록 권장합니다.

Hero Worlddot related to Aspire 9.5 소개 - 이 필수 도구를 빠르게 시작하십시오
Hero Affiliate related to Aspire 9.5 소개 - 이 필수 도구를 빠르게 시작하십시오

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해