Rever a arquitetura da solução

Concluído

Nesta unidade, você aprende sobre a arquitetura de microsserviços e o eShopOnContainers aplicativo enquanto seu ambiente de desenvolvimento é carregado.

Preparar o ambiente de desenvolvimento

Verifique se você está configurado para usar contêineres de desenvolvimento com o GitHub Codespaces (custos podem ser aplicados) ou com o Visual Studio Code e um ambiente Docker suportado em sua máquina local.

Carregue o ambiente de desenvolvimento mslearn-aspnet-core usando um dos seguintes procedimentos:

  • Para o GitHub Codespaces, vá para o codespace do repositório MicrosoftDocs/mslearn-aspnet-core e crie um novo codespace usando a main ramificação.

  • Para código local do Visual Studio:

    1. Em uma nova janela do Visual Studio Code, pressione Ctrl+Shift+P para abrir a paleta de comandos e, em seguida, procure e selecione Dev Containers: Clone Repository in Container Volume.
    2. Forneça a seguinte URL do repositório: https://github.com/MicrosoftDocs/mslearn-aspnet-core.

Enquanto seu ambiente de desenvolvimento carrega, leia a seção a seguir para saber mais sobre a arquitetura de microsserviços e o eShopOnContainers aplicativo.

Arquitetura de soluções

A aplicação que alimenta a eShopOnContainers loja online inclui atualmente as seguintes funcionalidades:

  • Gestão de catálogos
  • Carrinho de compras
  • Gestão de utilizadores
  • Gestão de encomendas
  • Pagamentos

O diagrama a seguir mostra a arquitetura do aplicativo, incluindo o novo microsserviço Cupom que você adiciona neste módulo. Cada recurso é um microsserviço distinto que é autônomo, implantável de forma independente e responsável por seus próprios dados. A comunicação entre serviços ocorre conforme necessário, por meio de chamadas de API síncronas ou de forma assíncrona por meio de mensagens.

Diagrama mostrando a arquitetura da solução eShopOnContainers.

O diagrama anterior não mostra alguns dos serviços presentes nesta implantação do Serviço Kubernetes do Azure (AKS), como o Seq para log unificado e o WebStatus aplicativo Web.

Armazenamento de dados

Em uma arquitetura de microsserviços, não há um único armazenamento de dados mestre com o qual todos os serviços interagem. Esse isolamento de dados dá a cada microsserviço a autonomia para aplicar atualizações de esquema de dados de forma independente sem afetar outros serviços no ambiente de produção.

Cada microsserviço pode implementar o armazenamento de dados mais otimizado para sua carga de trabalho, necessidades de armazenamento e padrões de leitura/gravação. Algumas opções de arquivo de dados incluem arquivos de documentos, de chave-valor, relacionais e baseados em grafos. Por exemplo, o serviço de catálogo armazena os respetivos dados numa base de dados do SQL Server em Linux. O serviço de carrinho utiliza uma cache de Redis para armazenamento.

Autenticação e autorização

O WebSPA aplicativo cliente delega autenticação e autorização a um microsserviço de identidade que também serve como um STS (Serviço de Token de Segurança). O serviço de identidade é um projeto do ASP.NET Core alojado num contentor que utiliza o IdentityServer 4, uma estrutura do OpenID Connect e OAuth 2.0 para o ASP.NET Core. Uma alternativa para hospedar um STS é usar o Microsoft Entra ID, que oferece gerenciamento de identidade e acesso como um serviço.

O serviço de identidade no diagrama é configurado para permitir acesso direto, portanto, ignora o gateway de API. O aplicativo completo eShopOnContainers no qual este exemplo se baseia usa vários gateways de API separados por áreas de negócios. A implementação menor neste módulo não requer outro gateway de API.

Barramento de eventos

O aplicativo usa um barramento de eventos para mensagens assíncronas e comunicação orientada a eventos. A solução atual usa o RabbitMQ em um contêiner do Docker implantado no AKS, mas você também pode usar um serviço como o Azure Service Bus. O diagrama a seguir mostra o padrão publish/subscribe (pub-sub) usado pelo barramento de eventos.

Diagrama mostrando o padrão pub-sub do barramento de eventos.

Qualquer serviço pode publicar um evento no barramento de eventos e cada serviço é responsável por subscrever as mensagens relevantes para o seu domínio. Cada serviço chama um AddEventBus método de extensão no ConfigureServices método de Startup.cs. O AddEventBus método estabelece uma conexão com o barramento de eventos e registra os manipuladores de eventos apropriados para o domínio desse serviço.

Gateway de API

O WebSPA aplicativo cliente da interface do usuário acessa os microsserviços por meio do gateway de API. Entre outras vantagens, os gateways de API melhoram a segurança e separam os serviços de back-end de clientes individuais.

O WebSPA aplicativo de vitrine ASP.NET Core MVC e Angular pode ser acessado por meio de um endereço IP público. Solicitações HTTP do aplicativo para a rota de microsserviços por meio do gateway de API, que é um exemplo do padrão Backends-For-Frontends .

O aplicativo implementa configurações básicas de roteamento usando o proxy reverso NGINX. A API Web ASP.NET Core chamada Web.Shopping.HttpAggregator combina várias solicitações em uma única solicitação, um padrão chamado Agregação de Gateway.

Os cenários do mundo real usam serviços de gateway de API gerenciados, como o Gerenciamento de API do Azure.

Serviço de cupões

Os microsserviços são suficientemente pequenos para permitir a uma equipa efetuar diariamente múltiplas compilações, testes e implementações de forma independente no ambiente de produção, sem afetar os outros sistemas. Neste módulo, você conclui e implanta um projeto de microsserviço ASP.NET Core chamado Coupon.API no aplicativo existente eShopOnContainers em produção.

Na próxima unidade, você implanta o eShopOnContainers aplicativo e investiga melhor seu código.