Melhores práticas para aplicativos de nuvem
Essas melhores práticas podem ajudá-lo a criar aplicativos confiáveis, escalonáveis e seguros na nuvem. Elas oferecem diretrizes e dicas para projetar e implementar sistemas, mecanismos e abordagens eficientes e robustos. Muitos também incluem exemplos de código que você pode usar com os serviços do Azure. As práticas se aplicam a qualquer sistema distribuído, seja o host do Azure ou uma plataforma de nuvem diferente.
Catálogo de práticas
Esta tabela lista várias melhores práticas. A coluna Pilares ou padrões relacionados contém os seguintes links:
- Desafios de desenvolvimento em nuvem que a prática e os padrões de design relacionados abordam.
- Pilares do Microsoft Azure Well-Architected Framework em que a prática se concentra.
Prática | Resumo | Pilares ou padrões relacionados |
---|---|---|
Design de API | Projetar APIs Web para dar suporte à independência da plataforma usando protocolos padrão e formatos de dados acordados. Promover a evolução do serviço para que os clientes possam descobrir a funcionalidade sem a necessidade de modificação. Melhorar os tempos de resposta e impedir falhas transitórias, dando suporte a respostas parciais e fornecendo maneiras de filtrar e paginar dados. | Design e implementação, Eficiência de desempenho, Excelência operacional |
Implementação da API | Implementar APIs Web para serem eficientes, responsivas, escalonáveis e disponíveis. Realizar ações idempotentes, dar suporte à negociação de conteúdo e seguir a especificação HTTP. Tratar exceções e dar suporte à descoberta de recursos. Apresentar maneiras de lidar com solicitações grandes e minimizar o tráfego de rede. | Design e implementação, Excelência operacional |
Dimensionamento automático | Projetar aplicativos para alocar e desalocar recursos dinamicamente para atender aos requisitos de desempenho e minimizar os custos. Aproveitar o dimensionamento automático do Azure Monitor e o dimensionamento automático integrado que muitos componentes do Azure oferecem. | Eficiência de desempenho, Otimização de custo |
Trabalhos em segundo plano | Implementar trabalhos em lotes, tarefas de processamento e fluxos de trabalho como trabalhos em segundo plano. Usar os serviços de plataforma do Azure para hospedar essas tarefas. Disparar tarefas com eventos ou agendamentos e retornar resultados para tarefas de chamada. | Design e implementação, Excelência operacional |
Cache | Melhorar o desempenho copiando dados para um armazenamento rápido próximo aos aplicativos. Armazenar dados em cache que você lê com frequência, mas raramente modifica. Gerenciar a expiração e a simultaneidade de dados. Ver como preencher caches e usar o serviço Cache do Azure para Redis. | Gerenciamento de dados, Eficiência de desempenho |
Rede de distribuição de conteúdo | Usar 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. Superar os desafios de implantação, versão, segurança e resiliência. | Gerenciamento de dados, Eficiência de desempenho |
Particionamento de dados | Particionar dados para melhorar a escalabilidade, a disponibilidade e o desempenho e reduzir os custos de contenção e armazenamento de dados. Usar o particionamento horizontal, vertical e funcional de maneiras eficientes. | Gerenciamento de dados, Eficiência de desempenho, Otimização de custo |
Estratégias de particionamento de dados (por serviço) | Particionar dados nos serviços Banco de Dados SQL do Azure e Armazenamento do Microsoft Azure, como o Armazenamento de Tabelas do Azure e o Armazenamento de Blobs do Azure. Fragmentar seus dados para distribuir cargas, reduzir a latência e dar suporte ao dimensionamento horizontal. | Gerenciamento de dados, Eficiência de desempenho, Otimização de custo |
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 mais comuns do Azure. | Design e implementação, Confiabilidade |
Considerações sobre codificação de mensagens | Usar mensagens assíncronas para trocar informações entre componentes do sistema. Escolher a estrutura de conteúdo, o formato de codificação e a biblioteca de serialização que funcionam melhor com seus dados. | Mensagens, Segurança |
Monitoramento e diagnósticos | Acompanhar a integridade, o uso e o desempenho do sistema com um pipeline de monitoramento e diagnóstico. Transformar os dados de monitoramento em alertas, relatórios e gatilhos que ajudam em várias situações. Os exemplos incluem detectar e corrigir problemas, identificar possíveis problemas, atender às garantias de desempenho e atender aos requisitos de auditoria. | Excelência operacional |
Diretrizes de repetição para serviços específicos | Usar, adaptar e estender os mecanismos de nova tentativa que os serviços do Azure e os SDKs de cliente oferecem. Desenvolver uma abordagem sistemática e robusta para gerenciar problemas temporários com conexões, operações e recursos. | Design e implementação, Confiabilidade |
Tratamento de falhas transitórias | Tratar falhas transitórias causadas por redes ou recursos não disponíveis. Superar desafios ao desenvolver estratégias de novas tentativas apropriadas. Evitar duplicar camadas de código de repetições e outros antipadrões. | Design e implementação, Confiabilidade |