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.
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.
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.
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.
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.
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.