

# Padrões de software e arquitetura
<a name="a-sus-software-architecture-patterns"></a>

**Topics**
+ [SUS 3 Como você aproveita os padrões de software e arquitetura para apoiar suas metas de sustentabilidade?](w2aac19c15b9b5.md)

# SUS 3 Como você aproveita os padrões de software e arquitetura para apoiar suas metas de sustentabilidade?
<a name="w2aac19c15b9b5"></a>

Implemente padrões que suavizem os picos de carga e mantenham a alta utilização consistente de recursos implantados para minimizar os recursos consumidos. Os componentes podem ficar ociosos devido à falta de uso por conta das mudanças no comportamento do usuário ao longo do tempo. Revise os padrões e a arquitetura para consolidar os componentes subutilizados a fim de aumentar a utilização geral. Retire os componentes que não são mais necessários. Saiba qual é a performance dos componentes de sua workload e otimize os componentes que consomem a maioria dos recursos. Esteja ciente dos dispositivos que seus clientes usam para acessar seus serviços e implemente padrões a fim de minimizar a necessidade de upgrades de dispositivos. 

 Práticas recomendadas: 

# SUS03-BP01 Otimizar o software e a arquitetura para trabalhos assíncronos e programados
<a name="sus_sus_software_a2"></a>

 Use designs e arquiteturas eficientes de software para minimizar a média de recursos necessários por unidade de trabalho. Implemente mecanismos que resultem em uma utilização uniforme de componentes para reduzir os recursos ociosos entre as tarefas e minimizar o impacto de picos de carga. 

 **Nível de exposição a riscos quando esta prática recomendada não é estabelecida:** Baixo 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Enfileire solicitações que não exigem processamento imediato. 
+  Aumente a serialização para nivelar a utilização em todo o pipeline. 
+  Modifique a capacidade de componentes individuais para evitar que os recursos fiquem ociosos aguardando a entrada. 
+  Crie buffers e estabeleça limites de taxa para regular o consumo de serviços externos. 
+  Use o hardware mais eficiente disponível para suas otimizações de software. 
+  Use arquiteturas orientadas a filas, gerenciamento de pipelines e operadores de instância sob demanda para maximizar a utilização do processamento em lote. 
+  Programe tarefas para evitar os picos de carga e a contenção de recursos de execução simultânea. 
+  Programe trabalhos em horários do dia em que a intensidade de carbono para a geração de energia é menor. 

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

 **Documentos relacionados:** 
+  [O que é o Amazon Simple Queue Service?](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) 
+  [O que é o Amazon MQ?](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.html) 
+  [Escalabilidade baseada no Amazon SQS](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html) 
+  [O que é o AWS Step Functions?](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 
+  [O que é o AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 
+  [Usar o AWS Lambda com o Amazon SQS](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html) 
+  [O que é o Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 

 **Vídeos relacionados:** 
+  [Building Sustainably on AWS (Criação de sustentabilidade na AWS)](https://www.youtube.com/watch?v=ARAitMSIxc8) 
+  [Moving to event-driven architectures (Mudar para arquiteturas orientadas a eventos)](https://www.youtube.com/watch?v=h46IquqjF3E) 

# SUS03-BP02 Remover ou refatorar componentes da workload subutilizados ou não utilizados
<a name="sus_sus_software_a3"></a>

 Monitore a atividade da workload para identificar alterações na utilização de componentes individuais ao longo do tempo. Remova os componentes que não são mais utilizados nem necessários e refatore os componentes subutilizados para limitar o desperdício de recursos. 

 **Nível de exposição a riscos quando esta prática recomendada não é estabelecida:** Baixo 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Analise a carga (usando indicadores como fluxo de transações e chamadas de API) em componentes funcionais para identificar componentes não utilizados e subutilizados. 
+  Retire os componentes que não são mais necessários. 
+  Refatore os componentes subutilizados. 
+  Consolide os componentes subutilizados com outros recursos para melhorar a eficiência da utilização. 

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

 **Documentos relacionados:** 
+  [O que é o AWS X-Ray?](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [O que é o Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [Usar o ServiceLens para monitorar a integridade das suas aplicações](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ServiceLens.html) 
+  [Automated Cleanup of Unused Images in Amazon ECR (Limpeza automatizada de imagens não utilizadas no Amazon ECR)](https://aws.amazon.com/blogs/compute/automated-cleanup-of-unused-images-in-amazon-ecr/) 

 **Vídeos relacionados:** 
+  [Building Sustainably on AWS (Criação de sustentabilidade na AWS)](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP03 Otimizar as áreas de código que consomem mais tempo ou recursos
<a name="sus_sus_software_a4"></a>

 Monitore a atividade da workload para identificar os componentes da aplicação que consomem a maioria dos recursos. Otimize o código que é executado nesses componentes para minimizar o uso de recursos e, ao mesmo tempo, maximizar a performance. 

 **Nível de exposição a riscos quando esta prática recomendada não é estabelecida:** Baixo 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Monitore a performance como uma função do uso de recurso para identificar componentes com requisitos de recursos altos por unidade de trabalho como alvos de otimização. 
+  Use um criador de perfil de código para identificar as áreas de código que gastam mais tempo ou usam mais recursos e as defina como alvos de otimização. 
+  Substitua algoritmos por versões mais eficientes que produzem o mesmo resultado. 
+  Use a aceleração de hardware para melhorar a eficiência de blocos de código com longos tempos de execução. 
+  Use a linguagem de programação e o sistema operacional mais eficientes para a workload. 
+  Remova classificações e formatações desnecessárias. 
+  Use padrões de transferência de dados que minimizem os recursos com base na frequência de alterações dos dados e em como eles são consumidos. Por exemplo, envie informações sobre alterações de estado para um cliente em vez de fazê-lo consumir recursos para executar sondagens e receber mensagens inúteis que relatem “não há alteração”. 

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

 **Documentos relacionados:** 
+  [O que é o Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [O que é o Amazon CodeGuru Profiler?](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 
+  [Instâncias de FPGA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/fpga-getting-started.html) 
+  [Os AWS SDKs em Ferramentas para desenvolver na AWS](https://aws.amazon.com/tools/) 

 **Vídeos relacionados:** 
+  [Building Sustainably on AWS (Criação de sustentabilidade na AWS)](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP04 Otimizar o impacto sobre dispositivos e equipamentos de clientes
<a name="sus_sus_software_a5"></a>

 Conheça os dispositivos e o equipamento que os clientes usam para consumir seus serviços, o ciclo de vida esperado para eles e o impacto financeiro e na sustentabilidade pela substituição desses componentes. Implemente padrões e arquiteturas de software de modo a minimizar a necessidade de substituir dispositivos e fazer upgrade de equipamento. Por exemplo, implemente novos recursos usando código compatível com versões anteriores de sistemas operacionais e hardware mais antigos, ou gerencie o tamanho das cargas úteis para que elas não excedam a capacidade de armazenamento do dispositivo de destino. 

 **Nível de exposição a riscos quando esta prática recomendada não for estabelecida:** Baixo 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Faça um inventário dos dispositivos usados pelos clientes. 
+  Teste usando farms de dispositivos gerenciados com conjuntos representativos de hardware para entender o impacto de suas alterações, e itere o desenvolvimento para maximizar os dispositivos compatíveis. 
+  Considere a largura de banda da rede e a latência ao criar cargas úteis, e implemente recursos que ajudem suas aplicações a funcionar bem em links de baixa largura de banda e alta latência. 
+  Pré-processe cargas úteis de dados para reduzir os requisitos de processamento local e limitar os requisitos de transferência de dados. 
+  Realize atividades com computação intensa no lado do servidor (como renderização de imagens) ou use a transmissão de aplicações para melhorar a experiência do usuário em dispositivos mais antigos. 
+  Faça a segmentação e a paginação dos dados de saída, especialmente para sessões interativas, a fim de gerenciar cargas úteis e limitar os requisitos de armazenamento local. 

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

 **Documentos relacionados:** 
+  [O que é o AWS Device Farm?](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) 
+  [Documentação do Amazon AppStream 2.0](https://docs.aws.amazon.com/appstream2/) 
+  [NICE DCV](https://docs.aws.amazon.com/dcv/) 
+  [Documentação do Amazon Elastic Transcoder](https://docs.aws.amazon.com/elastic-transcoder/) 

 **Vídeos relacionados:** 
+  [Building Sustainably on AWS (Criação de sustentabilidade na AWS)](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP05 Usar arquiteturas e padrões de software que oferecem suporte melhor aos padrões de armazenamento e ao acesso a dados
<a name="sus_sus_software_a6"></a>

 Entenda como os dados são usados com sua workload, consumidos pelos usuários, transferidos e armazenados. Escolha tecnologias com o mínimo de requisitos de armazenamento e processamento de dados. 

 **Nível de exposição a riscos quando esta prática recomendada não é estabelecida:** Baixo 

## Orientações para a implementação
<a name="implementation-guidance"></a>
+  Analise seus padrões de armazenamento e acesso a dados. 
+  Armazene arquivos de dados em formatos de arquivo eficientes, como Parquet, para evitar processamento desnecessário (por exemplo, ao executar análises) e para reduzir o armazenamento total provisionado. 
+  Use tecnologias que funcionam nativamente com dados compactados. 
+  Use o mecanismo de banco de dados que melhor comporta seu padrão de consulta dominante. 
+  Gerencie seus índices de bancos de dados para garantir que o design do índice comporte a execução eficiente de consultas. 
+  Escolha protocolos de rede que reduzam a quantidade de capacidade de rede consumida. 

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

 **Documentos relacionados:** 
+  [Formatos de arquivos compactados compatíveis com o Athena](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html) 
+  [COPY de formatos de dados colunares com o Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/copy-usage_notes-copy-from-columnar.html) 
+  [Converter o formato de registro de entrada no Firehose ](https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html) 
+  [Opções de formato para entradas e saídas de ETL no AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html) 
+  [Melhorar a performance de consultas no Amazon Athena fazendo a conversão para formatos colunares](https://docs.aws.amazon.com/athena/latest/ug/convert-to-columnar.html) 
+  [Carregar arquivos de dados compactados do Amazon S3 com o Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/t_loading-gzip-compressed-data-files-from-S3.html) 
+  [Monitorar a carga do banco de dados com o Performance Insights no Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html) 
+  [Monitorar a carga do banco de dados com o Performance Insights no Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 
+  [AWS IoT FleetWise](https://aws.amazon.com/about-aws/whats-new/2021/11/aws-iot-fleetwise-transferring-vehicle-data-cloud/) 

 **Vídeos relacionados:** 
+  [Building Sustainably on AWS (Criação de sustentabilidade na AWS)](https://www.youtube.com/watch?v=ARAitMSIxc8) 