Eficiência de performance
O pilar (pilar) inclui (descrição)
O pilar Eficiência de performance fornece uma visão geral dos princípios, melhores práticas e perguntas atinentes ao projeto. Você encontra orientações prescritivas sobre implementação no whitepaper Pilar Eficiência de performance.
Princípios de design
Existem (contagem) princípios do projeto para (pilar inferior) na nuvem:
-
Democratizar 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 a equipe se concentre no desenvolvimento de produtos, em vez de provisionamento e gerenciamento de recursos.
-
Tornar-se global em minutos: A implantação de sua carga de trabalho 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.
-
Usar 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.
-
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 simpatia mecânico: 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
Existem (contagem) melhores práticas para (pilar inferior) na nuvem:
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.
A avaliação periódica de suas escolhas garante que você esteja aproveitando 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.
Melhores práticas
Seleção
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.
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 necessidades da sua carga de trabalho. Você também pode encontrar opções que não são facilmente obtidas com infraestrutura no local. 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 se concentram nessas considerações para (pilar inferior).
PERF 1: Como você seleciona a arquitetura de melhor 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 ajudá-lo a selecionar uma arquitetura com base em conhecimento do setor, mas os dados obtidos por meio de benchmarking ou teste de carga serão necessários para otimizar sua 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 que são específicos para a otimização da performance de sua 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
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 está disponível de três formas: instâncias, contêineres e funções: as
-
instâncias são servidores virtualizados, permitindo 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 Solid-State Drives (SSD – Unidade de estado sólido) e Graphics Processing Units (GPU – Unidades de processamento gráfico). Os
-
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). As
-
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 para (pilar inferior).
PERF 2: Como você seleciona sua solução de computação? |
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
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 está disponível de três formas: 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, disponibilidade de dados, segurança e performance líderes do setor. O Amazon S3 foi projetado para oferecer 99,999999999% (11 noves) de durabilidade e armazena dados para milhões de aplicativos para empresas de todo o mundo. O
-
Armazenamento em bloco oferece 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 rede de área de armazenamento (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, o que ajuda você a ajustar aplicativos 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. Soluções de armazenamento de arquivos, como o Amazon Elastic File System (EFS), ou 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 econômico 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 se concentram nessas considerações para (pilar inferior).
PERF 3: Como você seleciona sua solução de armazenamento? |
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 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 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. Com os bancos de dados da AWS, você não precisa se preocupar com tarefas de gerenciamento de banco de dados, como provisionamento, aplicação de patches, instalação, configuração, backups ou recuperação de servidores. A AWS monitora continuamente seus clusters para manter suas cargas de trabalho funcionando com armazenamento com autorreparação e escalabilidade automatizada, para que você possa se concentrar no desenvolvimento de aplicativos de maior valor.
As perguntas a seguir se concentram nessas considerações para (pilar inferior).
PERF 4: Como você seleciona sua solução de banco de dados? |
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).
Rede
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. Isso facilita fazer a correspondência entre os métodos de rede e suas necessidades. A AWS oferece recursos do produto (por exemplo, Rede aprimorada, instâncias otimizadas do Amazon EBS, Amazon S3 Transfer Acceleration e Amazon CloudFront dinâmico) para otimizar o tráfego da rede. A AWS também oferece recursos de rede (p. ex., roteamento de latência do Amazon Route 53, Amazon VPC endpoints, AWS Direct Connect e AWS Global Accelerator) para reduzir a distância ou a instabilidade da rede.
As perguntas a seguir se concentram nessas considerações para (pilar inferior).
PERF 5: Como você configura sua solução de redes? |
Você deve considerar o local ao implantar sua rede e pode 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 canais e serviços de borda, você pode melhorar significativamente a performance. É 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
As tecnologias de nuvem evoluem rapidamente e você deve garantir que os componentes da carga de trabalho estejam usando novas tecnologias e abordagens 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 e inteligência artificial (IA), podem permitir que você reimagine as experiências do cliente e realize inovações em todas as cargas de trabalho de negócios.
Aproveite a inovação contínua na AWS, impulsionada 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 para (pilar inferior).
PERF 6: Como você aprimora sua carga de trabalho para aproveitar novas versões? |
Geralmente 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
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 observação que fornece dados e informações práticas para monitorar sua carga de trabalho, responder a alterações de performance em todo o sistema, otimizar a utilização de recursos e obter uma visão unificada da saúde operacional. O CloudWatch coleta dados operacionais e de monitoramento na forma de logs, métricas e eventos de cargas de trabalho executadas na AWS e em servidores no local. O AWS X-Ray ajuda desenvolvedores a analisarem e depurarem aplicativos distribuídos de produção. Com o AWS X-Ray, você pode obter informações sobre a performance do 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 para (pilar inferior).
PERF 7: Como você monitora seus recursos para garantir que eles estejam funcionando? |
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
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 estar mais perto dos seus 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 para (pilar inferior).
PERF 8: Como você usa concessões para melhorar a performance? |
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
Consulte os seguintes recursos para saber mais sobre nossas melhores práticas para (pilar).
Performance Efficiency PillarAmazon S3 Performance Optimization
Amazon EBS Volume Performance
AWS re:Invent 2019: Amazon EC2 foundations (CMP211-R2)
AWS re:Invent 2019: Leadership session: Storage state of the union (STG201-L)
AWS re:Invent 2019: Leadership session: AWS purpose-built databases (DAT209-L)
AWS re:Invent 2019: Connectivity to AWS and hybrid AWS network architectures (NET317-R1)
AWS re:Invent 2019: Powering next-gen Amazon EC2: Deep dive into the Nitro system (CMP303-R2)
AWS re:Invent 2019: Scaling up to your first 10 million users (ARC211-R)