Compartilhar via


Introdução ao aplicativo de referência eShopOnContainers

Dica

Esse conteúdo é um trecho do livro eletrônico, para Projetar os Aplicativos .NET nativos de nuvem para o Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

A Microsoft, em parceria com os principais especialistas da comunidade, produziu um aplicativo de referência de microsserviços nativo de nuvem com recursos completos, eShopOnContainers. Esse aplicativo foi desenvolvido para mostrar o uso do .NET e do Docker e, opcionalmente, do Azure, Kubernetes e Visual Studio, para compilar uma vitrine online.

eShopOnContainers Sample App Screenshot.

Figura 2-1. Captura de tela do aplicativo de exemplo eShopOnContainers.

Antes de iniciar este capítulo, é recomendável baixar o aplicativo de referência eShopOnContainers. Se fizer isso, deverá ser mais fácil para você acompanhar as informações apresentadas.

Recursos e requisitos

Vamos começar com uma revisão dos recursos e requisitos do aplicativo. O aplicativo eShopOnContainers representa uma loja online que vende diversos produtos físicos como camisetas e canecas. Se você já comprou algo online antes, a experiência de usar o armazenamento deverá ser relativamente familiar. Aqui estão alguns dos recursos básicos que o armazenamento implementa:

  • Listar itens do catálogo
  • Filtrar itens por tipo
  • Filtrar itens por marca
  • Adicionar itens à cesta de compras
  • Editar ou remover itens da cesta
  • Check-out
  • Registrar uma Conta
  • Entrar
  • Sair
  • Examinar pedidos

O aplicativo também possui os seguintes requisitos não funcionais:

  • Ele precisará ser altamente disponível e deverá ser dimensionado automaticamente para atender ao aumento do tráfego (e reduzir novamente quando o tráfego diminuir).
  • Ele deverá fornecer monitoramento de utilização fácil de logs de diagnóstico e integridade para ajudar a solucionar todos os problemas encontrados.
  • Ele deverá dar suporte a um processo de desenvolvimento ágil, incluindo o suporte para CI/CD (integração e implantação contínuas).
  • Além dos dois front-ends da Web (tradicional e aplicativo de página única), o aplicativo também deverá dar suporte a aplicativos clientes móveis que executam diferentes tipos de sistemas operacionais.
  • Ele deverá dar suporte para desenvolvimento de plataforma cruzada e hospedagem de plataforma cruzada.

eShopOnContainers reference application development architecture.

Figura 2-2. Arquitetura de desenvolvimento de aplicativos de referência eShopOnContainers.

O aplicativo eShopOnContainers pode ser acessado de clientes da Web ou móveis que acessam o aplicativo por HTTPS visando o aplicativo de servidor ASP.NET Core MVC ou um gateway de API apropriado. Os gateways de API oferecem várias vantagens como desacoplar os serviços de back-end de clientes de front-end individuais e fornecer a melhor segurança. O aplicativo também faz uso de um padrão relacionado conhecido como BFF (backends para frontends), que recomenda a criação de gateways de API separados para cada cliente front-end. A arquitetura de referência demonstra a divisão dos gateways de API com base no fato de a solicitação originar de um cliente da Web ou móvel.

A funcionalidade do aplicativo é dividida em muitos microsserviços distintos. Há serviços responsáveis pela autenticação e identidade, listagem de itens do catálogo de produtos, gerenciamento das cestas de compras dos usuários e realização de pedidos. Cada um desses serviços separados tem seu próprio armazenamento persistente. Não há um armazenamento de dados primário com o qual todos os serviços interagem. Em vez disso, a coordenação e a comunicação entre os serviços serão feitas conforme a necessidade e usando um barramento de mensagens.

Cada um dos diferentes microsserviços é projetado de forma diferente, com base nos requisitos individuais. Esse aspecto significa que a pilha de tecnologia pode ser diferente, embora todas sejam compiladas usando o .NET e projetadas para a nuvem. Os serviços mais simples fornecem acesso básico de CRUD (criar, ler, atualizar, excluir) aos armazenamentos de dados subjacentes, enquanto os serviços mais avançados usam abordagens e padrões de design orientado por domínio para gerenciar a complexidade dos negócios.

Different kinds of microservices

Figura 2-3. Diferentes tipos de microsserviços.

Visão geral do código

Por usar microsserviços, o aplicativo eShopOnContainers incluirá alguns projetos e soluções separados no repositório GitHub. Além de soluções separadas e arquivos executáveis, os diversos serviços são projetados para serem executados dentro dos próprios contêineres, tanto durante o desenvolvimento local quanto em tempo de execução na produção. A Figura 2-4 mostra a solução completa do Visual Studio, na qual os vários projetos diferentes são organizados.

Projects in Visual Studio solution.

Figura 2-4. Projetos na solução Visual Studio.

O código é organizado para dar suporte aos diferentes microsserviços e, dentro de cada microsserviço, o código é dividido em lógica de domínio, preocupações de infraestrutura e interface de usuário ou ponto de extremidade de serviço. Em muitos casos, as dependências de cada serviço poderão ser atendidas pelos serviços do Azure em produção e opções alternativas para desenvolvimento local. Examinaremos como os requisitos do aplicativo são mapeados para os serviços do Azure.

Noções básicas sobre microsserviços

Este livro se concentra em aplicativos nativos de nuvem compilados usando a tecnologia Azure. Para saber mais sobre as melhores práticas de microsserviços e como arquitetar os aplicativos baseados em microsserviços, leia o livro complementar, Microsserviços .NET: arquitetura para aplicativos .NET conteinerizados.