

# 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. 