Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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.