푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 배우기
C# 배우기

다른 카테고리

Linux에 .NET Aspire 설정하기

[[academy-video-youtube({"vid": "YV2p0NqKZ-E", "start_time": "0", "title": "Setting Up .NET Aspire on Linux", "creator": "Tim Corey", "length": "18m 53s"})]]

로컬에서 분산 애플리케이션을 실행하는 것은 항상 여러 터미널 창을 조작하고, 각 서비스가 어떤 포트에 바인딩되는지 기억하며, 프론트 엔드가 요청을 수락하기 시작하기 전에 종속성이 정상인지 수동으로 확인해야 했습니다. .NET Aspire는 그 워크플로우를 가져와 서비스 디스커버리, 상태 체크, 원격 감시를 관리하는 단일 오케스트레이션 레이어로 통합합니다. Linux에서 작업하는 C# 개발자에게 설정은 몇 개의 터미널 명령과 VS Code 확장입니다.

그의 비디오 "Linux에서 .NET Aspire 설정하기"에서, Tim Corey는 Linux 머신에 Aspire를 설치하고, VS Code 확장을 설정하고, API 백엔드로 스타터 Blazor 애플리케이션을 스캐폴딩하고, Aspire 대시보드를 통해 구조화 로그, 분산 추적, 메트릭을 데모합니다. 이 에피소드는 또한 그의 Linux 시리즈의 새로운 단계를 시작합니다: "Tiny Ticket"라는 작지만 배포 가능한 헬프 데스크 애플리케이션을 구축하는 것, 앞으로 나올 에피소드에서는 데이터베이스 설정, Azure로의 배포, 크로스 플랫폼 개발을 다룹니다. Linux 시리즈를 계속해서 따라왔거나 Aspire가 실제 개발 워크플로우에 어떻게 맞는지 보고 싶다면, 이 기사는 Tim이 시연하는 모든 단계를 다룹니다.

Aspire CLI 설치하기

[0:48 - 2:20] Tim은 aspire.dev에서 최근 프로젝트가 "Aspire.NET"에서 단순히 "Aspire"로 브랜드를 변경했다고 말하며 시작합니다. 이 이름 변경은 도구의 확장되는 범위를 반영합니다.: Aspire는 여전히 .NET을 기반으로 하고 주로 .NET 개발자를 대상으로 하지만, 이제 TypeScript 앱 호스트도 지원하고 있으며, 다른 언어 통합도 로드맵에 포함되어 있습니다.

설치 자체는 Aspire 문서에 있는 9.2 버전의 단일 bash 명령 복사입니다.

dotnet tool install -g aspirate
dotnet tool install -g aspirate
SHELL

인스톨러를 실행한 후, 도구가 PATH에 등록되도록 터미널 세션을 다시 시작하십시오. 재시작하지 않으면 쉘이 신규 명령어를 인식하지 않을 것입니다.

그런 다음 설치가 정상적으로 완료되었는지 확인하십시오.

aspire --version
aspire --version
SHELL

버전 번호가 출력되면 CLI가 준비된 것입니다. 그 두 단계 (설치, 검증) 프로세스는 터미널 측면에서 전체 설정입니다.

VS Code 확장 설정하기

[2:23 - 3:30] CLI가 설치된 후, VS Code 확장이 다음 단계입니다. 확장 패널을 열고 "Aspire"를 검색하여 Microsoft에서 발행한 공식 확장을 설치합니다. 확장은 프로젝트 스캐폴딩, 실행 구성 지원 및 Aspire 대시보드와의 통합을 추가합니다.

설치 후, VS Code는 CLI 및 확장이 정렬되어 있는지 확인하기 위해 검증 단계를 실행합니다. Tim은 확장이 명령 팔레트를 통해 직접 새 프로젝트를 스캐폴딩할 수 있지만, 대신 CLI 방식을 선택합니다. 이 선택은 고의적인 것입니다: GUI 도구가 오작동했을 때 CLI를 알면 결코 갇혀 있지 않습니다. VS Code 템플릿 선택기가 설치 후 Aspire 템플릿을 표시하지 못했을 때, CLI는 즉각적인 대체 방안을 제공했습니다.

스타터 프로젝트 스캐폴딩하기

[3:30 - 6:42] "새 .NET 프로젝트 생성" VS Code 명령 (Aspire 템플릿을 간헐적으로 발견하지 못함)을 사용하지 않고, Tim은 터미널에서 실행합니다.

aspire new
aspire new
SHELL

대화형 프롬프트에 몇 가지 템플릿 옵션이 나타납니다. 프로덕션 애플리케이션의 경우 일반적으로 비어 있는 C# 앱 호스트를 선택하여 이로부터 빌드합니다. 학습 목적으로, Tim은 최소한의 API로 지원되는 Blazor 프론트 엔드를 생성하는 스타터 앱을 선택합니다. 스타터 템플릿에는 기상 예보 엔드포인트, 카운터 페이지 및 사전 배선된 상태 체크가 포함되어 있으며, 즉시 탐색할 수 있는 작업용 기능이 제공됩니다.

후속 프롬프트에서 남은 설정을 진행합니다.

프로젝트명:         TinyTicket
출력 경로:          TinyTicket
dev localhost 사용:    예
Redis 캐쉬:          아니요
테스트 프로젝트:         아니요
AI 에이전트 환경:     아니요

Tim은 복잡성을 최소화하기 위해 모든 선택적 기능을 비활성화합니다. 목표는 앞으로의 에피소드에서 점진적으로 구축할 수 있는 간결한 시작점을 제공하는 것입니다. 스캐폴딩이 완료되면 VS Code에서 폴더를 열고 프롬프트에 따라 작업 공간을 신뢰하십시오.

프로젝트 구조 이해하기

[6:42 - 10:00] 생성된 솔루션은 네 개의 프로젝트를 포함하고 있으며, 이들 간의 관계는 Aspire가 어떻게 동작하는지 보여줍니다. 앱 호스트 프로젝트는 오케스트레이션 레이어입니다. 그 Program.cs는 대략 열두 줄의 코드입니다:

var builder = DistributedApplication.CreateBuilder(args);

var api = builder.AddProject<Projects.TinyTicket_ApiService>("api")
    .WithHttpHealthCheck("/health");

builder.AddProject<Projects.TinyTicket_Web>("frontend")
    .WithExternalHttpEndpoints()
    .WithHttpHealthCheck("/health")
    .WithReference(api)
    .WaitFor(api);

builder.Build().Run();
var builder = DistributedApplication.CreateBuilder(args);

var api = builder.AddProject<Projects.TinyTicket_ApiService>("api")
    .WithHttpHealthCheck("/health");

builder.AddProject<Projects.TinyTicket_Web>("frontend")
    .WithExternalHttpEndpoints()
    .WithHttpHealthCheck("/health")
    .WithReference(api)
    .WaitFor(api);

builder.Build().Run();

전달되어, 전단계가 시작되기 전에 API에 대한 참조를 선언하고 건강 해지 대기를 시작하는 방법에 주목하세요. 그 의존성 정렬, 서비스 검색, 상태 체크는 코드 수준에서는 Aspire가 제공하는 전부입니다. 이 파일에서 볼 수 없는 숨겨진 마법은 없습니다.

앱 호스트 옆에는 텔레메트리, 구조화 로그 및 상태 체크 등록을 위한 확장 메서드를 포함한 서비스 기본값 프로젝트가 있습니다. 이것들은 선택에 따른 편의입니다.: 이미 서비스에서 OpenTelemetry 또는 건강한 엔드포인트를 구성하지 않은 경우, 기본값이 이를 연결해 줍니다.

API 서비스 프로젝트에는 무작위로 생성된 기상 예보를 반환하는 단일 엔드포인트가 있습니다. 프로젝트는 서비스 이름("api")으로만 구성된 HttpClient를 통해 API를 호출하는 Blazor 애플리케이션입니다. Aspire는 실행 시 해당 이름을 올바른 URL로 해석하므로, Blazor 앱은 절대 포트 번호나 호스트명을 하드 코딩하지 않습니다.

Tim은 중요한 배포 세부사항을 강조합니다: Aspire 자체는 프로덕션에 배포되지 않습니다. 오케스트레이션은 개발 시간 도구입니다. 프로덕션에서는 서비스 URL이 설정 (환경 변수, 앱 설정 또는 배포 파이프라인)에서 제공되며, 앱 호스트 없이 앱이 독립적으로 실행됩니다.

대시보드를 실행하고 탐색하기

[10:59 - 14:46] VS Code의 실행 및 디버그 패널을 통해 앱 호스트를 실행하고, HTTPS 실행 프로파일을 선택합니다. 초기 복원 및 빌드 후, 브라우저에서 Aspire 대시보드가 열립니다. 처음 연결할 때 콘솔 출력에서 로그인 토큰을 붙여넣어야 합니다.

대시보드는 추가 설정 없이 관측 가능성 데이터를 네 가지 범주로 제공합니다.

콘솔 출력은 모든 서비스의 표준 출력을 단일 뷰로 집계합니다. 터미널 탭을 전환하는 대신, 모든 출력을 서비스별로 필터링하여 혼합된 상태로 볼 수 있습니다.

구조화 로그는 로그 항목을 그 구조화된 속성을 유지한 상태로 표시합니다. Tim이 직면한 인증서 신뢰 경고는 여기에서 표시되며, 어떤 서비스가 이를 생성했고 어떤 심각도 수준에서 발생했는지에 대한 전체 컨텍스트가 보입니다.

추적은 분산 호출 체인을 보여줍니다. Blazor 프론트 엔드가 날씨 데이터를 요청할 때, 추적은 프론트 엔드에서의 HTTP GET, API 서비스로의 이동 (비디오에서는 7.35 밀리초 소요), 그리고 총 페이지 렌더 시간을 보여줍니다. Tim은 절대 숫자보다 상대 비교가 더 중요하며: 호출이 정상적으로 5초 걸리는 것이 갑자기 10초가 걸리면 프로파일러를 연결하지 않고도 귀하의 회귀를 찾을 수 있습니다.

메트릭은 서비스별 요청률, 오류율, 자원 소비에 대한 카운터를 제공합니다. 대시보드는 또한 각 서비스의 환경 변수와 엔드포인트 자격 증명을 노출합니다. 이는 설정 값이 올바르게 흐르고 있는지 확인하는 데 유용합니다.

Tiny Ticket 소개: 시리즈 프로젝트

[14:46 - 17:17] Tim은 시리즈의 나머지 부분을 추진할 프로젝트 계획을 설명합니다. Tiny Ticket은 간소화된 헬프 데스크 애플리케이션입니다: 사용자들이 지원 티켓을 제출하고, 시스템이 우선 순위 및 상태를 추적합니다. 데이터 모델은 단일 SQL 테이블일 수도 있습니다. 포인트는 많은 기능을 가진 제품을 구축하는 것이 아니라, Linux에서 빌드, 테스트, 배포 및 외부 서비스 연결과 같은 모든 개발 수명 주기를 짊어지는 수직 슬라이스를 만드는 것입니다.

스타터 템플릿의 기상 예보 및 카운터 페이지는 티켓 보기로 대체되지만, Aspire 오케스트레이션, API-to-프론트엔드 패턴, 서비스 기본값은 그대로 유지됩니다. 향후 에피소드에서는 데이터베이스로 Microsoft SQL Server를 추가하고, Tim은 일반적인 반대 의견: SQL Server를 로컬에서 실행할 수 없는 개발자 (예: ARM 프로세서)들이 때때로 다른 데이터베이스를 선택하는 경우를 다룹니다. 그의 대답은 개발 환경이 프로덕션을 복제해야 한다는 것입니다. 프로덕션 데이터베이스가 SQL Server라면, 개발 환경도 일치해야 하며, 그렇지 않으면 데이터베이스를 컨테이너에서 실행해야 합니다.

정리하기: 제로에서 대시보드까지

[17:17 - 18:20] 20분 이내에 비디오는 Linux에서의 전체 Aspire 설정을 다루며: CLI 설치, VS Code 확장, 스캐폴된 프로젝트, 그리고 0개의 사용자 정의 설정으로 구조화된 로그, 분산 추적, 메트릭을 제공하는 대시보드를 제공합니다. Aspire의 진정한 가치는 어떤 단일 기능이 아니라 마찰의 감소에 있습니다.: 하나의 프로세스를 시작하고, 하나의 대시보드를 모니터링하며, 서비스가 상호 작용하는 방법을 보는 한 장소입니다.

결론

[18:20 - 18:53] Linux에서 Aspire를 설정하려면 CLI 도구, VS Code 확장 및 프로젝트 스캐폴이 필요합니다. 거기서부터 대시보드는 모든 서비스에 대한 관측 가능성을 제공하며 텔레메트리 코드를 작성할 필요가 없습니다. 앱 호스트 파일은 열두 줄에서 서비스 그래프를 정의하고, 서비스 기본값은 수동으로 설정했어야 할 플러밍을 처리합니다.

여기서 소개된 Tiny Ticket 프로젝트는 향후 데이터베이스 통합, Azure 배포, 크로스 플랫폼 워크플로우에 대한 에피소드의 기반이 될 것입니다. 이 시작점에서 따라가는 것은 이미 확인한 인프라를 기반으로 각 새로운 개념을 구축하는 것을 의미합니다.

시리즈 내비게이션: 이 기사는 Linux에서 Tiny Ticket 앱을 빌드하는 C# 시리즈의 일부입니다. 이전: Docker Linux에서 SQL Server. 다음: Linux에서 .NET Aspire에 Swagger UI 추가하기.

예시 팁: 확장 설치 후 VS Code 템플릿 선택기가 Aspire 템플릿을 인식하지 못할 때는 터미널에서 aspire new를 신뢰할 수 있는 대안으로 사용한 후, 확장 상태를 동기화하기 위해 VS Code를 다시 시작하세요.

전체 비디오를 그의 YouTube 채널에서 시청하고 Linux 개발 for .NET Aspire 설정에 대한 더 많은 통찰을 얻으십시오.

Hero Worlddot related to Linux에 .NET Aspire 설정하기
Hero Affiliate related to Linux에 .NET Aspire 설정하기

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

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

아이언 서포트 팀

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