Melhores práticas em aplicações na nuvem

Construir aplicações cloud fiáveis, escaláveis e seguras requer decisões arquitetónicas deliberadas. As melhores práticas deste artigo fornecem orientações para preocupações comuns que surgem em sistemas distribuídos, como cache, particionamento de dados, design de APIs e tratamento de falhas transitórias. Cada prática aborda um ou mais pilares do Framework Azure Well-Architected, que define os seguintes cinco atributos de qualidade para o design de cargas de trabalho:

Estas práticas complementam outras orientações fundamentais no Azure Architecture Center. Os princípios de design para aplicações Azure fornecem estratégias de alto nível, como desenhar para auto-regeneração e escalabilidade. Os padrões de design da cloud oferecem soluções reutilizáveis para problemas arquitetónicos recorrentes. Os antipadrões de desempenho descrevem defeitos comuns que causam problemas de escalabilidade sob carga. Estes recursos ajudam-no a tomar decisões arquitetónicas informadas.

Catálogo de práticas

Cada prática nesta tabela corresponde a um ou mais pilares do Well-Architected Framework. Use estes mapeamentos para identificar quais as práticas mais relevantes para os atributos de qualidade que prioriza na sua carga de trabalho.

Prática Resumo Pilares relacionados
Design de API Projete APIs da Web para oferecer 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 funcionalidades sem a necessidade de modificações. Melhorar os tempos de resposta apoiando respostas parciais e fornecendo formas de filtrar e paginar dados. Excelência Operacional, Eficiência de Desempenho
Implementação da API Implemente APIs da Web para ser eficiente, responsivo, escalável e disponível. Torne as ações idempotentes, ofereça suporte à negociação de conteúdo e siga a especificação HTTP. Tratar das exceções e apoiar a descoberta de recursos. Forneça maneiras de lidar com grandes solicitações e minimizar o tráfego de rede. Excelência Operacional, Eficiência de Desempenho
Dimensionamento Automático Projetar aplicações para alocar e desalocar recursos dinamicamente, de modo a satisfazer os requisitos de desempenho e minimizar custos. Tire partido da funcionalidade de dimensionamento automático no Azure Monitor e do dimensionamento automático incorporado que muitos componentes do Azure oferecem. Otimização de Custos, Eficiência de Desempenho
Empregos em segundo plano Implemente trabalhos em lote, tarefas de processamento e fluxos de trabalho como trabalhos em segundo plano. Use os serviços da plataforma Azure para hospedar essas tarefas. Utilize eventos ou agendamentos para acionar tarefas e devolva os resultados às tarefas que as invocam. Fiabilidade, Excelência Operacional
Cache Melhore o desempenho copiando dados para um armazenamento rápido próximo de aplicativos. Armazene em cache dados que você lê com frequência, mas raramente modifica. Gerencie a expiração e a simultaneidade de dados. Veja como preencher caches e usar o serviço Azure Managed Redis . Eficiência de Desempenho
Rede de Distribuição de Conteúdo Use redes de distribuição de conteúdo (CDNs) para fornecer conteúdo da Web de forma eficiente aos usuários e reduzir a carga em aplicativos da Web. Supere os desafios de implantação, controle de versão, segurança e resiliência. Fiabilidade, Eficiência de Desempenho
Particionamento de dados Particionar os dados para melhorar a escalabilidade, disponibilidade e desempenho, e para reduzir os custos de contenção e armazenamento de dados. Use particionamento horizontal, vertical e funcional de maneira eficiente. Otimização de Custos, Eficiência de Desempenho
Estratégias de particionamento de dados (por serviço) Aplicar estratégias de particionamento entre Azure serviços, incluindo Base de Dados SQL do Azure, Azure Cosmos DB, Armazenamento de Blobs do Azure, Azure Managed Redis e Azure Service Bus. Distribuir cargas, reduzir a latência e suportar escalonamento horizontal. Otimização de Custos, Eficiência de Desempenho
Preservação do Nome do Host Saiba porque é importante preservar o nome original do host HTTP entre um proxy reverso e a sua aplicação web back-end e como implementar esta recomendação para os serviços Azure mais comuns. Fiabilidade, Segurança
Considerações sobre codificação de mensagens Escolha a estrutura da carga útil, o formato de codificação e a biblioteca de serialização para mensagens assíncronas trocadas entre componentes do sistema. Considere compensações, como interoperabilidade, tamanho, legibilidade humana e evolução do esquema. Segurança
Monitorização e diagnóstico Acompanhe a saúde, utilização e desempenho do sistema através de um pipeline de monitorização e diagnóstico. Transforme os dados de monitorização em alertas, relatórios e gatilhos que o ajudem a agir em várias situações. Exemplos incluem detetar e corrigir problemas, detetar potenciais problemas, cumprir garantias de desempenho e cumprir os 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 desenvolvendo estratégias adequadas de repetição. Evite duplicar camadas de código de repetição e outros antipadrões. Fiabilidade

Princípios de conceção

Antes de abordar questões técnicas específicas, estabeleça uma base arquitetónica sólida. Os princípios de design para aplicações Azure fornecem estratégias de alto nível que se aplicam a todas as cargas de trabalho, como desenhar para auto-regeneração, escalabilidade e minimização da coordenação. Estes princípios moldam decisões que as melhores práticas listadas na tabela anterior o ajudam a implementar.

Padrões de arquitetura na nuvem

Depois de estabelecer princípios de design, os padrões de design na cloud oferecem soluções reutilizáveis para problemas recorrentes em sistemas distribuídos. Muitas das melhores práticas deste artigo baseiam-se em um ou mais destes padrões. Por exemplo, a orientação de tratamento de falhas transitórias baseia-se no padrão Retry e no padrão Circuit Breaker. As orientações sobre colocação em cache dizem respeito ao padrão Cache-Aside. A orientação sobre processos em segundo plano utiliza padrões como Consumidores Concorrentes e Nivelamento de Carga Baseado em Filas. Revise o catálogo completo para identificar padrões que respondam aos desafios arquitetónicos da sua carga de trabalho.

Antipadrões de desempenho

Podem surgir defeitos sob carga de produção mesmo aplicando princípios sólidos, bons padrões e boas práticas. Antipadrões de desempenho para aplicações cloud descrevem designs comuns que não escalam ou atalhos que causam problemas acumulados à medida que se adicionam funcionalidades. Para detetar problemas antes de chegarem à produção, use estes antipadrões como lista de verificação durante revisões de design e revisões de código.

Próximo passo