Please enable JavaScript.
Coggle requires JavaScript to display documents.
WEB 1 - ARQUITETURA DE SOFTWARE Aluno: João Vitor Ferreira Cavalcante -…
WEB 1 - ARQUITETURA DE SOFTWARE
Aluno: João Vitor Ferreira Cavalcante
Padrão de Gateway de API versus comunicação direta de cliente e microsserviço
Funcionamento da comunicação Direta
A comunicação direta de cliente com microsserviço pode ser adequada para aplicativos pequenos e simples porque é simples de implementar e gerenciar. Para aplicativos grandes e complexos, pode apresentar alguns problemas, como aumento da latência, complexidade e dificuldades de segurança.
Cenários de utilização
Aplicativos móveis
Um aplicativo móvel que permite aos usuários visualizar uma lista de tarefas ou agendar um evento.
Aplicativos Web
Um aplicativo Web simples que exibe uma lista de produtos ou uma página de login
Funcionamento da comunicação via API Gateway
Cenários de utilização
Aplicativos Corporativos
Aplicativos que precisam acessar dados de vários microsserviços, como um aplicativo de CRM que precisa acessar dados de um microsserviço de clientes, um microsserviço de vendas e um microsserviço de marketing.
Aplicativos IoT
Aplicativos que precisam acessar dados de vários microsserviços, como um aplicativo que controla um sistema de irrigação que precisa acessar dados de um microsserviço de sensores, um microsserviço de controle e um microsserviço de histórico
Aplicativos Web e Móveis
Aplicativos que precisam acessar dados de vários microsserviços, como um aplicativo de comércio eletrônico que precisa acessar dados de um microsserviço de catálogo de produtos, um microsserviço de preços e um microsserviço de carrinho de compras.
Principais Recursos
Solicitação de agregação
Agrega várias solicitações de cliente em uma única solicitação de cliente. Isso pode melhorar o desempenho e a experiência do usuário para aplicativos remotos
Interesses paralelos ou descarregamento de gateway
Assumir a responsabilidade por tarefas como autenticação, autorização, cache, balanceamento de carga e registro em log
Proxy reverso ou roteamento de gateway
fornece um único ponto de extremidade ou URL para os aplicativos clientes e mapeia internamente as solicitações para um grupo de microsserviços internos
Desvantagens
Complexidade Adicional
Pode adicionar complexidade ao aplicativo. Isso pode dificultar o desenvolvimento e a manutenção do aplicativo.
Custo Adicional
Componente adicional que precisa ser implantado e gerenciado. Isso pode aumentar o custo de desenvolvimento e manutenção do aplicativo
Ponto Único de Falha
Se o gateway de API ficar indisponível, os aplicativos cliente não poderão acessar os microsserviços
Vantagens
Acoplamento reduzido
Fornece uma abstração da arquitetura interna dos microsserviços, o que torna os aplicativos cliente menos acoplados a eles, facilitando a manutenção e a evolução do aplicativo cliente.
Melhor Segurança
Fornecer segurança adicional para os microsserviços, filtrando solicitações não autorizadas e protegendo-os contra ataques. Isso pode reduzir o risco de violações de segurança
Melhor Desempenho
Pode realizar a agregação de dados e a distribuição de solicitações para melhorar o desempenho, reduzindo o número de viagens de ida e volta entre o cliente e os microsserviços
Comunicação assíncrona baseada em mensagens
Comunicação controlada por evento assíncrono
Quando utilizar
Para propagar alterações entre microsserviços em diferentes domínios, como um microsserviço de pedidos que notifica um microsserviço de pagamento sobre um novo pedido
Para desacoplar microsserviços, como um microsserviço de e-mail que publica um evento sobre um novo e-mail, que pode ser recebido por qualquer microsserviço que esteja interessado em receber e-mails
Para notificar microsserviços sobre alterações no estado de um sistema, como um microsserviço de estoque que notifica um microsserviço de pedidos sobre uma atualização no estoque de um produto
Funcionamento
Funciona da seguinte forma: Um microsserviço publica um evento. Um agente de mensagens entrega o evento a um ou mais microsserviços que estão interessados no evento. Os microsserviços que recebem o evento processam o evento
Baseada em mensagem com um único destinatário
Quando utilizar
Para atualizar o estoque de um produto em um microsserviço de estoque, um microsserviço de pedidos pode enviar um comando assíncrono para o microsserviço de estoque
Para processar um pagamento, um microsserviço de pagamento pode enviar um comando assíncrono para um microsserviço de banco
Para enviar um e-mail de confirmação, um microsserviço de assinatura pode enviar um comando assíncrono para um microsserviço de e-mail
Funcionamento
Funciona da seguinte forma: Um microsserviço envia uma mensagem para um agente de mensagens. O agente de mensagens entrega a mensagem a um único microsserviço. O microsserviço que recebe a mensagem processa a mensagem.
A mensagem é processada apenas uma vez, a menos que seja necessário para fins de recuperação de falhas
Vantagens em relação a comunicação entre microsserviços em comparação a uma comunicação direta por HTTP
Escalabilidade
Permite que os microsserviços sejam escalonados de forma independente, sem a necessidade de modificar a comunicação entre eles. Isso ajuda a garantir que o sistema possa lidar com um aumento no tráfego
Resiliência a falhas
Permite que os microsserviços se recuperem de falhas sem afetar o restante do sistema. Isso ocorre porque os microsserviços não precisam esperar por uma resposta de um microsserviço que esteja indisponível
Autonomia
Permite que os microsserviços sejam desenvolvidos e implantados de forma independente, sem a necessidade de depender uns dos outros. Isso aumenta a flexibilidade do sistema e facilita a manutenção
Comunicação em uma arquitetura de microsserviços
Protocolo Síncrono vs Assíncrono
Na comunicação síncrona, o emissor da mensagem espera uma resposta imediata do receptor. Na comunicação assíncrona, o emissor da mensagem não espera uma resposta imediata do receptor
Desvantagens Síncrona
Bloqueio
Pode ficar bloqueado até que a resposta seja recebida. Isso pode limitar a escalabilidade do sistema.
Latência
Pode precisar esperar pela resposta, o que pode aumentar a latência do sistema
Perda de dados
Se o receptor não estiver disponível, a mensagem pode ser perdida
Vantagens Assíncrona
Resiliência
É mais resiliente a falhas, pois o emissor não precisa esperar por uma resposta
Escalabilidade
Pode ser mais escalável do que a comunicação síncrona, pois os microsserviços não precisam esperar uns pelos outros
Flexibilidade
Permite que os microsserviços se comuniquem independentemente uns dos outros.
Desvantagens Assíncrona
Complexibilidade
Pode ser mais complexa de implementar e entender do que a comunicação síncrona
Eficiência
Pode ser menos eficiente em termos de uso de recursos, pois o emissor precisa manter uma cópia da mensagem até que ela seja entregue pelo agente de mensagens
Perda de Dados
Se o agente de mensagens não estiver disponível, a mensagem pode ser perdida
Vantagens Síncrona
Eficiência
Eficiente em termos de uso de recursos, pois o emissor não precisa manter uma cópia da mensagem até que ela seja recebida pelo receptor.
Garantia de entrega
Garante que a mensagem será entregue ao receptor
Simplicidade
É mais simples de implementar e entender
Comunicação HTTP vs Push
HTTP
A comunicação HTTP é um tipo de comunicação síncrona, o que significa que o cliente envia uma solicitação e espera uma resposta do servidor. Essa comunicação é geralmente usada para solicitações de leitura e escrita de dados, como ao consultar informações de um banco de dados ou atualizar o estado de um recurso
Se aplica a um microsserviço de usuário que pode usar a comunicação HTTP para consultar informações de um banco de dados de usuário
Push
A comunicação Push é um tipo de comunicação assíncrona, o que significa que o servidor envia uma mensagem para o cliente sem que o cliente a solicite. Essa comunicação é geralmente usada para enviar notificações ou atualizações para o cliente, como ao informar ao cliente sobre alterações no estado de um recurso
Se aplica a um microsserviço de notificação pode usar a comunicação Push para enviar notificações de e-mail para usuários