Partilhar via


Apresentando o aplicativo de referência eShopOnContainers

Gorjeta

Este conteúdo é um excerto do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF transferível 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 da nuvem com todos os recursos, o eShopOnContainers. Este aplicativo foi criado para mostrar usando .NET e Docker e, opcionalmente, Azure, Kubernetes e Visual Studio, para criar uma vitrine online.

eShopOnContainers Sample App Screenshot.

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

Antes de iniciar este capítulo, recomendamos que transfira a aplicação de referência eShopOnContainers. Se o fizer, deverá ser mais fácil acompanhar as informações apresentadas.

Características e requisitos

Vamos começar com uma revisão dos recursos e requisitos do aplicativo. A aplicação eShopOnContainers representa uma loja online que vende vários produtos físicos como t-shirts e canecas de café. Se você já comprou algo on-line antes, a experiência de usar a loja deve ser relativamente familiar. Aqui estão alguns dos recursos básicos que a loja implementa:

  • Listar itens do catálogo
  • Filtrar itens por tipo
  • Filtrar itens por marca
  • Adicionar itens ao carrinho de compras
  • Editar ou remover itens do carrinho de compras
  • Finalização da Compra
  • Registar uma conta
  • Iniciar sessão
  • Terminar sessão
  • Rever encomendas

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

  • Ele precisa estar altamente disponível e deve ser dimensionado automaticamente para atender ao aumento do tráfego (e reduzir novamente quando o tráfego diminuir).
  • Ele deve fornecer monitoramento fácil de usar de sua integridade e logs de diagnóstico para ajudar a solucionar quaisquer problemas encontrados.
  • Deve apoiar um processo de desenvolvimento ágil, incluindo suporte para integração e implantação contínuas (CI/CD).
  • Além dos dois front-ends da Web (tradicional e aplicativo de página única), o aplicativo também deve suportar aplicativos cliente móveis que executam diferentes tipos de sistemas operacionais.
  • Deve apoiar o alojamento multiplataforma e o desenvolvimento multiplataforma.

eShopOnContainers reference application development architecture.

Figura 2-2. A arquitetura de desenvolvimento de aplicativos de referência eShopOnContainers.

O aplicativo eShopOnContainers pode ser acessado a partir de clientes web ou móveis que acessam o aplicativo por HTTPS, visando o ASP.NET aplicativo de servidor MVC Core ou um API Gateway apropriado. Os gateways de API oferecem várias vantagens, como dissociar serviços de back-end de clientes front-end individuais e fornecer melhor segurança. O aplicativo também faz uso de um padrão relacionado conhecido como Backends-for-Frontends (BFF), 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 ser proveniente de um cliente Web ou móvel.

A funcionalidade do aplicativo é dividida em muitos microsserviços distintos. Existem serviços responsáveis pela autenticação e identidade, listando itens do catálogo de produtos, gerenciando cestas de compras dos usuários e fazendo pedidos. Cada um desses serviços separados tem seu próprio armazenamento persistente. Não há um único 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 são feitas conforme necessário e usando um barramento de mensagens.

Cada um dos diferentes microsserviços é projetado de forma diferente, com base em suas necessidades individuais. Esse aspeto significa que sua pilha de tecnologia pode diferir, embora todos eles sejam criados usando .NET e projetados para a nuvem. Serviços mais simples fornecem acesso básico Create-Read-Update-Delete (CRUD) aos armazenamentos de dados subjacentes, enquanto serviços mais avançados usam abordagens e padrões de Design Controlado 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

Como usa microsserviços, o aplicativo eShopOnContainers inclui alguns projetos e soluções separados em seu repositório GitHub. Além de soluções separadas e arquivos executáveis, os vários serviços são projetados para serem executados dentro de seus 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 suportar os 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 do usuário ou ponto de extremidade de serviço. Em muitos casos, as dependências de cada serviço podem ser atendidas pelos serviços do Azure em produção e opções alternativas para o desenvolvimento local. Vamos examinar como os requisitos do aplicativo são mapeados para os serviços do Azure.

Compreender os microsserviços

Este livro se concentra em aplicativos nativos da nuvem criados usando a tecnologia do Azure. Para saber mais sobre as práticas recomendadas de microsserviços e como arquitetar aplicativos baseados em microsserviços, leia o livro complementar, .NET Microservices: Architecture for Containerized .NET Applications.