Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Dica
Esse conteúdo é um trecho do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF para download 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 nativos de nuvem completo, eShopOnContainers. Este aplicativo foi desenvolvido para demonstrar o uso de .NET e Docker e, opcionalmente, Azure, Kubernetes e Visual Studio, para construir uma loja online.
Figura 2-1. Captura de tela do aplicativo de exemplo eShopOnContainers.
Antes de iniciar este capítulo, recomendamos que você baixe o aplicativo de referência eShopOnContainers. Se você fizer isso, será mais fácil 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 vários produtos físicos, como camisetas e canecas de café. Se você já comprou algo online antes, a experiência de usar a loja deve ser relativamente familiar. Aqui estão alguns dos recursos básicos que o repositório implementa:
- Listar itens de 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 tem 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 deve dar suporte a um processo de desenvolvimento ágil, incluindo 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 deve dar suporte a aplicativos cliente móveis que executam diferentes tipos de sistemas operacionais.
- Ele deve dar suporte à hospedagem multiplataforma e ao desenvolvimento multiplataforma.
Figura 2-2. O eShopOnContainers faz referência à arquitetura de desenvolvimento de aplicativos.
O aplicativo eShopOnContainers é acessível de clientes web ou móveis que acessam o aplicativo via HTTPS, direcionando-se ao aplicativo de servidor ASP.NET Core MVC ou a um gateway de API apropriado. Os Gateways de API oferecem várias vantagens, como desacoplar serviços de back-end de clientes front-end individuais e fornecer melhor segurança. O aplicativo também usa um padrão relacionado conhecido como BFF (Backends-for-Frontends), que recomenda a criação de gateways de API separados para cada cliente front-end. A arquitetura de referência demonstra a separação dos gateways de API com base em se a solicitação vem de um cliente Web ou móvel.
A funcionalidade do aplicativo é dividida em muitos microsserviços distintos. Há 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 realizadas conforme as necessidades operacionais e com o uso de um barramento de mensagens.
Cada um dos microsserviços diferentes foi projetado de forma diferente, com base em seus 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 CRUD (Create-Read-Update-Delete) básico aos armazenamentos de dados subjacentes, enquanto serviços mais avançados usam abordagens e padrões de design Domain-Driven para gerenciar a complexidade dos negócios.
Figura 2-3. Diferentes tipos de microsserviços.
Visão geral do código
Como ele 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 em 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 do 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 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 desenvolvimento local. Vamos examinar 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 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, Microsserviços do .NET: Arquitetura para aplicativos .NET em contêineres.