Práticas recomendadas em aplicativos de nuvem

A criação de aplicativos de nuvem confiáveis, escalonáveis e seguros requer decisões de arquitetura deliberadas. As práticas recomendadas neste artigo fornecem diretrizes para preocupações comuns que surgem em sistemas distribuídos, como cache, particionamento de dados, design de API e tratamento transitório de falhas. Cada prática aborda um ou mais pilares do Azure Well-Architected Framework, que define os cinco atributos de qualidade a seguir para o design da carga de trabalho:

Essas práticas complementam outras diretrizes fundamentais no Centro de Arquitetura do Azure. Os princípios de design para aplicativos do Azure fornecem estratégias de alto nível, como projetar para autorrecuperação e dimensionamento. Os padrões de design de nuvem oferecem soluções reutilizáveis para problemas de arquitetura recorrentes. Os antipadrões de desempenho descrevem defeitos comuns que causam problemas de escalabilidade sob carga. Esses recursos ajudam você a fazer escolhas de arquitetura informadas.

Catálogo de práticas

Cada prática nesta tabela mapeia para um ou mais pilares do Well-Architected Framework. Use esses mapeamentos para identificar quais práticas são mais relevantes para os atributos de qualidade que você prioriza em sua carga de trabalho.

Prática Resumo Pilares relacionados
Design de API Crie APIs Web para dar suporte à independência da plataforma usando protocolos padrão e formatos de dados acordados. Promova a evolução do serviço para que os clientes possam descobrir a funcionalidade sem a necessidade de modificação. Melhore os tempos de resposta dando suporte a respostas parciais e fornecendo maneiras de filtrar e paginar dados. Excelência Operacional, Eficiência de Desempenho
Implementação da API Implemente APIs Web para serem eficientes, responsivas, escalonáveis e disponíveis. Torne as ações idempotentes, dê suporte à negociação de conteúdo e siga a especificação HTTP. Lide com exceções e dê suporte à descoberta de recursos. Forneça maneiras de lidar com solicitações grandes e minimizar o tráfego de rede. Excelência Operacional, Eficiência de Desempenho
Escala automática Crie aplicativos para alocar e desalocar recursos dinamicamente para atender aos requisitos de desempenho e minimizar os custos. Aproveite o recurso de dimensionamento automático do Azure Monitor e o dimensionamento automático integrado que muitos componentes do Azure oferecem. Otimização de Custos, Eficiência de Desempenho
Trabalhos em segundo plano Implemente trabalhos em lotes, tarefas de processamento e fluxos de trabalho como trabalhos em segundo plano. Use os serviços de plataforma do Azure para hospedar essas tarefas. Use eventos ou agendas para disparar tarefas e retornar resultados para tarefas de chamada. Confiabilidade, Excelência Operacional
Cache Melhore o desempenho copiando dados para um armazenamento rápido próximo a aplicativos. Armazene dados em cache que você lê com frequência, mas raramente modifique. Gerenciar a expiração e a simultaneidade de dados. Veja como preencher caches e usar o serviço Redis Gerenciado do Azure . Eficiência de desempenho
Rede de Distribuição de Conteúdo Use CDNs (redes de distribuição de conteúdo) para fornecer conteúdo da Web com eficiência aos usuários e reduzir a carga em aplicativos Web. Supere os desafios de implantação, controle de versão, segurança e resiliência. Confiabilidade, Eficiência de Desempenho
Particionamento de dados Particione dados para melhorar a escalabilidade, a disponibilidade e o desempenho e reduzir os custos de contenção e armazenamento de dados. Use o particionamento horizontal, vertical e funcional de maneiras eficientes. Otimização de Custos, Eficiência de Desempenho
Estratégias de particionamento de dados (por serviço) Aplique estratégias de particionamento em serviços Azure, incluindo Banco de Dados SQL do Azure, Azure Cosmos DB, Armazenamento de Blobs do Azure, Azure Managed Redis e Barramento de Serviço do Azure. Distribua cargas, reduza a latência e dê suporte ao dimensionamento horizontal. Otimização de Custos, Eficiência de Desempenho
Preservação do nome do host Saiba por que é importante preservar o nome do host HTTP original entre um proxy reverso e seu aplicativo Web de back-end e como implementar essa recomendação para os serviços de Azure mais comuns. Confiabilidade, Segurança
considerações sobre codificação de mensagens Escolha a estrutura de conteúdo, o formato de codificação e a biblioteca de serialização para mensagens assíncronas trocadas entre componentes do sistema. Considere as compensações, como interoperabilidade, tamanho, legibilidade humana e evolução do esquema. Segurança
Monitoramento e diagnóstico Acompanhe a integridade, o uso e o desempenho do sistema usando um pipeline de monitoramento e diagnóstico. Transforme dados de monitoramento em alertas, relatórios e gatilhos que ajudam você a agir em várias situações. Exemplos incluem detectar e corrigir problemas, capturar possíveis problemas, atender a garantias de desempenho e atender aos requisitos de auditoria. Excelência Operacional
Tratamento de falhas transitórias Lidar com falhas transitórias causadas por redes ou recursos indisponíveis. Supere os desafios com o desenvolvimento de estratégias de repetição apropriadas. Evite duplicar camadas de código de repetição e outros antipadrões. Fiabilidade

Princípios de design

Antes de resolver questões técnicas específicas, estabeleça uma base de arquitetura forte. Os princípios de design para aplicativos do Azure fornecem estratégias de alto nível que se aplicam a diferentes cargas de trabalho, como projetar para autorrecuperação, escalabilidade horizontal e reduzir a necessidade de coordenação. Esses princípios moldam as decisões que as práticas recomendadas listadas na tabela anterior ajudam você a implementar.

Padrões de design na nuvem

Depois de estabelecer princípios de design, os padrões de design de nuvem oferecem soluções reutilizáveis para problemas recorrentes em sistemas distribuídos. Muitas das práticas recomendadas neste artigo dependem de um ou mais desses padrões. Por exemplo, as diretrizes para tratamento de falhas transitórias se baseiam no padrão Retry e no padrão Circuit Breaker. As orientações de cache se referem ao padrão Cache-Aside. As diretrizes sobre trabalhos em segundo plano usam padrões como Consumidores Concorrentes e Nivelamento de Carga Baseado em Filas. Examine o catálogo completo para identificar padrões que abordam os desafios de arquitetura em sua carga de trabalho.

Antipadrões de desempenho

Defeitos podem surgir sob carga de produção mesmo quando você aplica princípios sólidos, bons padrões e práticas recomendadas. Antipadrões de desempenho para aplicativos em nuvem descrevem padrões comuns que não escalam ou atalhos que fazem os problemas se acumularem à medida que você adiciona recursos. Para detectar problemas antes de chegarem à produção, use esses antipadrões como uma lista de verificação durante revisões de design e revisões de código.

Próxima etapa