.NET Aspire 구성 요소에 대해 알아보기

완료됨

앱의 각 마이크로 서비스는 고유할 가능성이 높지만 데이터베이스 및 캐시와 같은 지원 서비스에 대한 요구 사항은 유사한 경우가 많습니다. 이러한 지원 서비스와 인터페이스하는 각 마이크로 서비스에 코드를 작성하는 것은 어려울 수 있습니다. .NET Aspire에서는 .NET Aspire 구성 요소를 추가하면 해당 코드가 줄어듭니다. 마이크로 서비스에 필요할 가능성이 있는 여러 공통 지원 요구 사항에 대한 기본 제공 구성 요소가 있습니다.

아웃도어 의류 및 장비 회사에서 일하고 있다고 상상해 보세요. 개발팀은 새로운 eShop 웹앱을 위한 마이크로 서비스를 설계하기 시작했습니다. 각 마이크로 서비스에는 데이터베이스, 메시징 서비스, 캐시와 같은 서비스가 필요할 수 있습니다. .NET Aspire가 이러한 서비스와 상호 작용하는 데 어떻게 도움이 되는지 평가하려고 합니다.

이 단원에서는 기본적으로 .NET Aspire에 포함된 구성 요소와 마이크로 서비스에 가장 적합한 구성 요소를 선택하는 방법에 대해 알아봅니다.

.NET Aspire 구성 요소 사용

각 .NET Aspire 구성 요소는 NuGet 패키지이며 NuGet 패키지 관리자를 사용하여 프로젝트에 추가할 수 있습니다. Visual Studio에는 새로운 > .NET Aspire 구성 요소 추가 메뉴 항목이 있습니다. 이 작업을 수행하면 .NET Aspire 구성 요소만 표시하도록 필터가 적용된 패키지 관리자가 표시됩니다.

.NET Aspire 구성 요소를 표시하는 Visual Studio의 NuGet 패키지 관리자를 보여 주는 스크린샷.

참고 항목

이 모듈의 뒷부분에 나오는 연습에서 이 구성 요소 도구를 사용하는 방법을 살펴보겠습니다.

C# Dev Kit 확장을 사용하는 Visual Studio Code는 .NET Aspire 구성 요소 추가도 지원합니다.

.NET Aspire 프로젝트 형식을 나열하는 Visual Studio Code 명령 팔레트를 보여주는 스크린샷.

또는 .NET CLI가 .NET 구성 요소를 추가할 수 있습니다. 예시:

dotnet add package Aspire.StackExchange.Redis --prerelease

AppHost 프로젝트에서는 구성 요소를 등록하고 이를 호출하는 프로젝트에서 사용해야 합니다.

var cache = builder.AddRedis("cache");

builder.AddProject<Projects.AspireSample_Web>("webfrontend")
    .WithReference(cache);

그런 다음 종속성 주입을 사용하여 이를 소비 프로젝트에 추가할 수 있습니다.

build.AddRedisClient("cache");

기타 사용 코드는 사용 중인 구성 요소에 따라 다릅니다.

참고 항목

각 .NET Aspire 구성 요소 형식에는 일반적으로 동등한 호스팅 패키지가 있습니다. 호스팅 패키지는 앱에 필요한 리소스와 종속성을 구성하며 이를 소비 프로젝트가 아닌 AppHost 프로젝트에 설치합니다.

데이터베이스 구성 요소

클라우드 네이티브 앱에서 각 마이크로 서비스는 자체 데이터 저장을 담당하며, 읽고 쓸 구조적 데이터 또는 반구조화된 데이터의 데이터베이스가 필요할 수 있습니다. 각 마이크로 서비스는 독립적으로 개발되므로 전체 애플리케이션의 여러 부분에서 여러 다른 데이터베이스 시스템이 사용되고 있음을 알 수 있습니다.

.NET Aspire에는 다음 관계형 데이터베이스 서버용 구성 요소가 포함되어 있습니다.

  • PostgreSQL: SQL(구조적 쿼리 언어)이 구현된 자주 사용되는 오픈 소스 데이터베이스 서버입니다.
  • MySQL: 또 다른 오픈 소스 SQL 데이터베이스 서버.
  • SQL Database: Microsoft의 SQL 데이터베이스 시스템.

참고 항목

.NET Aspire SQL Database 구성 요소는 Microsoft SQL Server 또는 Azure 클라우드에서 SQL Server를 구현한 Azure SQL Database와 함께 작동할 수 있습니다. 마찬가지로 Azure에는 PostgreSQL 및 MySQL의 PaaS(Platform-as-a-Service) 구현이 포함되어 있습니다. 데이터베이스를 실행하는 위치는 각 마이크로 서비스 아키텍처 팀이 결정하지만 .NET Aspire 구성 요소는 많은 클라우드 위치를 지원할 수 있으며 특정 호스팅 서비스를 적용하지 않습니다.

반구조화된 데이터로 작업하려는 경우 .NET Aspire에는 다음 NoSQL 시스템에 대한 지원이 포함되어 있습니다.

  • MongoDB: 플랫폼 간, 문서 지향 NoSQL 데이터베이스 서버입니다.
  • Azure Cosmos DB: Azure에서 호스트되는 Microsoft의 유연한 NoSQL 데이터베이스 시스템입니다.

스토리지 구성 요소

.NET Aspire에서는 Azure Storage 계정에 파일, 데이터 또는 메시지를 저장해야 하는 마이크로 서비스를 위해 스토리지 구성 요소가 제공됩니다. Azure Storage의 세 가지 서비스 각각에 대해 하나의 구성 요소가 있습니다. Azure Storage로 수행하려는 작업에 따라 구성 요소를 선택합니다.

  • Azure Blob Storage: 이 서비스를 사용하여 이미지 및 동영상과 같은 Blob 파일을 저장하고 검색합니다.
  • Azure Table Storage: 이 서비스를 사용하여 반구조화된 데이터 테이블의 행을 저장하고 검색합니다.
  • Azure Queue Storage 이 서비스를 사용하면 다른 구독 마이크로 서비스에 배포하기 위해 큐에 메시지를 추가할 수 있습니다.

메시징 구성 요소

클라우드 네이티브 앱에서 마이크로 서비스 간 통신의 안정성과 유연성을 개선하는 한 가지 방법은 직접 통신 대신 큐, 항목 및 구독을 제공하는 메시징 솔루션을 사용하는 것입니다. .NET Aspire에는 다음 세 가지 메시징 서비스에 대한 구성 요소가 포함되어 있습니다. 개발자가 사용하려는 메시징 브로커를 기반으로 구성 요소를 선택합니다.

  • RabbitMQ: 이 메시지 브로커는 널리 사용되는 오픈 소스이며 큐, 항목 및 구독을 제공하기 위한 여러 메시징 프로토콜을 지원합니다.
  • Apache Kafka: 이 서비스는 메시지를 포함할 수 있는 이벤트 스트림을 처리하고 Kafka 연결 API를 포함하여 다른 시스템과 데이터를 가져오고 내보냅니다.
  • Azure Service Bus: 이 메시지 브로커는 Azure에서 호스트되며 큐 및 구독 기반 메시지 배포를 제공합니다.

캐싱 구성 요소

마이크로 서비스가 사용자 또는 다른 마이크로 서비스로부터 요청을 받으면 여러 위치 또는 복잡한 작업의 데이터를 사용하여 응답을 구성해야 할 수 있습니다. 이 작업에는 시간이 걸릴 수 있습니다. 이러한 응답의 일부를 캐싱하면 나중에 유사하거나 동일한 요청이 도착할 때 시간을 절약할 수 있습니다. 이러한 방식으로 캐싱은 성능을 최적화합니다.

널리 사용되는 캐시 서비스 중 하나는 Redis입니다. 메시지 브로커와 메모리 내 데이터베이스 기능이 있지만 웹 애플리케이션 및 서비스에서 응답을 캐시하는 데 가장 일반적으로 사용됩니다. .NET Aspire에는 Redis와 함께 작동하는 세 가지 구성 요소가 있습니다. 마이크로 서비스에서 달성하려는 캐싱 작업을 기반으로 구성 요소를 선택합니다.

  • Redis 구성 요소: Redis를 메모리 내 데이터베이스로 사용하려는 경우 이 구성 요소를 사용합니다.
  • Redis 출력 캐싱 구성 요소: 전체 웹 페이지와 같은 완전한 HTTP 응답을 캐시하려는 경우 이 구성 요소를 사용합니다.
  • Redis 분산 캐시 구성 요소: 앱의 여러 마이크로 서비스에 대한 단일 캐시를 만들려는 경우 이 구성 요소를 사용합니다.

보안

클라우드 네이티브 애플리케이션에서 데이터 보안은 비즈니스에 중요한 항목인 경우가 많습니다. 고객은 사용자의 개인 데이터와 중요한 데이터를 신뢰할 수 있으므로 해당 데이터가 암호화되어 가로채기 또는 변조로부터 보호되는지 확인해야 합니다. 디지털 서명 및 암호화를 사용하려면 프라이빗 키를 저장하고 암호 해독을 위해 이를 검색해야 합니다. Azure Key Vault는 키와 비밀, 인증서 등의 기타 비밀을 안전하게 저장할 수 있는 위치 중 하나입니다.

.NET Aspire에는 Azure Key Vault 구성 요소가 포함되어 있어 Azure Key Vault에서 비밀을 쉽게 저장하고 검색할 수 있습니다.

자세한 정보