O que é o .NET Aspire?

Concluído

Os ecossistemas de nuvem, como o Microsoft Azure e a Amazon Web Services (AWS), estão profundamente incorporados no setor de TI e em soluções de hospedagem populares para aplicativos e serviços Web. É provável que um sistema de hospedagem em nuvem seja a escolha padrão para seus aplicativos, então você precisa garantir que os aplicativos criados sejam projetados para tirar o máximo proveito deles.

Um aplicativo nativo da nuvem é aquele que você projeta especificamente para ser executado na nuvem. Os aplicativos geralmente exibem certos padrões de arquitetura para que o desempenho, a escalabilidade e a confiabilidade sejam ideais.

Imagine que você trabalha para uma empresa de roupas e equipamentos para atividades ao ar livre. O conselho pediu que você desenvolvesse um novo aplicativo web eShop para o principal site voltado para o cliente da empresa. Sua equipe está familiarizada com o modelo de microsserviços e você quer saber se o uso do .NET Aspire facilitará o projeto.

Nesta unidade, você aprenderá mais sobre arquiteturas nativas da nuvem e verá os desafios que podem ser envolvidos na sua criação. Você também verá como o .NET Aspire pode lidar com esses desafios.

O que é uma aplicação nativa da cloud?

Um aplicativo nativo da nuvem é aquele que é projetado para fazer o uso ideal das infraestruturas de nuvem para oferecer o melhor desempenho, disponibilidade e resiliência. Existem seis pilares das arquiteturas de software nativas da nuvem:

  • Infraestrutura na nuvem. Os aplicativos nativos da nuvem são implantados em soluções de hospedagem em nuvem e não em farms de servidores locais.
  • Microsserviços. Os aplicativos nativos da nuvem são implementados como um conjunto de microsserviços, cada um dos quais implementa uma pequena parte da funcionalidade de negócios.
  • Contentores. Microsserviços e outras partes do aplicativo são desenvolvidos e implantados em contêineres para garantir um ambiente de execução consistente.
  • Serviços de apoio. Recursos auxiliares, como bancos de dados e serviços de cache, podem ser usados para fornecer funcionalidade comum a microsserviços.
  • Design moderno. Os aplicativos nativos da nuvem estão em conformidade com a metodologia Twelve-Factor Application, que inclui princípios como Integração Contínua/Implantação Contínua (CI/CD), descartabilidade, vinculação de porta e assim por diante.
  • Automatização. Os aplicativos nativos da nuvem usam a infraestrutura como código (IaC) para automatizar o provisionamento e a implantação da plataforma.

Diagrama conceitual mostrando os seis pilares de aplicativos nativos da nuvem.

Para proporcionar agilidade, um aplicativo nativo da nuvem é composto por um conjunto de microsserviços. Cada microsserviço:

  • Implementa uma parte da funcionalidade completa.
  • Executa em seu próprio processo e é isolado dos outros, freqüentemente em um contêiner dedicado.
  • É construído por uma equipe separada.
  • Comunica com os outros, mas está frouxamente acoplado.

Cada equipa escolhe as linguagens e tecnologias que prefere para implementar o seu microsserviço. Cada microsserviço é implantado e dimensionado independentemente dos outros.

O diagrama a seguir ilustra as diferenças entre um aplicativo Web monolítico tradicional e um aplicativo Web composto por microsserviços.

Diagrama conceptual que mostra as diferenças entre uma aplicação Web monolítica e uma aplicação composta por microsserviços.

Os aplicativos nativos da nuvem podem trazer muitas vantagens para o seu negócio. Por exemplo:

  • Ao hospedar seu aplicativo na nuvem, você não precisa criar e manter infraestrutura, como servidores de hospedagem, sistemas operacionais e serviços de suporte.
  • Como cada microsserviço é desenvolvido de forma independente, você pode implantar continuamente novas funcionalidades neles sem ter que esperar por outras equipes ou marcos principais da versão.
  • Como cada microsserviço é executado em um ou mais contêineres, você sabe que o ambiente será o mesmo em todos os ambientes de teste, preparação e produção.
  • Você pode usar um sistema de orquestração de contêineres, como o Kubernetes, para implantar instâncias extras rapidamente para responder à demanda adicional.

Desafios apresentados por aplicativos nativos da nuvem

Um aplicativo nativo da nuvem que consiste em vários microsserviços e com muitos recursos pode se tornar complexo e apresentar desafios que não surgem com aplicativos monolíticos. Por exemplo:

  • Definição do aplicativo. A menos que documentado cuidadosamente, pode ser difícil para os desenvolvedores entender quais componentes compõem o aplicativo nativo da nuvem completo.
  • Comunicação. Cada microsserviço pode precisar trocar mensagens ou dados com outros microsserviços para formular uma resposta a uma solicitação do usuário. Embora você deva habilitar essa comunicação, você deve fazê-lo de uma forma que não associe um microsserviço a outro. Você também precisa de comunicação para permanecer confiável em momentos de alta demanda ou durante falhas de serviço.
  • Resiliência. Nenhum serviço de hospedagem pode estar 100% disponível. Você deve garantir que, em raras ocasiões em que um microsserviço não está disponível, o aplicativo lida com falhas de forma robusta e mantenha as solicitações até que o serviço retorne.
  • Dados distribuídos. Cada microsserviço implementa sua própria camada de armazenamento de dados e não pode usar o mesmo servidor de banco de dados que os outros. Você deve considerar como consultará dados de vários microsserviços e como implementará transações.
  • Segredos. Se seu aplicativo lida com qualquer tipo de dados confidenciais, cada microsserviço deve autenticar todas as solicitações recebidas antes de retornar uma resposta. Muitas vezes, segredos como chaves de criptografia assimétricas e simétricas são usados para proteger dados e identificar positivamente usuários e microsserviços de chamadas. Você deve considerar como esses segredos são armazenados e trocados em seu aplicativo nativo da nuvem.
  • Integração de desenvolvedores. Novos desenvolvedores devem ser capazes de entender a arquitetura do aplicativo e como trabalhar com ele rapidamente. Você deve garantir que os novos desenvolvedores possam se atualizar sem muito conhecimento entre domínios ou configuração local.

Recentemente, o design de aplicativos nativos da nuvem tem ganhado popularidade, mas desafios como os desta seção desencorajam algumas equipes de adotar esse padrão. O .NET, por exemplo, tem todos os recursos necessários para resolver esses problemas, mas as soluções podem precisar de um investimento significativo em treinamento e código personalizado.

O que é o .NET Aspire?

O .NET Aspire é uma nova pilha pronta para a nuvem criada para .NET projetada para permitir que os desenvolvedores criem aplicativos nativos da nuvem de forma rápida e fácil. Vejamos os recursos do .NET Aspire que abordam os desafios que vimos.

Orquestração

Os microsserviços e sua natureza de acoplamento flexível aumentam a flexibilidade do seu aplicativo implantado, mas podem dificultar a configuração. A lista de serviços que compõem o aplicativo pode se tornar obscura e o ponto de extremidade onde um microsserviço está disponível pode ser difícil de identificar. O .NET Aspire fornece funcionalidade de orquestração para que:

  • Você pode especificar claramente para todas as equipes os projetos .NET, contêineres, executáveis e recursos de nuvem que compõem o aplicativo.
  • Os microsserviços podem descobrir automaticamente pontos de extremidade para todos os componentes do aplicativo. O .NET Aspire realiza essa descoberta de serviço gerenciando cadeias de conexão e injetando-as em microsserviços onde necessário.

Ao criar uma solução .NET Aspir, você verá um novo projeto na solução chamado <SolutionName>. AppHost. Este projeto implementa a orquestração para seu aplicativo e você deve garantir que seja o projeto inicial da solução.

Componentes

Os microsserviços geralmente têm requisitos funcionais para serviços de suporte complexos que sustentam seus recursos. Por exemplo:

  • Armazenamento de dados. Para persistir dados para oferecer suporte a catálogos de produtos, carrinhos de compras, repositórios de identidades e outros recursos, os microsserviços devem armazenar dados em repositórios estruturados ou semiestruturados.
  • Armazenamento em cache. Para maximizar o desempenho, os microsserviços podem armazenar respostas parciais ou completas em um cache para que solicitações semelhantes subsequentes possam ser atendidas mais rapidamente.
  • Mensagens. Os microsserviços de acoplamento flexível devem se comunicar uns com os outros e você deve garantir que essa comunicação seja confiável, mesmo quando o tráfego é alto ou as condições da rede são desafiadoras. Um serviço que enfileira e distribui mensagens de remetentes para destinatários é um requisito comum.

No .NET Aspire, é fácil implementar esses serviços de suporte em cada microsserviço porque a pilha inclui componentes do .NET Aspir. Cada componente é um pacote NuGet que você pode adicionar à sua solução e implementa uma interface padrão para um serviço de suporte. Essa interface padrão garante que seu microsserviço se conecte aos seus serviços de suporte de forma consistente e perfeita.

Os componentes prontos para uso do .NET Aspire incluem:

  • Componentes de armazenamento de dados, como os do PostgreSQL, Banco de Dados SQL, Azure Cosmos DB e MongoDB.
  • Componentes de cache, como o componente para Redis.
  • Componentes de mensagens como os do RabbitMQ e do Azure Service Bus.

Importante

O .NET Aspire inclui muitos componentes que funcionam com os serviços do Azure, como o Armazenamento do Azure e o Barramento de Serviço do Azure, mas o Azure não é necessário para projetos do .NET Aspire e eles funcionam igualmente bem com serviços de suporte fora do Azure, como o RabbitMQ e o MongoDB.

Ferramentas

O .NET Aspire também adiciona às ferramentas disponíveis para desenvolvedores no Visual Studio. Por exemplo:

  • Novos modelos de projeto permitem que você crie soluções .NET Aspire com algumas etapas em um assistente.
  • O painel do .NET Aspire é uma interface da Web que aparece sempre que você inicia a solução a partir do Visual Studio. Esse painel exibe todos os microsserviços e serviços de suporte para o aplicativo, e você pode chamá-los para teste. Ele também mostra ferramentas de desempenho e monitoramento.
  • Itens de menus extras aparecem, que você pode usar para adicionar um componente do .NET Aspire , registrar um projeto para suporte ao orquestrador do .NET Aspire ou concluir outras tarefas.

Nota

Você aprenderá mais sobre as ferramentas do .NET Aspire mais adiante neste módulo.

Mais informações