

# Eficiência de performance
<a name="performance-efficiency"></a>

 O pilar Eficiência de performance inclui a capacidade de usar recursos de computação com eficiência para atender aos requisitos do sistema e manter essa eficiência à medida que a demanda muda e as tecnologias evoluem. 

 O pilar Eficiência de performance apresenta uma visão geral dos princípios de design, das práticas recomendadas e das perguntas. Você pode encontrar orientações prescritivas sobre implementação no whitepaper [Pilar Eficiência de performance](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp). 

**Topics**
+ [Princípios de design](perf-dp.md)
+ [Definição](perf-def.md)
+ [Práticas recomendadas](perf-bp.md)
+ [Recursos](perf-resources.md)

# Princípios de design
<a name="perf-dp"></a>

 Existem cinco princípios de design para eficiência de performance na nuvem: 
+  **Democratize tecnologias avançadas**: facilite a implementação de tecnologia avançada para a sua equipe delegando tarefas complexas ao seu fornecedor de nuvem. Em vez de solicitar que sua equipe de TI aprenda sobre como hospedar e executar uma nova tecnologia, avalie a possibilidade de consumir a tecnologia como um serviço. Por exemplo, bancos de dados NoSQL, transcodificação de mídia e machine learning são tecnologias que exigem altos níveis de especialização. Na nuvem, essas tecnologias se tornam serviços que sua equipe pode consumir, permitindo que ela se concentre no desenvolvimento de produtos, em vez de provisionamento e gerenciamento de recursos. 
+  **Tenha alcance global em poucos minutos**: a implantação de sua workload em várias regiões da AWS em todo o mundo permite oferecer menor latência e uma melhor experiência para seus clientes a um custo mínimo. 
+  **Use arquiteturas sem servidor**: as arquiteturas sem servidor eliminam a necessidade de executar e manter servidores físicos para realizar atividades tradicionais de computação. Os serviços de armazenamento sem servidor, por exemplo, podem atuar como sites estáticos (eliminando a necessidade de servidores da web) e os serviços de eventos podem hospedar o código. Isso elimina o fardo operacional do gerenciamento de servidores físicos e pode reduzir os custos transacionais, pois os serviços gerenciados operam em escala de nuvem. 
+  **Experimente com mais frequência**: com recursos virtuais e automatizáveis, você pode executar rapidamente testes comparativos usando diferentes tipos de instâncias, armazenamento ou configurações. 
+  **Considere a solidariedade mecânica**: entenda como os serviços de nuvem são consumidos e use sempre a abordagem tecnológica alinhada às suas metas de workload. Por exemplo, avalie padrões de acesso a dados ao selecionar abordagens de banco de dados ou armazenamento. 

# Definição
<a name="perf-def"></a>

 Existem cinco áreas de práticas recomendadas para eficiência de performance na nuvem: 
+  **Seleção de arquitetura** 
+  **Computação e hardware** 
+  **Gerenciamento de dados** 
+  **Rede e entrega de conteúdo** 
+  **Processo e cultura** 

 Adote uma abordagem impulsionada por dados para criar uma arquitetura de alta performance. Reúna dados sobre todos os aspectos da arquitetura, desde o design de alto nível até a seleção e a configuração dos tipos de recursos. 

 Analisar suas escolhas regularmente garante que você esteja tirando proveito da evolução contínua da Nuvem AWS. O monitoramento garante que você esteja ciente de qualquer desvio em relação à performance esperada. Faça concessões em sua arquitetura visando o aprimoramento da performance, como o uso de compactação ou armazenamento em cache, ou ainda a diminuição dos requisitos de consistência. 

# Práticas recomendadas
<a name="perf-bp"></a>

**Topics**
+ [Seleção de arquitetura](perf-arch.md)
+ [Computação e hardware](perf-compute.md)
+ [Gerenciamento de dados](perf-data.md)
+ [Rede e entrega de conteúdo](perf-networking.md)
+ [Processo e cultura](perf-process.md)

# Seleção de arquitetura
<a name="perf-arch"></a>

 A solução ideal para uma workload específica varia e, muitas vezes, as soluções combinam várias abordagens. Workloads do Well-Architected usam várias soluções e permitem diferentes recursos para aprimorar a performance. 

 Os recursos da AWS estão disponíveis em vários tipos e configurações, facilitando encontrar uma abordagem que atenda melhor às suas necessidades. Você também pode encontrar opções que não são facilmente obtidas com infraestrutura on-premises. Por exemplo, um serviço gerenciado, como o Amazon DynamoDB, fornece um banco de dados NoSQL totalmente gerenciado com latência de milissegundos de um dígito em qualquer escala. 

 As perguntas a seguir se concentram nessas considerações sobre a eficiência da performance. (Para obter uma lista de perguntas e práticas recomendadas sobre eficiência de performance, consulte o [Appendix](a-performance-efficiency.md).). 


| PERF 1:  How do you select appropriate cloud resources and architecture patterns for your workload? | 
| --- | 
|  Often, multiple approaches are required for more effective performance across a workload. Well-Architected systems use multiple solutions and features to improve performance.  | 

# Computação e hardware
<a name="perf-compute"></a>

 A opção ideal de computação para uma workload específica pode variar de acordo com o design, os padrões de uso e as definições de configuração da aplicação. As arquiteturas podem usar diferentes opções de computação para vários componentes e permitir diferentes recursos para aprimorar a performance. A seleção da opção de computação incorreta para uma arquitetura pode levar a uma menor eficiência de performance. 

 Na AWS, a computação é disponibilizada em três formatos: instâncias, contêineres e funções: 
+  **Instâncias** são servidores virtualizados cujos recursos podem ser alterados com um botão ou uma chamada de API. Como as decisões de recursos na nuvem não são imutáveis, você pode testar diferentes tipos de servidores. Na AWS, essas instâncias de servidor virtual vêm em diferentes famílias e tamanhos e oferecem uma ampla variedade de capacidades, inclusive unidades de estado sólido (SSDs) e unidades de processamento gráfico (GPUs). 
+  **Contêineres** são um método de virtualização do sistema operacional que permite executar uma aplicação e suas dependências em processos isolados por recursos. O AWS Fargate é um serviço de computação sem servidor para contêineres, mas também é possível usar o Amazon EC2 se você precisar de controle sobre a instalação, a configuração e o gerenciamento do seu ambiente de computação. Você também pode escolher entre várias plataformas de orquestração de contêineres: Amazon Elastic Container Service (ECS) ou Amazon Elastic Kubernetes Service (EKS). 
+  **Funções** abstraem o ambiente de execução do código que você deseja aplicar. Por exemplo, AWS Lambda permite que você execute código sem executar uma instância. 

 As perguntas a seguir se concentram nessas considerações sobre a eficiência da performance. 


| PERF 2:  How do you select and use compute resources in your workload? | 
| --- | 
| The more efficient compute solution for a workload varies based on application design, usage patterns, and configuration settings. Architectures can use different compute solutions for various components and turn on different features to improve performance. Selecting the wrong compute solution for an architecture can lead to lower performance efficiency. | 

# Gerenciamento de dados
<a name="perf-data"></a>

 A solução de gerenciamento de dados ideal para um sistema específico varia conforme o tipo de dados (bloco, arquivo ou objeto), os padrões de acesso (aleatório ou sequencial), o throughput necessário, a frequência de acesso (online, offline, arquivamento), a frequência de atualização (WORM, dinâmica) e as restrições de disponibilidade e durabilidade. As workloads do Well-Architected usam datastores específicos que permitem que recursos diferentes melhorem a performance. 

 Na AWS, o armazenamento é disponibilizado em três formatos: objeto, bloco e arquivo: 
+  **Armazenamento de objeto** fornece uma plataforma escalável e durável para tornar os dados acessíveis a partir de qualquer local da Internet para conteúdo gerado pelo usuário, arquivamento ativo, computação de tecnologia sem servidor, armazenamento de big data ou backup e recuperação. O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos que oferece escalabilidade, disponibilidade de dados, segurança e performance líderes do setor. O Amazon S3 foi projetado para oferecer 99,999999999% (11 9s) de durabilidade e armazena dados para milhões de aplicações de empresas em todo o mundo. 
+  **Armazenamento em bloco** fornece armazenamento em bloco altamente disponível, consistente e de baixa latência para cada host virtual e é semelhante ao armazenamento de conexão direta (DAS) ou a uma SAN. O Amazon Elastic Block Store (Amazon EBS) foi projetado para workloads que exigem armazenamento persistente acessível por instâncias do EC2 e que ajuda você a ajustar aplicações com os níveis ideais de capacidade de armazenamento, performance e custo. 
+  **Armazenamento de arquivos** fornece acesso a um sistema de arquivos compartilhado entre vários sistemas. Soluções de armazenamento de arquivos, como o Amazon Elastic File System (Amazon EFS), são ideais para casos de uso como grandes repositórios de conteúdo, ambientes de desenvolvimento, armazenamentos de mídia ou diretórios iniciais de usuários. O Amazon FSx torna mais eficiente e econômico o processo de execução de sistemas de arquivos conhecidos, para que você possa aproveitar os conjuntos de atributos avançados e a rápida performance de sistemas de arquivos de código aberto amplamente utilizados e licenciados comercialmente. 

 As perguntas a seguir se concentram nessas considerações sobre a eficiência da performance. 


| PERF 3:  How do you store, manage, and access data in your workload? | 
| --- | 
|  The more efficient storage solution for a system varies based on the kind of access operation (block, file, or object), patterns of access (random or sequential), required throughput, frequency of access (online, offline, archival), frequency of update (WORM, dynamic), and availability and durability constraints. Well-architected systems use multiple storage solutions and turn on different features to improve performance and use resources efficiently.  | 

# Rede e entrega de conteúdo
<a name="perf-networking"></a>

 A solução de rede ideal para uma workload varia com base nos requisitos de latência, throughput, instabilidade e largura de banda. Restrições físicas, como recursos de usuário ou on-premises, determinam as opções de localização. Essas restrições podem ser compensadas com locais de borda ou posicionamento de recursos. 

 Na AWS, as redes são virtualizadas e estão disponíveis em vários tipos e configurações diferentes. Desse modo, fica mais fácil atender às suas necessidades de rede. A AWS oferece recursos de produtos (por exemplo, redes avançadas, instâncias otimizadas de rede do Amazon EC2, aceleração de transferências do Amazon S3 e Amazon CloudFront dinâmico) para otimizar o tráfego da rede. A AWS também oferece recursos de rede (por exemplo, roteamento de latência do Amazon Route 53, endpoints da Amazon VPC, AWS Direct Connect e AWS Global Accelerator) para reduzir a distância ou a oscilação da rede. 

 As perguntas a seguir se concentram nessas considerações sobre a eficiência da performance. 


| PERF 4:  How do you select and configure networking resources in your workload? | 
| --- | 
|  This question includes guidance and best practices to design, configure, and operate efficient networking and content delivery solutions in the cloud.  | 

# Processo e cultura
<a name="perf-process"></a>

 Ao arquitetar workloads, há princípios e práticas que você pode adotar para ajudar na melhor execução de workloads de nuvem eficientes e de alto desempenho. Para adotar uma cultura que promova a eficiência do desempenho das workloads na nuvem, considere estes princípios e práticas fundamentais: 

 Considere estes princípios fundamentais para construir essa cultura: 
+  **Infraestrutura como código:** defina sua infraestrutura como código usando abordagens como modelos do AWS CloudFormation. O uso de modelos permite que você coloque a infraestrutura no controle de origem junto com o código e as configurações de sua aplicação. Isso permite aplicar à sua infraestrutura as mesmas práticas usadas para desenvolver software, possibilitando uma iteração rápida. 
+  **Pipeline de implantação:** use um pipeline de Integração/Implantação Contínuas (CI/CD) (p. ex., repositório de código-fonte, sistemas de compilação, implantação e automação de teste) para implantar sua infraestrutura. Isso permite que você implante de maneira repetível, consistente e econômica enquanto itera. 
+  **Métricas bem-definidas:** configure e monitore métricas para capturar os indicadores-chave de performance (KPIs). Recomendamos o uso tanto de métricas técnicas quanto de negócios. Para aplicativos móveis ou sites, as principais métricas são a captura do tempo até o primeiro byte ou renderização. Outras métricas geralmente aplicáveis incluem contagem de thread, taxa de coleta de resíduos e estados de espera. Métricas de negócio, como o custo cumulativo agregado por solicitação, podem alertá-lo sobre maneiras de reduzir os custos. Considere com cuidado como você planeja interpretar as métricas. Por exemplo, você poderia escolher o máximo ou o 99º percentil, em vez da média. 
+  **Teste a performance automaticamente:** como parte de seu processo de implantação, acione automaticamente testes de performance após a aprovação bem-sucedida dos testes de execução mais rápidos. A automação deve criar um novo ambiente, configurar as condições iniciais, como dados de teste, e então executar uma série de benchmarks e testes de carga. Os resultados desses testes então devem ser vinculados de volta à compilação para que você possa acompanhar as mudanças de performance ao longo do tempo. Para testes de execução longa, você pode tornar essa parte do pipeline assíncrona do restante da compilação. Como alternativa, você pode realizar testes de performance durante a noite usando instâncias spot do Amazon EC2. 
+  **Geração de carga:** você deve criar uma série de scripts de teste que repliquem jornadas sintéticas ou pré-gravadas do usuário. Esses scripts devem ser idempotentes e não acoplados, e talvez você precise incluir scripts de *pré-aquecimento* para gerar resultados válidos. Seus scripts de teste devem replicar tanto quanto for possível o comportamento do uso na produção. É possível usar soluções de software ou Software como Serviço (SaaS) para gerar a carga. Considere o uso das soluções do [AWS Marketplace](https://aws.amazon.com/marketplace/) e de [Instâncias spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html): elas podem representar maneiras econômicas de gerar a carga. 
+  **Visibilidade de performance:** as métricas principais devem estar visíveis à sua equipe, especialmente métricas relacionadas a cada versão de compilação. Isso permite que você veja qualquer tendência positiva ou negativa importante ao longo do tempo. Você também deve exibir métricas do número de erros ou exceções para garantir que esteja testando um sistema em funcionamento. 
+ **Visualização:** use técnicas de visualização que deixem claro onde os problemas de performance, hot spots, estados de espera ou baixa utilização estão ocorrendo. Sobreponha métricas de performance a diagramas de arquitetura. Código ou gráficos de chamada podem ajudar a identificar problemas rapidamente. 
+  **Processo de análise regular:** arquiteturas com baixa performance geralmente são o resultado de um processo de análise de performance inexistente ou problemático. Se sua arquitetura está funcionando mal, a implementação de um processo de análise de desempenho permite que você promova melhorias iterativas. 
+  **Otimização contínua:** adote uma cultura para otimizar continuamente a eficiência da performance da workload na nuvem. 

 As perguntas a seguir se concentram nessas considerações sobre a eficiência da performance. 


| PERF 5:  What process do you use to support more performance efficiency for your workload?  | 
| --- | 
|  When architecting workloads, there are principles and practices that you can adopt to help you better run efficient high-performing cloud workloads. To adopt a culture that fosters performance efficiency of cloud workloads, consider these key principles and practices.  | 

# Recursos
<a name="perf-resources"></a>

 Consulte os seguintes recursos para saber mais sobre nossas melhores práticas para eficiência de performance. 

## Documentação
<a name="perf-doc"></a>
+  [Amazon S3 Otimização da performance](https://docs.aws.amazon.com/AmazonS3/latest/dev/PerformanceOptimization.html?ref=wellarchitected-wp) 
+  [Amazon EBS Performance de volume](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSPerformance.html?ref=wellarchitected-wp) 

## Whitepaper
<a name="perf-wp"></a>
+  [Pilar Eficiência de performance](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp) 

## Vídeo
<a name="perf-video"></a>
+  [AWS re:Invent 2019: Amazon EC2 foundations (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: Storage state of the union (STG201-L)](https://www.youtube.com/watch?v=39vAsGi6eEI&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: AWS purpose-built databases (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Connectivity to AWS and hybrid AWS network architectures](https://www.youtube.com/watch?v=eqW6CPb58gs&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Powering next-gen Amazon EC2: Deep dive into the Nitro system](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Scaling up to your first 10 million users](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected-wp) 