

# Patrones de software y arquitectura
<a name="a-sus-software-architecture-patterns"></a>

**Topics**
+ [SUS 3 ¿Cómo puede sacar partido de los patrones de software y de arquitectura para respaldar sus objetivos de sostenibilidad?](w2aac19c15b9b5.md)

# SUS 3 ¿Cómo puede sacar partido de los patrones de software y de arquitectura para respaldar sus objetivos de sostenibilidad?
<a name="w2aac19c15b9b5"></a>

Implemente patrones que permitan suavizar la carga y mantener un uso elevado consistente de los recursos implementados para minimizar los recursos consumidos. Puede haber componentes que queden inactivos debido a la falta de uso relacionada con los cambios en el comportamiento de los usuarios a lo largo del tiempo. Revise los patrones y la arquitectura para consolidar los componentes infrautilizados a fin de incrementar el uso general. Retire los componentes que ya no son necesarios. Analice el rendimiento de los componentes de su carga de trabajo y optimice aquellos que consumen la mayor cantidad de recursos. Tenga en cuenta los dispositivos que usan los clientes para acceder a sus servicios e implemente patrones para minimizar la necesidad de realizar actualizaciones de los dispositivos. 

 Prácticas recomendadas: 

# SUS03-BP01: Optimización del software y la arquitectura para los trabajos asíncronos y programados
<a name="sus_sus_software_a2"></a>

 Use arquitecturas y diseños de software eficaces para minimizar el promedio de recursos necesarios por unidad de trabajo. Implemente mecanismos que deriven en un uso equilibrado de los componentes para reducir el número de recursos inactivos entre tareas y minimizar el impacto de los picos de carga. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Bajo 

## Guía para la implementación
<a name="implementation-guidance"></a>
+  Ponga en cola las solicitudes que no requieran un procesamiento inmediato. 
+  Incremente la serialización para simplificar el uso en la canalización. 
+  Modifique la capacidad de los componentes individuales para impedir que los recursos queden inactivos mientras se espera la entrada. 
+  Cree búferes y establezca límites de velocidad para suavizar el consumo de servicios externos. 
+  Use el hardware más eficaz disponible para las optimizaciones del software. 
+  Use arquitecturas basadas en colas, administración de canalizaciones y procesos de trabajo de instancia bajo demanda para maximizar el uso del procesamiento por lotes. 
+  Programe las tareas para evitar picos de carga y conflictos de los recursos debido a la ejecución simultánea. 
+  Programe los trabajos durante las horas del día a las que la intensidad de carbono de la energía sea más baja. 

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

 **Documentos relacionados:** 
+  [¿Qué es Amazon Simple Queue Service?](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html) 
+  [¿Qué es Amazon MQ?](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.html) 
+  [Escalado basado en Amazon SQS](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-using-sqs-queue.html) 
+  [¿Qué es AWS Step Functions?](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 
+  [¿Qué es AWS Lambda?](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 
+  [Uso de AWS Lambda con Amazon SQS](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html) 
+  [¿Qué es Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 

 **Vídeos relacionados:** 
+  [Creación de forma sostenible en AWS](https://www.youtube.com/watch?v=ARAitMSIxc8) 
+  [Migración a arquitecturas basadas en eventos](https://www.youtube.com/watch?v=h46IquqjF3E) 

# SUS03-BP02 Eliminar o refactorizar los componentes de cargas de trabajo con uso reducido o nulo
<a name="sus_sus_software_a3"></a>

 Supervise la actividad de la carga de trabajo para identificar posibles cambios en el uso de los componentes individuales a lo largo del tiempo. Elimine los componentes que ya no se usan ni se necesitan y refactorice aquellos con un uso reducido para limitar los recursos desperdiciados. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Bajo 

## Guía para la implementación
<a name="implementation-guidance"></a>
+  Analice la carga (con indicadores como el flujo de transacciones y las llamadas a la API) en los componentes funcionales para identificar los componentes que no se usan o que están infrautilizados. 
+  Retire los componentes que ya no sean necesarios. 
+  Refactorice los componentes infrautilizados. 
+  Consolide los componentes infrautilizados con otros recursos para mejorar la eficiencia de uso. 

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

 **Documentos relacionados:** 
+  [¿Qué es AWS X-Ray?](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [¿Qué es Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [Uso de ServiceLens para supervisar el estado de las aplicaciones](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ServiceLens.html) 
+  [Limpieza automatizada de imágenes no utilizadas en Amazon ECR](https://aws.amazon.com/blogs/compute/automated-cleanup-of-unused-images-in-amazon-ecr/) 

 **Vídeos relacionados:** 
+  [Creación de forma sostenible en AWS](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP03: Optimización de las áreas de código que consumen la mayor parte del tiempo o de los recursos
<a name="sus_sus_software_a4"></a>

 Supervise la actividad de la carga de trabajo para identificar los componentes de aplicaciones que consumen la mayor cantidad de recursos. Optimice el código que se ejecuta en estos componentes para minimizar el uso de los recursos y, a la vez, maximizar el rendimiento. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Bajo 

## Guía para la implementación
<a name="implementation-guidance"></a>
+  Supervise el rendimiento como función del uso de los recursos para identificar los componentes con requisitos elevados respecto a los recursos por unidad de trabajo como destino de la optimización. 
+  Use un generador de perfiles de código para identificar las áreas de código que emplean más tiempo o recursos como destino de la optimización. 
+  Reemplace los algoritmos por versiones más eficientes que generen el mismo resultado. 
+  Use la aceleración de hardware para mejorar la eficacia de los bloques de código con tiempos de ejecución prolongados. 
+  Use el sistema operativo y el lenguaje de programación más eficaces para la carga de trabajo. 
+  Elimine la ordenación y el formato que no sean necesarios. 
+  Use patrones de transferencia de datos que minimicen el uso de los recursos en función de la frecuencia con la que cambian los datos y cómo se consumen. Por ejemplo, inserte la información de cambio de estado en un cliente, en lugar de que tenga que consumir recursos para sondear y recibir mensajes de tipo «sin cambios» sin ningún valor. 

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

 **Documentos relacionados:** 
+  [¿Qué es Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [¿Qué es Amazon CodeGuru Profiler?](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html) 
+  [Instancias de FPGA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/fpga-getting-started.html) 
+  [SDK de AWS en Herramientas para crear en AWS](https://aws.amazon.com/tools/) 

 **Vídeos relacionados:** 
+  [Creación de forma sostenible en AWS](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP04 Optimizar el impacto en los dispositivos y equipos de los clientes
<a name="sus_sus_software_a5"></a>

 Analice los dispositivos y equipos que usan los clientes para consumir sus servicios, el ciclo de vida que se espera que tengan y el impacto económico y en la sostenibilidad que supondría reemplazar esos componentes. Implemente patrones de software y arquitecturas que reduzcan al mínimo la necesidad de que los clientes tengan que reemplazar los dispositivos y actualizar los equipos. Por ejemplo, implemente características nuevas que usen código compatible con versiones de sistemas operativos y hardware anteriores o administre el tamaño de las cargas para que no superen la capacidad de almacenamiento del dispositivo de destino. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Bajo 

## Guía para la implementación
<a name="implementation-guidance"></a>
+  Realice un inventario de los dispositivos que usan sus clientes. 
+  Pruebe a usar granjas de dispositivos administrados con conjuntos representativos de hardware para entender el impacto de sus cambios e itere el desarrollo a fin de maximizar los dispositivos admitidos. 
+  Tenga en cuenta la latencia y el ancho de banda de red al crear cargas e implemente capacidades que ayuden al funcionamiento óptimo de las aplicaciones en enlaces de alta latencia y ancho de banda bajo. 
+  Preprocese las cargas de datos para reducir los requisitos de procesamiento local y limitar los de transferencia de datos. 
+  Realice las actividades con un uso intensivo de los recursos informáticos (como la representación de imágenes) en el lado del servidor o use el streaming de aplicaciones para mejorar la experiencia del usuario en los dispositivos más antiguos. 
+  Segmente y pagine los resultados, sobre todo en las sesiones interactivas, para administrar las cargas y limitar los requisitos de almacenamiento local. 

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

 **Documentos relacionados:** 
+  [¿Qué es AWS Device Farm?](https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html) 
+  [Documentación de Amazon AppStream 2.0](https://docs.aws.amazon.com/appstream2/) 
+  [NICE DCV](https://docs.aws.amazon.com/dcv/) 
+  [Documentación de Amazon Elastic Transcoder](https://docs.aws.amazon.com/elastic-transcoder/) 

 **Vídeos relacionados:** 
+  [Building Sustainably on AWS (Creación de forma sostenible en AWS)](https://www.youtube.com/watch?v=ARAitMSIxc8) 

# SUS03-BP05: Uso de los patrones de software y las arquitecturas que mejor respaldan los patrones de almacenamiento y el acceso a los datos
<a name="sus_sus_software_a6"></a>

 Analice cómo se usan los datos en la carga de trabajo, cómo los consumen los usuarios, cómo se transfieren y cómo se almacenan. Seleccione las tecnologías adecuadas para minimizar los requisitos de almacenamiento y procesamiento de los datos. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada:** Bajo 

## Guía para la implementación
<a name="implementation-guidance"></a>
+  Analice sus patrones de almacenamiento y acceso a los datos. 
+  Almacene los archivos de datos en formatos de archivo eficaces, como Parquet, para evitar el procesamiento innecesario (por ejemplo, al ejecutar análisis) y para reducir el almacenamiento total aprovisionado. 
+  Use tecnologías que funcionen de forma nativa con datos comprimidos. 
+  Use el motor de base de datos que mejor admita su patrón de consulta dominante. 
+  Administre sus índices de base de datos para asegurarse de que los diseños de los índices admiten una ejecución eficaz de las consultas. 
+  Seleccione protocolos de red que reduzcan la cantidad de capacidad de red consumida. 

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

 **Documentos relacionados:** 
+  [Formatos de archivo de compatibilidad con la compresión de Athena](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html) 
+  [Uso de COPY con formatos de datos de columnas con Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/copy-usage_notes-copy-from-columnar.html) 
+  [Conversión del formato de registro de entrada en Firehose](https://docs.aws.amazon.com/firehose/latest/dev/record-format-conversion.html) 
+  [Opciones de formato para las entradas y salidas de ETL en AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html) 
+  [Mejora del rendimiento de las consultas en Amazon Athena con la conversión a formato de columnas](https://docs.aws.amazon.com/athena/latest/ug/convert-to-columnar.html) 
+  [Carga de archivos de datos comprimidos desde Amazon S3 con Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/t_loading-gzip-compressed-data-files-from-S3.html) 
+  [Supervisión de la carga de bases de datos con información sobre rendimiento en Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights.html) 
+  [Supervisión de la carga de bases de datos con Información sobre rendimiento en 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:** 
+  [Creación de forma sostenible en AWS](https://www.youtube.com/watch?v=ARAitMSIxc8) 