

# Eficiencia del rendimiento
<a name="performance-efficiency"></a>

 El pilar de eficiencia del rendimiento incluye la capacidad de utilizar de forma eficaz los recursos de computación para satisfacer los requisitos del sistema, así como el mantenimiento de esta eficiencia a medida que la demanda cambia y las tecnologías evolucionan. 

 El pilar de eficiencia del rendimiento ofrece una visión general de principios de diseño, prácticas recomendadas y preguntas. Encontrará una guía prescriptiva de implementación en el [documento técnico Pilar de eficiencia del rendimiento](https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html?ref=wellarchitected-wp). 

**Topics**
+ [Principios de diseño](perf-dp.md)
+ [Definición](perf-def.md)
+ [Prácticas recomendadas](perf-bp.md)
+ [Recursos](perf-resources.md)

# Principios de diseño
<a name="perf-dp"></a>

 Existen cinco principios de diseño para la eficiencia del rendimiento en la nube: 
+  **Democratizar las tecnologías avanzadas**: facilite a su equipo la implementación de tecnologías avanzadas mediante la delegación de tareas complejas a su proveedor de servicios en la nube. En lugar de pedir a su equipo de TI que aprenda a alojar y ejecutar una tecnología nueva, considere la posibilidad de consumir la tecnología como un servicio. Por ejemplo, las bases de datos NoSQL, la transcodificación de medios y el machine learning son tecnologías que requieren conocimientos especializados. En la nube, estas tecnologías se convierten en servicios que su equipo puede consumir, lo que permite que se centre en el desarrollo de productos, y no en aprovisionar o administrar recursos. 
+  **Adoptar un enfoque global en cuestión de minutos**: el despliegue de su carga de trabajo en varias regiones de AWS del mundo le permite ofrecer una menor latencia y una mejor experiencia a sus clientes con un coste mínimo. 
+  **Usar arquitecturas sin servidor**: las arquitecturas sin servidor eliminan la necesidad de ejecutar y mantener servidores físicos para las actividades de computación tradicionales. Por ejemplo, los servicios de almacenamiento sin servidor pueden servir como sitios web estáticos, con lo que se elimina la necesidad de servidores web. Además, los servicios basados en eventos pueden alojar código. Esto elimina la carga operativa de administrar servidores físicos y puede reducir los costes de transacciones porque los servicios administrados operan a escala de la nube. 
+  **Experimentar con más frecuencia**: los recursos virtuales y automatizables permiten realizar pruebas comparativas con rapidez mediante diferentes tipos de instancias, almacenamiento y configuraciones. 
+  **Considerar la simpatía mecánica**: comprenda cómo se consumen los servicios en la nube y utilice siempre el enfoque tecnológico que se adapte a sus objetivos de carga de trabajo. Por ejemplo, piense en los patrones de acceso a datos al elegir los enfoques de base de datos o de almacenamiento. 

# Definición
<a name="perf-def"></a>

 Existen cinco áreas de prácticas recomendadas para la eficiencia del rendimiento en la nube: 
+  **Selección de la arquitectura** 
+  **Computación y hardware** 
+  **Administración de datos** 
+  **Redes y entrega de contenido** 
+  **Proceso y cultura** 

 Adopte un enfoque basado en datos para crear una arquitectura de alto rendimiento. Recopile datos sobre todos los aspectos de la arquitectura, desde el diseño de alto nivel hasta la selección y configuración de los tipos de recursos. 

 Revisar periódicamente sus opciones validará que aprovecha la continua evolución de la nube de AWS. Mediante la supervisión verifica que usted es consciente de cualquier desviación del rendimiento esperado. Haga compensaciones en su arquitectura para mejorar el rendimiento, tales como el uso de la compresión o el almacenamiento en caché, o bien la mitigación de los requisitos de coherencia. 

# Prácticas recomendadas
<a name="perf-bp"></a>

**Topics**
+ [Selección de la arquitectura](perf-arch.md)
+ [Computación y hardware](perf-compute.md)
+ [Administración de datos](perf-data.md)
+ [Redes y entrega de contenido](perf-networking.md)
+ [Proceso y cultura](perf-process.md)

# Selección de la arquitectura
<a name="perf-arch"></a>

 La solución óptima para una carga de trabajo concreta varía y las soluciones suelen combinar varios enfoques. Las cargas de trabajo Well-Architected utilizan varias soluciones y admiten diferentes características para mejorar el rendimiento. 

 Los recursos de AWS están disponibles en muchos tipos y configuraciones, lo que facilita encontrar un enfoque que se ajuste a sus necesidades. También puede encontrar opciones que no se logran fácilmente con una infraestructura en las instalaciones. Por ejemplo, un servicio administrado como Amazon DynamoDB ofrece una base de datos NoSQL completamente administrada con una latencia de milisegundos de un solo dígito a cualquier escala. 

 La siguiente pregunta se centra en estas consideraciones para mejorar la eficacia del rendimiento. (Para ver una lista de preguntas sobre la eficiencia del rendimiento y las prácticas recomendadas, consulte el [Appendix](a-performance-efficiency.md)). 


| PERF 1:  How do you select appropriate cloud resources and architecture patterns for your workload? | 
| --- | 
|  Often, multiple approaches are required for more effective performance across a workload. Well-Architected systems use multiple solutions and features to improve performance.  | 

# Computación y hardware
<a name="perf-compute"></a>

 La elección óptima de computación para una carga de trabajo concreta puede variar en función del diseño de la aplicación, los patrones de uso y los ajustes de configuración. Las arquitecturas pueden usar diferentes opciones de computación para varios componentes y admiten diferentes características para mejorar el rendimiento. Seleccionar la opción de computación incorrecta para una arquitectura puede disminuir la eficiencia del rendimiento. 

 En AWS, la computación está disponible de tres formas: instancias, contenedores y funciones. 
+  Las **instancias** son servidores virtualizados, lo que le permite cambiar sus funcionalidades con un botón o una llamada a la API. Como las decisiones sobre los recursos en la nube no son fijas, puede experimentar con diferentes tipos de servidores. En AWS, estas instancias de servidor virtual se presentan en diferentes familias y tamaños, y ofrecen una amplia variedad de capacidades, incluidas unidades de estado sólido (SSD) y unidades de procesamiento gráfico (GPU). 
+  Los **contenedores** son un método de virtualización del sistema operativo que le permite ejecutar una aplicación y sus dependencias en procesos aislados de recursos. AWS Fargate es un sistema de computación sin servidor para contenedores o puede utilizarse Amazon EC2 si necesita controlar la instalación, la configuración y la administración de su entorno de computación. También puede elegir entre varias plataformas de orquestación de contenedores: Amazon Elastic Container Service (ECS) o Amazon Elastic Kubernetes Service (EKS). 
+  Las **funciones** extraen el entorno de ejecución del código que desea aplicar. Por ejemplo, AWS Lambda permite ejecutar código sin ejecutar una instancia. 

 La siguiente pregunta se centra en estas consideraciones para mejorar la eficacia del rendimiento. 


| PERF 2:  How do you select and use compute resources in your workload? | 
| --- | 
| The more efficient compute solution for a workload varies based on application design, usage patterns, and configuration settings. Architectures can use different compute solutions for various components and turn on different features to improve performance. Selecting the wrong compute solution for an architecture can lead to lower performance efficiency. | 

# Administración de datos
<a name="perf-data"></a>

 La solución de administración de datos óptima para un sistema concreto varía según el tipo de datos (bloque, archivo u objeto), patrones de acceso (aleatorio o secuencial), rendimiento requerido, frecuencia de acceso (en línea, fuera de línea, archivo), frecuencia de actualización (WORM, dinámica) y restricciones de disponibilidad y durabilidad. Las cargas de trabajo Well-Architected utilizan almacenes de datos diseñados de manera específica que admiten diferentes características para mejorar el rendimiento. 

 En AWS, el almacenamiento está disponible en tres formas: objeto, bloque y archivo. 
+  El **almacenamiento de objetos** proporciona una plataforma escalable y duradera para que se pueda acceder a los datos desde cualquier lugar de Internet para el contenido generado por el usuario, el archivo activo, la computación sin servidor, el almacenamiento de macrodatos o la copia de seguridad y la recuperación. Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece una escalabilidad, una disponibilidad de datos, una seguridad y un rendimiento líderes en el sector. Amazon S3 se ha diseñado para ofrecer una durabilidad del 99,999999999 % (11 nueves) y almacena los datos de millones de aplicaciones de empresas de todo el mundo. 
+  El **almacenamiento en bloques** proporciona un almacenamiento de alta disponibilidad, coherente y de baja latencia para cada host virtual y es análogo al almacenamiento de conexión directa (DAS) o a una red de área de almacenamiento (SAN). Amazon Elastic Block Store (Amazon EBS) se ha diseñado para cargas de trabajo que requieren un almacenamiento persistente al que pueden acceder las instancias de EC2 y que le ayuda a optimizar las aplicaciones con la capacidad de almacenamiento, el rendimiento y el coste adecuados. 
+  El **almacenamiento de archivos** proporciona acceso a un sistema de archivos compartido en varios sistemas. Las soluciones de almacenamiento de archivos como Amazon Elastic File System (Amazon EFS) son ideales para casos de uso como grandes repositorios de contenido, entornos de desarrollo, almacenes de medios o directorios de inicio de usuario. Amazon FSx facilita y rentabiliza el lanzamiento y la ejecución de sistemas de archivos populares para poder aprovechar los completos conjuntos de características y el rápido rendimiento de los sistemas de archivos de código abierto y con licencia comercial más utilizados. 

 La siguiente pregunta se centra en estas consideraciones para mejorar la eficacia del rendimiento. 


| PERF 3:  How do you store, manage, and access data in your workload? | 
| --- | 
|  The more efficient storage solution for a system varies based on the kind of access operation (block, file, or object), patterns of access (random or sequential), required throughput, frequency of access (online, offline, archival), frequency of update (WORM, dynamic), and availability and durability constraints. Well-architected systems use multiple storage solutions and turn on different features to improve performance and use resources efficiently.  | 

# Redes y entrega de contenido
<a name="perf-networking"></a>

 La solución de redes óptima para una carga de trabajo varía según los requisitos de latencia, rendimiento, fluctuaciones y ancho de banda. Las limitaciones físicas, como los recursos de usuario o locales, determinan las opciones de ubicación. Estas limitaciones pueden compensarse con las ubicaciones periféricas o la ubicación de los recursos. 

 En AWS, las redes se virtualizan y están disponibles en diversos tipos y configuraciones. Esto facilita la adaptación de las redes a sus necesidades. AWS ofrece características de producto, como por ejemplo redes mejoradas, instancias optimizadas para redes de Amazon EC2, aceleración de la transferencia de Amazon S3 y Amazon CloudFront dinámico, con el fin de optimizar el tráfico de red. AWS también ofrece características de red, como enrutamiento de latencia de Amazon Route 53, puntos de conexión de Amazon VPC, AWS Direct Connect y AWS Global Accelerator, para reducir la distancia o las fluctuaciones de red. 

 La siguiente pregunta se centra en estas consideraciones para mejorar la eficacia del rendimiento. 


| PERF 4:  How do you select and configure networking resources in your workload? | 
| --- | 
|  This question includes guidance and best practices to design, configure, and operate efficient networking and content delivery solutions in the cloud.  | 

# Proceso y cultura
<a name="perf-process"></a>

 Al diseñar cargas de trabajo, hay principios y prácticas que puede adoptar para ayudarle a ejecutar mejor cargas de trabajo en la nube eficientes y de alto rendimiento. Para adoptar una cultura que fomente la eficiencia del rendimiento de las cargas de trabajo en la nube, tenga en cuenta estos principios y prácticas clave. 

 Tenga en cuenta estos principios clave para crear esta cultura: 
+  **Infraestructura como código:** defina su infraestructura como código al usar enfoques como las plantillas de AWS CloudFormation. El uso de plantillas le permite colocar su infraestructura en un control fuente junto con su código de aplicación y configuraciones. Esto le permite aplicar las mismas prácticas que utiliza para desarrollar software en su infraestructura con la finalidad de que pueda iterar rápidamente. 
+  **Canalización de despliegue:** utilice una canalización de integración continua o de despliegue continuo (CI/CD), como, por ejemplo, el repositorio del código fuente, los sistemas de diseño, el despliegue y la automatización de pruebas, para desplegar su infraestructura. Esto le permite desplegar de manera repetible, coherente y por un bajo coste mientras itera. 
+  **Métricas bien definidas:** configure y supervise las métricas para recoger indicadores clave de rendimiento (KPI). Recomendamos que utilice tanto métricas técnicas, como comerciales. Para aplicaciones móviles o sitios web, las métricas clave registran el tiempo para el primer byte o la renderización. Otras métricas que generalmente se aplican incluyen el recuento de subprocesos, la tasa de recolección de basura y los estados de espera. Las métricas comerciales, como el costo acumulado agregado por solicitud, puede alertarle sobre formas de reducir costos. Considere con cuidado cómo planifica interpretar las métricas. Por ejemplo, podría elegir el percentil máximo o el 99.º, en vez del promedio. 
+  **Prueba de rendimiento automática:** como parte de su proceso de despliegue, inicie automáticamente las pruebas de rendimiento después de que las pruebas de ejecución más rápida se hayan superado con éxito. La automatización debería crear un nuevo entorno, establecer condiciones iniciales como datos de prueba y luego ejecutar una serie de puntos de referencia y pruebas de carga. Los resultados de estas pruebas deberían estar vinculados al diseño, para que pueda seguir los cambios del rendimiento en el tiempo. Para las pruebas de larga ejecución, puede hacer que esta parte de la canalización sea asíncrona al resto del diseño. Alternativamente, podría ejecutar las pruebas de rendimiento durante la noche con instancias de spot de Amazon EC2. 
+  **Generación de cargas:** debe crear una serie de scripts de prueba que repliquen trayectos de usuario sintéticos o pregrabados. Estos scripts deben ser idempotentes y no acoplados, y podría necesitar incluir scripts de *precalentamiento* para obtener resultados válidos. En la medida de lo posible, sus scripts de prueba deben replicar el comportamiento de uso en la producción. Puede utilizar soluciones de software o de software como servicio (SaaS) para generar la carga. Considere usar soluciones de [AWS Marketplace](https://aws.amazon.com/marketplace/) e [instancias de spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html), que pueden ser formas rentables de generar la carga. 
+  **Visibilidad de rendimiento:** las métricas clave deben ser visibles para su equipo, especialmente las métricas para cada versión de diseño. Esto le permite ver cualquier tendencia significativa, sea positiva o negativa, con el paso del tiempo. También debería exponer métricas en la cantidad de errores o excepciones para garantizar que está poniendo a prueba un sistema de trabajo. 
+ **Visualización:** utilice técnicas de visualización que dejen claro dónde se presentan problemas de rendimiento, puntos críticos, estados de espera o un uso bajo. Superponga las métricas de rendimiento sobre los diagramas de arquitectura: los gráficos de llamadas o el código pueden ayudar a identificar problemas con mayor rapidez. 
+  **Proceso de revisión periódico:** el mal funcionamiento de las arquitecturas suele ser el resultado de un proceso de revisión del rendimiento inexistente o deficiente. Si su arquitectura tiene un bajo rendimiento, la implementación de un proceso de revisión del rendimiento le permitirá impulsar la mejora iterativa. 
+  **Optimización continua:** adopte una cultura que optimice continuamente la eficiencia del rendimiento de su carga de trabajo en la nube. 

 La siguiente pregunta se centra en estas consideraciones para mejorar la eficacia del rendimiento. 


| PERF 5:  What process do you use to support more performance efficiency for your workload?  | 
| --- | 
|  When architecting workloads, there are principles and practices that you can adopt to help you better run efficient high-performing cloud workloads. To adopt a culture that fosters performance efficiency of cloud workloads, consider these key principles and practices.  | 

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

 Consulte los siguientes recursos para obtener más información sobre nuestras prácticas recomendadas en la eficiencia del rendimiento. 

## Documentación
<a name="perf-doc"></a>
+  [Optimización del rendimiento de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/PerformanceOptimization.html?ref=wellarchitected-wp) 
+  [Rendimiento del volumen en Amazon EBS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSPerformance.html?ref=wellarchitected-wp) 

## Documento técnico
<a name="perf-wp"></a>
+  [Pilar de eficiencia del rendimiento](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 (CMP211-R2)](https://www.youtube.com/watch?v=kMMybKqC2Y0&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: Storage state of the union (STG201-L)](https://www.youtube.com/watch?v=39vAsGi6eEI&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Leadership session: AWS purpose-built databases (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28&ref=wellarchitected-wp) 
+  [AWS re:Invent 2019: Connectivity to AWS and hybrid AWS network architectures (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 (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 (ARC211-R)](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected-wp) 