

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

O pilar Eficiência de performance inclui a capacidade de usar recursos de nuvem de maneira eficiente para atender aos requisitos de performance 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. Recomendações sobre implementação estão disponíveis 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 a 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 Web) e os serviços de eventos podem hospedar 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 mais 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ê possa aproveitar a 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 pode variar e, muitas vezes, as soluções combinam várias abordagens. As 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, o que facilita encontrar uma abordagem que atenda melhor às suas necessidades. Também é possível encontrar opções que não são facilmente obtidas com infraestrutura on-premises. Um serviço gerenciado como o Amazon DynamoDB, por exemplo, fornece um banco de dados NoSQL totalmente gerenciado com latência de milissegundos de um dígito em qualquer escala. 

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


| PERF 1: Como selecionar os recursos de nuvem e os padrões de arquitetura apropriados para sua workload? | 
| --- | 
|  Muitas vezes, é necessário empregar várias abordagens para obter a performance ideal em uma workload. Os sistemas com boa arquitetura usam várias soluções e recursos para aprimorar a 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 que permitem que você altere seus recursos 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, ou 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). 
+  As **funções** abstraem o ambiente de execução do código que você deseja aplicar. Por exemplo, o AWS Lambda permite executar código sem executar uma instância. 

 As perguntas a seguir referem-se a essas considerações sobre a eficiência de performance. 


| PERF 2: Como selecionar e usar recursos computacionais em sua workload? | 
| --- | 
| A solução de computação mais eficiente para uma workload varia dependendo do design da aplicação, dos padrões de uso e das definições de configuração. As arquiteturas podem usar diferentes soluções de computação para vários componentes e podem ativar diferentes recursos para melhorar a performance. Selecionar a solução de computação incorreta para uma arquitetura pode levar a uma menor eficiência de performance. | 

# 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: 
+  O **armazenamento de objetos** 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 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 líder do setor, disponibilidade de dados, segurança e performance. O Amazon S3 foi projetado para oferecer 99,999999999% (11 noves) de durabilidade e armazena dados para milhões de aplicações para empresas de todo o mundo. 
+  O **armazenamento em bloco fornece armazenamento** em blocos altamente disponível, consistente e de baixa latência para cada host virtual e é análogo ao armazenamento de conexão direta (DAS) ou a uma rede de área de armazenamento (SAN). O Amazon Elastic Block Store (Amazon EBS) foi projetado para workloads que exigem armazenamento persistente acessível por instâncias do EC2, o que ajuda você a ajustar aplicações com o custo, a performance e a capacidade de armazenamento corretos. 
+  O **armazenamento de arquivos** fornece acesso a um sistema de arquivos compartilhado entre vários sistemas. As 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 fácil e eficiente iniciar e executar sistemas de arquivos populares para que você possa aproveitar os sofisticados conjuntos de recursos e a rápida performance de sistemas de arquivos de código aberto amplamente utilizados e licenciados comercialmente. 

 As perguntas a seguir referem-se a essas considerações sobre a eficiência de performance. 


| PERF 3: Como armazenar, gerenciar e acessar dados em sua workload? | 
| --- | 
|  A solução de armazenamento mais eficiente para um sistema varia em função de tipo de operação de acesso (bloco, arquivo ou objeto), padrões de acesso (aleatório ou sequencial), throughput necessário, frequência de acesso (online, offline, arquivamento), frequência de atualização (WORM, dinâmica) e disponibilidade e durabilidade. Os sistemas Well-Architected usam várias soluções de armazenamento e habilitam diferentes recursos para melhorar a performance e usar os recursos de modo eficiente.  | 

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

 A solução de rede ideal para uma workload varia com base em latência, requisitos de throughput, jitter 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, é mais fácil atender às suas necessidades de rede. A AWS oferece recursos de produtos (por exemplo, redes avançada, 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 o jitter da rede. 

 As perguntas a seguir referem-se a essas considerações sobre a eficiência de performance. 


| PERF 4: Como selecionar e configurar os recursos de rede em sua workload? | 
| --- | 
|  Essa área de foco compartilha orientações e práticas recomendadas para projetar, configurar e operar soluções eficientes de rede e entrega de conteúdo na nuvem.  | 

# 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 na nuvem eficientes e de alta performance. Para adotar uma cultura que promova a eficiência de performance 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 CloudFormation. O uso de modelos permite colocar 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 e implantação contínuas (CI/CD) (por exemplo, repositório de código-fonte, sistemas de compilação, implantação e automação de teste) para implantar sua infraestrutura. Isso permite a você implantar 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 usar tanto de métricas técnicas quanto de negócios. Para aplicações móveis ou sites, métricas importantes são a captura do tempo até o primeiro byte ou renderização. Outras métricas geralmente aplicáveis incluem contagem de threads, taxa de coleta de resíduos e estados de espera. As métricas de negócios, como o custo cumulativo agregado por solicitação, podem alertar 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 do processo de implantação, inicie automaticamente os testes de performance após a aprovação bem-sucedida nos testes de execução mais rápida. 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 testes comparativos e de carga. Os resultados desses testes então devem ser vinculados de volta à compilação para que você possa rastrear as mudanças de performance ao longo do tempo. Para testes de execução longa, você pode tornar essa parte do pipeline assíncrona em relação ao restante da compilação. Como alternativa, é possível 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 o máximo 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. Cogite o uso de 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 ser maneiras econômicas de gerar a carga. 
+  **Visibilidade da performance:** as métricas principais devem estar visíveis para a sua equipe, especialmente as métricas relacionadas a cada versão de compilação. Isso permite que você identifique 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. 
+  **Revise os processos regularmente:** 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 performance permite promover melhorias iterativas. 
+  **Otimização contínua:** adote uma cultura para otimizar continuamente a eficiência de performance da da workload na nuvem. 

 As perguntas a seguir referem-se a essas considerações sobre a eficiência de performance. 


| PERF 5: Que processo você usa para oferecer maior eficiência de performance para sua workload?  | 
| --- | 
|  Ao arquitetar workloads, há princípios e práticas que você pode adotar para ajudar na melhor execução de workloads na nuvem eficientes e de alta performance. Para adotar uma cultura que promova a eficiência de performance das workloads na nuvem, considere estes princípios e práticas fundamentais:  | 

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

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

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

## 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: Fundamentos do Amazon EC2 (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: considerações sobre o estado do armazenamento (STG201-L)](https://www.youtube.com/watch?v=39vAsGi6eEI&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: bancos de dados com propósito específico da AWS (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Conectividade à AWS e arquiteturas de rede híbrida da AWS (NET317-R1)](https://www.youtube.com/watch?v=eqW6CPb58gs&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Capacitar o Amazon EC2 da próxima geração: mergulho profundo no Nitro System (CMP303-R2)](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Escalar para seus primeiros 10 milhões de usuários (ARC211-R)](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected-wp) 