

# 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 fornece uma visão geral dos princípios, melhores práticas e perguntas atinentes ao projeto. Você pode encontrar orientações prescritivas sobre implementação no [Whitepaper sobre pilar de 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. 
+  **Democratizar tecnologias avançadas**: facilite a implementação de tecnologias avançadas 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 a equipe se concentre no desenvolvimento de produtos, em vez de provisionamento e gerenciamento de recursos. 
+  **Tornar-se global em minutos**: a implantação da workload em várias regiões da AWS ao redor do mundo permite que você forneça baixa latência e uma experiência melhor para os clientes por um custo mínimo. 
+  **Usar arquiteturas sem servidor**: 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. 
+  **Experimentar 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 afinidade 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 carga de trabalho. 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 quatro áreas de práticas recomendadas para eficiência de performance na nuvem: 
+  **Seleção** 
+  **Análise** 
+  **Monitoramento** 
+  **Concessões** 

 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. 

 Se você analisar suas opções regularmente, terá certeza de que está se beneficiando 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](perf-sel.md)
+ [Análise](perf-review.md)
+ [Monitoramento](perf-monitoring.md)
+ [Concessões](perf-tradeoffs.md)

# Seleção
<a name="perf-sel"></a>

 A solução ideal para uma carga de trabalho específica varia e, muitas vezes, as soluções combinam várias abordagens. Cargas de trabalho bem arquitetadas usam várias soluções e habilitam diferentes recursos para aprimorar a performance. 

 A AWS disponibiliza recursos de vários tipos e em configurações diferentes. Desse modo, é mais fácil encontrar uma abordagem que atenda melhor às necessidades da workload. Você também pode encontrar opções que não são facilmente obtidas com infraestrutura no local. 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 melhores práticas sobre eficiência de performance, consulte o [Apêndice](a-performance-efficiency.md).). 


| PERF 1:  Como você seleciona a arquitetura de melhor performance? | 
| --- | 
|  Muitas vezes, é necessário empregar várias abordagens para obter a performance ideal em uma carga de trabalho. Os sistemas com boa arquitetura usam várias soluções e recursos para aprimorar a performance.  | 

 Use uma abordagem impulsionada por dados para selecionar os padrões e a implementação de sua arquitetura e, por fim, obter uma solução econômica. Os arquitetos de soluções da AWS, as arquiteturas de referência da AWS e os parceiros da Rede de Parceiros da AWS (APN) podem ajudar você a selecionar uma arquitetura com base em conhecimentos do setor, mas os dados obtidos por meio de avaliações comparativas ou testes de carga serão necessários para otimizar a arquitetura. 

 Sua arquitetura provavelmente combinará várias abordagens arquiteturais diferentes (por exemplo, orientada por eventos, ETL ou pipeline). A implementação de sua arquitetura usará os serviços da AWS específicos para a otimização da performance da arquitetura. Nas seções a seguir, analisamos os quatro principais tipos de recursos que você deve levar em consideração (computação, armazenamento, banco de dados e rede). 

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

 Selecionar recursos computacionais que atendam aos seus requisitos, necessidades de performance e fornecem grande eficiência de custo e esforço permitirá que você faça mais com o mesmo número de recursos. Ao avaliar opções de computação, esteja ciente dos requisitos de performance e custo da carga de trabalho e use isso para tomar decisões bem embasadas. 

 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 simples botão ou uma única 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 um aplicativo 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). 
+  **Funções** abstraem o ambiente de execução do código que você deseja executar. Por exemplo, o 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:  Como você seleciona sua solução de computação? | 
| --- | 
| A solução de computação ideal para uma carga de trabalho varia conforme o design do aplicativo, os padrões de uso e as definições de configuração. As arquiteturas podem usar diferentes soluções de computação para vários componentes e podem habilitar 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. | 

 Ao arquitetar o uso da computação, você deve aproveitar os mecanismos de elasticidade disponíveis para garantir que você tenha capacidade suficiente para sustentar a performance conforme a demanda muda. 

# Armazenamento
<a name="perf-storage"></a>

 O armazenamento na nuvem é um componente essencial da computação em nuvem e mantêm as informações usadas pela sua carga de trabalho. Geralmente, o armazenamento na nuvem é mais confiável, escalável e seguro do que sistemas de armazenamento tradicionais no local. Escolha entre serviços de armazenamento de objetos, blocos e arquivos, bem como opções de migração de dados para a nuvem para sua carga de trabalho. 

 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 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 aplicativos de empresas em todo o mundo. 
+  **O 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 cargas de trabalho que exigem armazenamento persistente acessível por instâncias do EC2 e que ajuda você a ajustar aplicativos com os níveis ideais de capacidade de armazenamento, performance e custo. 
+  **O 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 (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 simples e econômico o processo de execução de sistemas de arquivos conhecidos, para que você possa aproveitar os conjuntos de recursos 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:  Como você seleciona sua solução de armazenamento? | 
| --- | 
|  A solução de armazenamento ideal para um sistema varia conforme o tipo de método de acesso (bloco, arquivo ou objeto), os padrões de acesso (aleatório ou sequencial), o rendimento 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. 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.  | 

 Quando você seleciona uma solução de armazenamento, garantir que ela se alinhe com seus padrões de acesso será fundamental para alcançar a performance desejada. 

# Banco de dados
<a name="perf-db"></a>

 A nuvem oferece serviços de banco de dados específicos que abordam diferentes problemas apresentados por sua carga de trabalho. Você pode escolher entre vários mecanismos de banco de dados de finalidade específica, inclusive bancos de dados relacionais, de chave-valor, documentos, em memória, gráficos, séries temporais e livros contábeis. Ao escolher o melhor banco de dados para resolver um problema específico (ou um grupo de problemas), você pode se libertar de bancos de dados monolíticos genéricos restritivos e se concentrar na criação de aplicativos para atender às necessidades de performance dos seus clientes. 

 Na AWS, você pode escolher entre vários mecanismos de banco de dados com propósito específico, inclusive bancos de dados relacionais, ledger, de chave-valor, de documentos, de grafos, de séries temporais e em memória. Com os bancos de dados da AWS, você não precisa se preocupar com tarefas de gerenciamento de banco de dados, como provisionamento de servidor, aplicação de patches, instalação, configuração, backups ou recuperação. A AWS monitora continuamente os clusters para manter as workloads em pleno funcionamento por meio de armazenamento com recuperação automática e escalabilidade automatizada, para que você se concentre no desenvolvimento de aplicações de valor superior. 

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


| PERF 4:  Como você seleciona sua solução de banco de dados? | 
| --- | 
|  A solução de banco de dados ideal para um sistema varia conforme os requisitos de disponibilidade, consistência, tolerância da partição, latência, durabilidade, escalabilidade e capacidade de consulta. Muitos sistemas usam soluções de banco de dados diferentes para vários subsistemas e habilitam diferentes recursos para melhorar a performance. A seleção da solução e dos recursos de banco de dados incorretos para um sistema pode levar a uma menor performance do sistema.  | 

 A abordagem de banco de dados da carga de trabalho tem um impacto significativo na eficiência da performance. Muitas vezes, é uma área escolhida de acordo com padrões organizacionais, em vez de por meio de uma abordagem orientada por dados. Assim como no armazenamento, é essencial considerar os padrões de acesso da sua carga de trabalho e também se outras soluções que não são de banco de dados podem resolver o problema com mais eficiência (como usar gráficos, séries temporais ou um mecanismo de pesquisa ou banco de dados de armazenamento na memória). 

# da AWS
<a name="perf-network"></a>

 Como a rede está entre todos os componentes da carga de trabalho, ela pode ter grandes impactos positivos e negativos sobre a performance e o comportamento da carga de trabalho. Também há cargas de trabalho que são altamente dependentes da performance da rede, como Computação de Alta Performance (HPC), para a qual é importante ter um entendimento profundo da rede a fim de aumentar a performance do cluster. É necessário determinar os requisitos de largura de banda, latência, instabilidade e throughput da carga de trabalho. 

 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 compatibilizar seus métodos de rede com suas necessidades. A AWS oferece recursos de produtos (por exemplo, redes avançadas, instâncias otimizadas do Amazon EBS, aceleração de transferências do Amazon S3 e a dinâmica do Amazon CloudFront) 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 5:  Como você configura sua solução de rede? | 
| --- | 
|  A solução de rede ideal para uma carga de trabalho varia com base nos requisitos de latência, throughput, instabilidade e largura de banda. Restrições físicas, como recursos de usuário ou no local, determinam as opções de localização. Essas restrições podem ser compensadas com pontos de presença ou posicionamento de recursos.  | 

 Você deve considerar o local ao implantar sua rede. É possível optar por colocar os recursos perto de onde eles serão usados para reduzir a distância. Use métricas de rede para fazer alterações na configuração de rede conforme a carga de trabalho evolui. Ao aproveitar as Regiões, grupos de posicionamento e serviços de borda, você pode melhorar a performance significativamente. É possível recriar ou modificar as redes baseadas na nuvem rapidamente, portanto, é necessário evoluir sua arquitetura de rede ao longo do tempo para manter a eficiência da performance. 

# Análise
<a name="perf-review"></a>

 As tecnologias de nuvem estão evoluindo rapidamente, e você deve garantir que os componentes da carga de trabalho estejam usando as tecnologias e abordagens mais recentes para melhorar continuamente a performance. Você deve avaliar e considerar continuamente alterações nos componentes da carga de trabalho para garantir que está cumprindo seus objetivos de performance e custo. As novas tecnologias, como machine learning (ML) e inteligência artificial (IA), podem permitir a reconstrução das experiências do cliente e inovações em todas as cargas de trabalho de negócios. 

 Aproveite a inovação contínua na AWS, orientada pelas necessidades do cliente. Lançamos novas regiões, pontos de presença, serviços e recursos regularmente. Qualquer uma dessas versões pode aprimorar positivamente a eficiência da performance de sua arquitetura. 

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


| PERF 6:  Como você aprimora sua carga de trabalho para aproveitar novas versões? | 
| --- | 
|  As opções de arquitetura de carga de trabalho são limitadas. No entanto, ao longo do tempo novas tecnologias e abordagens ficam disponíveis e podem aprimorar a performance de sua carga de trabalho.  | 

 Em geral, arquiteturas com baixa performance são o resultado de um processo de análise de performance inexistente ou problemático. Caso sua arquitetura esteja apresentando uma performance insatisfatória, a implementação de um processo de análise de performance permitirá que você aplique o ciclo Plan-do-check-act (PDCA – Planejar-realizar-verificar-agir) de Deming para promover um aprimoramento iterativo. 

# Monitoramento
<a name="perf-monitoring"></a>

 Após implementar sua carga de trabalho, é necessário monitorar a performance dela para que você possa corrigir todos os problemas antes que eles afetem seus clientes. As métricas de monitoramento devem ser usadas para gerar alarmes quando os limites são ultrapassados. 

 O Amazon CloudWatch é um serviço de monitoramento e observabilidade que fornece dados e insights práticos para monitorar workloads, responder a alterações de performance em todo o sistema, otimizar a utilização de recursos e obter uma visão unificada da integridade operacional. O CloudWatch coleta dados operacionais e de monitoramento em forma de logs, métricas e eventos com base em workloads executadas na AWS e em servidores on-premises. O AWS X-Ray ajuda os desenvolvedores a analisar e depurar aplicações distribuídas em produção. Com o AWS X-Ray, você pode obter insights sobre a performance do seu aplicativo, descobrir causas raiz e identificar gargalos de performance. É possível usar esses insights para reagir rapidamente e manter sua carga de trabalho funcionando sem problemas. 

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


| PERF 7:  Como você monitora seus recursos para garantir que eles estejam apresentando boa performance? | 
| --- | 
|  A performance do sistema pode diminuir com o tempo. Monitore a performance do sistema para identificar degradações e corrigir fatores internos ou externos, como a carga do aplicativo ou o sistema operacional.  | 

 Garantir que você não veja falsos positivos é essencial para uma solução eficaz de monitoramento. Os triggers automatizados evitam erros humanos e podem reduzir o tempo necessário para corrigir problemas. Planeje dias de jogo, nos quais as simulações sejam conduzidas no ambiente de produção para testar sua solução de alarme e garantir que ela reconheça corretamente os problemas. 

# Concessões
<a name="perf-tradeoffs"></a>

 Ao arquitetar soluções, pense nas concessões para garantir uma abordagem ideal. Dependendo de sua situação, você pode abrir mão de consistência, durabilidade e espaço por tempo ou latência para oferecer uma performance mais alta. 

 Com a AWS, você pode se tornar global em minutos e implantar recursos em vários locais do mundo para ficar mais próximo dos usuários finais. Você também pode adicionar dinamicamente réplicas somente leitura a repositórios de informações (como sistemas de banco de dados) a fim de reduzir a carga sobre o banco de dados principal. 

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


| PERF 8:  Como você usa concessões para melhorar a performance? | 
| --- | 
|  Ao elaborar soluções, determinar as concessões permite que você selecione uma abordagem ideal. Muitas vezes, você pode aumentar a performance trocando consistência, durabilidade e espaço por tempo e latência.  | 

 Conforme você altera a carga de trabalho, colete e avalie métricas para determinar o impacto dessas alterações. Meça os impactos ao sistema e também ao usuário final para entender como suas concessões afetam sua carga de trabalho. Use uma abordagem sistemática, como teste de carga, para explorar se a concessão aumenta a performance. 

# 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>
+  [Otimização da performance do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/PerformanceOptimization.html?ref=wellarchitected-wp) 
+  [Performance de volumes do Amazon EBS](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 (Fundamentos do Amazon EC2) (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: Storage state of the union (Sessão de liderança: palestra sobre armazenamento) (STG201-L)](https://www.youtube.com/watch?v=39vAsGi6eEI&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: AWS purpose-built databases (Sessão de liderança: bancos de dados com propósito específico) (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Connectivity to AWS and hybrid AWS network architectures (Conectividade com a AWS e arquiteturas de rede híbridas da AWS) (NET317-R1)](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 (Potencialização de última geração: aprofundamento sobre o sistema Nitro) (CMP303-R2)](https://www.youtube.com/watch?v=rUY-00yFlE4&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Scaling up to your first 10 million users (Aumente a escala verticalmente para atingir seus primeiros dez milhões de usuários) (ARC211-R)](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected-wp) 