Partilhar via


Padrão de Descarregamento de Gateway

Gateway de Aplicação do Azure

Descarregue funcionalidade de serviço partilhado ou especializado para um proxy de gateway. Este padrão pode simplificar o desenvolvimento de aplicações ao mover a funcionalidade de serviço partilhado, tal como a utilização de certificados SSL, de outras partes da aplicação para o gateway.

Contexto e problema

Algumas funcionalidades são frequentemente utilizadas em vários serviços, mas essas funcionalidades exigem configuração, gestão e manutenção. Um serviço partilhado ou especializado distribuído com todas as implementações da aplicação aumenta a sobrecarga administrativa e a probabilidade de erro na implementação. Todas as atualizações de uma funcionalidade partilhada têm de ser implementadas em todos os serviços que partilham essa funcionalidade.

O processamento correto dos problemas de segurança (validação de tokens, encriptação e gestão de certificados SSL) e outras tarefas complexas podem exigir que os membros da equipa possuam competências altamente especializadas. Por exemplo, um certificado necessário para uma aplicação tem de ser configurado e implementado em todas as instâncias da aplicação. A cada nova implantação, o certificado deve ser gerenciado para garantir que não expire. Qualquer certificado comum prestes a expirar tem de ser atualizado, testado e verificado em todas as implementações da aplicação.

Outros serviços comuns, tais como a autenticação, a autorização, o registo, a monitorização ou a limitação podem ser difíceis de implementar e gerir num grande número de implementações. Talvez seja melhor consolidar esse tipo de funcionalidade, a fim de reduzir a sobrecarga e a chance de erros.

Solução

Descarregue alguns recursos em um gateway, particularmente preocupações transversais, como gerenciamento de certificados, autenticação, terminação SSL, monitoramento, tradução de protocolo ou limitação.

O diagrama a seguir mostra um gateway que encerra conexões SSL de entrada. Ele solicita dados em nome do solicitante original de qualquer servidor HTTP a montante do gateway.

Diagrama do padrão de descarregamento de gateway

Vantagens deste padrão:

  • Simplificação do desenvolvimento de serviços através da remoção da necessidade de distribuir e manter recursos de suporte, tal como certificados de servidor Web e a configuração para sites seguros. A configuração mais simples resulta numa gestão e escalabilidade mais fáceis e torna as atualizações dos serviços mais simples.

  • Permite que equipas dedicadas implementem funcionalidades que requerem conhecimentos especializados, tal como segurança. Tal vai permitir que a sua equipa central se concentre na funcionalidade da aplicação, ao deixar estas questões especializadas, mas transversais, para os especialistas relevantes.

  • Fornece alguma consistência para o registo e a monitorização de pedidos e respostas. Mesmo que um serviço não seja instrumentado corretamente, o gateway pode ser configurado para garantir um nível mínimo de monitoramento e registro.

Problemas e considerações

  • Certifique-se de que o gateway esteja altamente disponível e resiliente a falhas. Evite pontos únicos de falha executando várias instâncias do seu gateway.
  • Confirme se o gateway foi concebido para os requisitos de capacidade e dimensionamento da aplicação e dos pontos finais. Verifique se o gateway não se torna um gargalo para o aplicativo e é suficientemente escalável.
  • Apenas descarregue funcionalidades utilizadas por toda a aplicação, tal como a transferência de dados ou a segurança.
  • A lógica de negócios nunca deve ser descarregada para o gateway.
  • Se precisar de controlar as transações, considere gerar IDs de correlação para fins de registo.

Quando utilizar este padrão

Utilize este padrão quando:

  • A implementação de aplicações possui uma preocupação em comum, tal como encriptação ou certificados SSL.
  • Um recurso comum em implantações de aplicativos que podem ter requisitos de recursos diferentes, como recursos de memória, capacidade de armazenamento ou conexões de rede.
  • Pretender mover a responsabilidade dos problemas, tal como a segurança de rede, a limitação ou outros problemas de limite de rede para uma equipa mais especializada.

Esse padrão pode não ser adequado se introduzir o acoplamento entre serviços.

Design da carga de trabalho

Um arquiteto deve avaliar como o padrão de Descarregamento de Gateway pode ser usado no design de sua carga de trabalho para abordar as metas e os princípios abordados nos pilares do Azure Well-Architected Framework. Por exemplo:

Pilar Como esse padrão suporta os objetivos do pilar
As decisões de projeto de confiabilidade ajudam sua carga de trabalho a se tornar resiliente ao mau funcionamento e a garantir que ela se recupere para um estado totalmente funcional após a ocorrência de uma falha. Transferir essa responsabilidade para um gateway reduz a complexidade do código do aplicativo nos nós de back-end. Em alguns casos, o descarregamento substitui completamente a funcionalidade por um recurso confiável fornecido pela plataforma.

- RE:01 Simplicidade e eficiência
As decisões de design de segurança ajudam a garantir a confidencialidade, integridade e disponibilidade dos dados e sistemas da sua carga de trabalho. Adicionar um gateway ao fluxo de solicitações permite centralizar a funcionalidade de segurança, como firewalls de aplicativos da Web e conexões TLS com clientes. Qualquer funcionalidade descarregada fornecida pela plataforma já oferece segurança aprimorada.

- SE:06 Controles de rede
- SE:08 Recursos de proteção
A Otimização de Custos está focada em sustentar e melhorar o retorno do investimento da sua carga de trabalho. Esse padrão permite redirecionar custos de recursos que seriam gastos por nó para a implementação do gateway. Os custos no modelo de processamento centralizado são frequentemente mais baixos do que os do modelo distribuído.

- CO:14 Consolidação
A Excelência Operacional ajuda a fornecer qualidade de carga de trabalho por meio de processos padronizados e coesão da equipe. Nesse padrão, a configuração e a manutenção da funcionalidade descarregada são a partir de um único ponto, em vez de gerenciá-la a partir de vários nós.

- OE:04 Ferramentas e processos
A Eficiência de Desempenho ajuda sua carga de trabalho a atender às demandas de forma eficiente por meio de otimizações em escala, dados e código. Adicionar um gateway de descarregamento ao processo de solicitação permite que você use menos recursos por nó porque a funcionalidade é centralizada no gateway. Você pode otimizar a implementação da funcionalidade descarregada independentemente do código do aplicativo. É provável que a funcionalidade fornecida pela plataforma descarregada já seja de alto desempenho.

- PE:03 Seleção de serviços

Como em qualquer decisão de design, considere quaisquer compensações em relação aos objetivos dos outros pilares que possam ser introduzidos com esse padrão.

Exemplo

Ao utilizar o Nginx como aplicação de descarga de SSL, a seguinte configuração termina uma ligação SSL de entrada e distribui a ligação para um de três servidores HTTP a montante.

upstream iis {
        server  10.3.0.10    max_fails=3    fail_timeout=15s;
        server  10.3.0.20    max_fails=3    fail_timeout=15s;
        server  10.3.0.30    max_fails=3    fail_timeout=15s;
}

server {
        listen 443;
        ssl on;
        ssl_certificate /etc/nginx/ssl/domain.cer;
        ssl_certificate_key /etc/nginx/ssl/domain.key;

        location / {
                set $targ iis;
                proxy_pass http://$targ;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto https;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
        }
}

No Azure, isso pode ser conseguido configurando a terminação SSL no Application Gateway.