Padrão de aplicativo Web confiável para Java - planejar a implementação

Serviço de aplicativo do Azure
Porta da frente do Azure
Cache do Azure para Redis
.NET

Este artigo mostra como aplicar o padrão de aplicativo Web confiável. O padrão de aplicativo Web confiável é um conjunto de princípios e técnicas de implementação que definem como você deve modificar aplicativos Web (replataforma) ao migrar para a nuvem. Ele se concentra nas atualizações mínimas de código que você precisa fazer para ter sucesso na nuvem.

Para facilitar a aplicação dessa diretriz, há uma implementação de referência do padrão de aplicativo Web confiável que você pode implantar.

O diagrama mostra a arquitetura da implementação de referênciaArquitetura da implementação de referência. Baixe um Arquivo Visio dessa arquitetura.

A orientação a seguir usa a implementação de referência como um exemplo em todo o processo. Para planejar uma implementação do padrão de aplicativo Web confiável, siga estas etapas:

Defina as metas de negócios

A etapa inicial na transição para a computação na nuvem é articular seus objetivos de negócios. O padrão de aplicativo Web confiável enfatiza a importância de definir objetivos imediatos e futuros para seu aplicativo Web. Esses objetivos influenciam sua escolha de serviços de nuvem e a arquitetura do seu aplicativo Web na nuvem.

Exemplo: a empresa fictícia Relecloud vende ingressos por meio de seu aplicativo Web local. A Relecloud tem uma previsão de vendas positiva e antecipa o aumento da demanda em seu aplicativo Web de emissão de ingressos. Para atender a essa demanda, eles definiram as metas do aplicativo Web:

  • Aplicar alterações de código de baixo custo e de alto valor
  • Atingir um objetivo de nível de serviço (SLO) de 99,9%
  • Adotar práticas de DevOps
  • Criar ambientes com otimização de custo
  • Melhorar a confiabilidade e a segurança

A infraestrutura local da Relecloud não era uma solução econômica para atingir essas metas. Então, eles decidiram que migrar seu aplicativo Web para o Azure era a maneira mais econômica de atingir seus objetivos imediatos e futuros.

Escolha os serviços gerenciados corretos

Ao migrar um aplicativo Web para a nuvem, você deve selecionar os serviços do Azure que atendam aos seus requisitos de negócios e se alinhem aos recursos atuais do aplicativo Web local. O alinhamento ajuda a minimizar o esforço de replataforma. Por exemplo, use serviços que permitem manter o mesmo mecanismo de banco de dados e oferecer suporte a middleware e estruturas existentes. As seções a seguir fornecem orientações para selecionar os serviços do Azure corretos para seu aplicativo Web.

Exemplo: antes da migração para a nuvem, o aplicativo Web de emissão de ingressos da Relecloud era um aplicativo local e monolítico ASP.NET. Ele era executado em duas máquinas virtuais e tinha um banco de dados do Microsoft SQL Server. O aplicativo Web sofria com desafios comuns em escalabilidade e implantação de recursos. Esse ponto de partida, suas metas de negócios e SLO impulsionaram suas escolhas de serviço.

Plataforma de aplicativo

Escolha a melhor plataforma de hospedagem de para seu aplicativo Web. O Azure tem muitas opções de computação diferentes para atender a uma variedade de requisitos de aplicativos Web. Para obter ajuda com opções de estreitamento, consulte a árvore de decisão de computação do Azure.

Exemplo: a Relecloud escolheu o Serviço de Aplicativo do Azure como a plataforma de aplicativos pelos seguintes motivos:

  • Alto Contrato de Nível de Serviço (SLA): possui um alto SLA que atende ao SLO do ambiente de produção de 99,9%.

  • Sobrecarga de gerenciamento reduzida: é uma solução totalmente gerenciada que lida com dimensionamento, verificações de integridade e balanceamento de carga.

  • Suporte ao .NET: é compatível com a versão do .NET na qual o aplicativo está escrito.

  • Funcionalidade de conteinerização: o aplicativo Web pode convergir na nuvem sem contêineres, mas a plataforma de aplicativos também dá suporte à conteinerização sem alterar os serviços do Azure

  • Dimensionamento automático: o aplicativo Web pode escalar verticalmente, reduzir e reduzir automaticamente com base no tráfego e nas configurações do usuário.

Gerenciamento de identidades

Escolha a melhor solução de gerenciamento de identidade para seu aplicativo Web. Para obter mais informações, consulte Comparar soluções de gerenciamento de identidade e métodos de autenticação.

Exemplo: a Relecloud escolheu o Microsoft Entra ID pelos seguintes motivos:

  • Autenticação e autorização: o aplicativo precisa autenticar e autorizar os funcionários do Call Center.

  • Escalonável: ele é dimensionado para dar suporte a cenários maiores.

  • Controle de identidade do usuário: os funcionários do call center podem usar suas identidades empresariais existentes.

  • Suporte ao protocolo de autorização: oferece suporte a OAuth 2.0 para identidades gerenciadas.

Backup de banco de dados

Escolha o melhor banco de dados para seu aplicativo Web. Para obter ajuda com a redução das opções, consulte a árvore de decisão de armazenamento de dados do Azure.

Exemplo: o aplicativo Web usou o SQL Server local, e a Relecloud queria usar o esquema de banco de dados, os procedimentos armazenados e as funções existentes. Vários produtos SQL estão disponíveis no Azure, mas a Relecloud escolheu o Banco de Dados SQL do Azure pelos seguintes motivos:

  • Confiabilidade: a camada de uso geral fornece um SLA alto e redundância de várias regiões. Ele pode dar suporte a uma alta carga de usuário.

  • Redução da sobrecarga de gerenciamento: fornece uma instância de banco de dados SQL gerenciada.

  • Suporte à migração: dá suporte à migração do banco de dados do SQL Server local.

  • Consistência com configurações locais: oferece suporte a procedimentos, funções e exibições armazenados existentes.

  • Resiliência: dá suporte a backups e restauração pontual.

  • Experiência e retrabalho mínimo: o Banco de Dados SQL aproveita a experiência interna e requer um trabalho mínimo para ser adotado.

Monitoramento de desempenho de aplicativos

Escolha um monitoramento de desempenho de aplicativo para seu aplicativo Web. O Application Insights é a solução de gerenciamento de desempenho de aplicativos (APM) nativa do Azure. É um recurso da solução de monitoramento do Azure, o Azure Monitor.

Exemplo: a Relecloud optou por usar o Application Insights pelos seguintes motivos:

  • Integração com o Azure Monitor: ele fornece a melhor integração com o Azure Monitor.

  • Detecção de anomalias: detecta automaticamente anomalias de desempenho.

  • Solução de problemas: ele ajuda a diagnosticar problemas no aplicativo em execução.

  • Monitoramento: ele coleta informações sobre como os usuários estão usando o aplicativo e permite que você acompanhe facilmente eventos personalizados.

  • Lacuna de visibilidade: a solução local não tinha solução de monitoramento de desempenho de aplicativo. O Application Insights fornece fácil integração com a plataforma e o código do aplicativo.

Cache

Escolha se deseja adicionar cache à arquitetura do aplicativo Web. O Cache do Azure para Redis é a principal solução de cache do Azure. É um armazenamento de dados na memória gerenciado com base no software Redis.

Exemplo: a carga do aplicativo Web da Relecloud é fortemente distorcida para exibir shows e detalhes do local. Ela adicionou o Cache do Azure para Redis pelos seguintes motivos:

  • Redução da sobrecarga de gerenciamento: é um serviço totalmente gerenciado.

  • Velocidade e volume: tem alta taxa de transferência de dados e leituras de baixa latência para dados de alteração lenta e comumente acessados.

  • Suporte diversificado: é um local de cache unificado para todas as instâncias do aplicativo Web usarem.

  • Armazenamento de dados externo: os servidores de aplicativos locais executaram o cache local da VM. Essa configuração não descarregou dados altamente frequentes e não pôde invalidar dados.

  • Sessões não adesivas: a externalização do estado da sessão oferece suporte a sessões não adesivas.

Balanceador de carga

Escolha o melhor balanceador de carga para seu aplicativo Web. O Azure tem vários balanceadores de carga. Para obter ajuda com a redução das opções, consulte Escolher o melhor balanceador de carga para seu aplicativo.

Exemplo: a Relecloud precisava de um balanceador de carga de camada 7 que pudesse rotear o tráfego em várias regiões. A Relecloud precisava de um aplicativo Web multirregião para atender ao SLO de 99,9%. A Relecloud escolheu o Azure Front Door pelos seguintes motivos:

  • Balanceamento de carga global: é um balanceador de carga de camada 7 que pode rotear o tráfego em várias regiões.

  • Firewall de Aplicativo Web: ele se integra nativamente ao Firewall de Aplicativo Web do Azure.

  • Flexibilidade de roteamento: ele permite que a equipe de aplicativos configure as necessidades de entrada para dar suporte a alterações futuras no aplicativo.

  • Aceleração de tráfego: ele usa o anycast para alcançar o ponto de presença mais próximo do Azure e encontrar a rota mais rápida para o aplicativo Web.

  • Domínios personalizados: ele dá suporte a nomes de domínio personalizados com validação de domínio flexível.

  • Investigações de integridade: o aplicativo precisa de monitoramento de investigação de integridade inteligente. O Azure Front Door usa respostas da investigação para determinar a melhor origem para roteamento de solicitações de cliente.

  • Suporte ao monitoramento: ele oferece suporte a relatórios integrados com um painel completo para Front Door e padrões de segurança. Você pode configurar alertas que se integram ao Azure Monitor. Ele permite que o aplicativo registre cada solicitação e teste de integridade com falha.

  • Proteção contra DDoS: ele tem proteção interna contra DDoS da camada 3-4.

  • Rede de entrega de conteúdo: posiciona a Relecloud para usar uma rede de entrega de conteúdo. A rede de entrega de conteúdo fornece aceleração do site.

Firewall do aplicativo Web

Escolha um firewall de aplicativo Web para proteger seu aplicativo Web contra ataques na Web. Firewall de Aplicativo Web do Azure WAF é o Firewall de Aplicativo Web do Azure. Ele fornece proteção centralizada contra vulnerabilidades e explorações comuns na Web.

Exemplo: a Relecloud precisava proteger o aplicativo Web contra ataques da Web. Eles usaram o Firewall de Aplicativo Web do Azure pelos seguintes motivos:

  • Proteção global: ele fornece proteção de aplicativo Web global aprimorada sem sacrificar o desempenho.

  • Proteção contra botnet: a equipe pode monitorar e configurar para resolver preocupações de segurança contra botnets.

  • Paridade com o local: a solução local estava sendo executada atrás de um firewall do aplicativo Web gerenciado pela TI.

  • Facilidade de uso: o Firewall de Aplicativo Web se integra ao Azure Front Door.

Armazenamento de configuração

Escolha se deseja adicionar o armazenamento de configuração de aplicativo ao seu aplicativo Web. A Configuração de Aplicativos do Azure é um serviço para gerenciar centralmente as configurações do aplicativo e os sinalizadores de recursos. Examine as práticas recomendadas da Configuração de Aplicativos para decidir se esse serviço é uma boa opção para seu aplicativo.

Exemplo: a Relecloud queria substituir a configuração baseada em arquivo por um repositório de configuração central que se integre à plataforma e ao código do aplicativo. Eles adicionaram a Configuração do Aplicativo à arquitetura pelos seguintes motivos:

  • Flexibilidade: oferece suporte a sinalizadores de recursos. Os sinalizadores de recursos permitem que os usuários optem por ativar e desativar recursos de versão prévia antecipada em um ambiente de produção sem reimplantar o aplicativo.

  • Dá suporte ao pipeline do Git: a fonte da verdade para os dados de configuração precisava ser um repositório Git. O pipeline necessário para atualizar os dados no repositório de configuração central.

  • Dá suporte a identidades gerenciadas: ele dá suporte a identidades gerenciadas para simplificar e ajudar a proteger a conexão com o repositório de configuração.

Gerenciador de segredos

Use o Azure Key Vault se você tiver segredos para gerenciar no Azure. Você pode incorporar o Key Vault em aplicativos .NET usando o objeto ConfigurationBuilder.

Exemplo: o aplicativo Web local da Relecloud armazena segredos localmente em arquivos de configuração de código, mas é uma prática de segurança melhor para externalizar segredos. Embora as identidades gerenciadas sejam a solução preferida para se conectar aos recursos do Azure, a Relecloud tinha segredos de aplicativos que precisava gerenciar. A Relecloud usou o Key Vault pelos seguintes motivos:

  • Criptografia: ele dá suporte à criptografia em repouso e em trânsito.

  • Identidades gerenciadas: os serviços de aplicativo podem usar identidades gerenciadas para acessar o repositório de segredos.

  • Monitoramento e registro em log: ele facilita o acesso à auditoria e gera alertas quando os segredos armazenados são alterados.

  • Integração: ele fornece integração nativa com o repositório de configurações do Azure (Configuração de Aplicativos) e a plataforma de hospedagem da Web (Serviço de Aplicativo).

Solução de armazenamento

Escolha a melhor solução de armazenamento para seu aplicativo Web. Para obter mais informações, consulte Verificar suas opções de armazenamento.

Exemplo: localmente, o aplicativo Web tinha o armazenamento em disco montado em cada servidor Web, mas a equipe queria usar uma solução de armazenamento de dados externo. A Relecloud escolheu o Armazenamento do Blobs do Azure pelos seguintes motivos:

  • Acesso seguro: o aplicativo Web pode eliminar pontos de extremidade para acessar o armazenamento exposto à Internet pública com acesso anônimo.

  • Criptografia: criptografa dados inativos e em trânsito.

  • Resiliência: oferece suporte ao armazenamento com redundância de zona (ZRS). O armazenamento redundante de zona replica dados de forma síncrona em três zonas de disponibilidade do Azure na região primária. Cada zona de disponibilidade é um local físico separado com energia, resfriamento e rede independentes. Essa configuração deve tornar as imagens dos ingressos resilientes contra perda.

Segurança do ponto de extremidade

Opte por habilitar somente o acesso privado aos serviços do Azure. O Link Privado do Azure permite acessar soluções de plataforma como serviço (PaaS) em um ponto de extremidade privado em sua rede virtual. O tráfego entre sua rede virtual e o serviço viaja PELA rede de backbone da Microsoft.

Exemplo: a Relecloud usou o link privado pelos seguintes motivos:

  • Comunicação de segurança aprimorada: permite que o aplicativo acesse serviços na plataforma do Azure e reduz o volume de rede de armazenamentos de dados para ajudar a proteger contra vazamento de dados.

  • Esforço mínimo: os pontos de extremidade privados oferecem suporte à plataforma de aplicativo Web e à plataforma de banco de dados que o aplicativo Web usa. Ambas as plataformas espelham as configurações locais existentes para alteração mínima.

Segurança de rede

Escolha se deseja adicionar serviços de segurança de rede às suas redes virtuais. O Firewall do Azure é um firewall de rede com monitoração de estado que inspeciona o tráfego de rede. O Azure Bastion permite que você se conecte a máquinas virtuais com segurança sem expor portas RDP/SSH.

Exemplo: a Relecloud adotou uma topologia de rede hub and spoke e queria colocar serviços de segurança de rede compartilhados no hub. O Firewall do Azure melhora a segurança inspecionando todo o tráfego de saída dos spokes para aumentar a segurança da rede. A Relecloud precisava do Azure Bastion para implantações seguras de um jump host na sub-rede DevOps.

Escolha a arquitetura certa

Depois de definir o que significa disponível para seu aplicativo Web e selecionar os melhores serviços de nuvem, você precisa determinar a melhor arquitetura para seu aplicativo Web. Sua arquitetura precisa dar suporte aos requisitos de negócios, requisitos técnicos e SLO.

Escolha a redundância de arquitetura

As metas de negócios determinam o nível de infraestrutura e a redundância de dados de que seu aplicativo Web precisa. O SLO do aplicativo Web fornece uma boa linha de base para entender seus requisitos de redundância. Calcule o SLA composto de todas as dependências no caminho crítico de disponibilidade. As dependências devem incluir serviços do Azure e soluções que não são da Microsoft.

Atribua uma estimativa de disponibilidade para cada dependência. Os SLAs (Contratos de Nível de Serviço) fornecem um bom ponto de partida, mas os SLAs não levam em conta o código, as estratégias de implantação e as decisões de conectividade arquitetônica.

Exemplo: a Relecloud identificou os serviços no caminho crítico de disponibilidade. Eles usaram SLAs do Azure para estimativas de disponibilidade. Com base no cálculo do SLA composto, a Relecloud precisava de uma arquitetura multirregião para atender ao SLO de 99,9%.

Escolha uma topologia de rede

Escolha a topologia de rede certa para seus requisitos de rede e da Web. Hub-spoke é uma topologia de rede de configuração padrão no Azure. Ela oferece benefícios de custo, gerenciamento e segurança. Ela também oferece suporte a opções de conectividade híbrida para redes locais.

Exemplo: a Relecloud escolheu uma topologia de rede hub e spoke para aumentar a segurança de sua implantação em várias regiões com custo reduzido e sobrecarga de gerenciamento.

Escolha a redundância de dados

Garanta a confiabilidade dos dados distribuindo-os entre as regiões e zonas de disponibilidade do Azure. Quanto maior for a separação geográfica, maior será a confiabilidade.

  • Defina um RPO (objetivo de ponto de recuperação). O RPO define a perda máxima tolerável de dados durante uma paralisação, orientando a frequência com que os dados precisam de replicação. Por exemplo, um RPO de uma hora significa aceitar até uma hora de perda de dados recente.

  • Implemente a replicação de dados. Alinhe a replicação de dados com sua arquitetura e RPO. O Azure normalmente oferece suporte à replicação síncrona dentro de zonas de disponibilidade. Utilize várias zonas para aumentar a confiabilidade facilmente. Para aplicativos Web de várias regiões em uma configuração ativa-passiva, replique os dados para a região passiva de acordo com o RPO do aplicativo Web, garantindo que a frequência de replicação supere o RPO. As configurações ativo-ativo exigem sincronização de dados quase em tempo real entre regiões, o que pode exigir ajustes de código.

  • Criar um plano de failover. Desenvolva um plano de failover (recuperação de desastres) descrevendo estratégias de resposta a paralisações, determinadas pelo tempo de inatividade ou pela perda de funcionalidade. Especifique os objetivos de tempo de recuperação (RTO) para o tempo de inatividade máximo aceitável. Verifique se o processo de failover é mais rápido que o RTO. Decida sobre mecanismos de failover automatizados ou manuais para consistência e controle e detalhe o processo de retorno às operações normais. Teste o plano de failover para garantir a eficácia.

Próxima etapa

Esse artigo mostrou como planejar uma implementação do padrão de aplicativo Web confiável. A próxima etapa é aplicar as técnicas de implementação do padrão de aplicativo Web confiável.