

# 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 de 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 [Apéndice](a-performance-efficiency.md).). 


| PERF 1: ¿Cómo selecciona los recursos y los patrones de arquitectura en la nube adecuados para su carga de trabajo? | 
| --- | 
|  A menudo, se requieren varios enfoques para obtener un rendimiento más eficaz en una carga de trabajo. Los sistemas Well-Architected utilizan varias soluciones y características para mejorar el rendimiento.  | 

# 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. No seleccionar la opción de computación correcta 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 que hacen posible cambiar sus capacidades 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 de sistemas operativos que permite ejecutar una aplicación y sus dependencias en procesos aislados de recursos. AWS Fargate es computación sin servidor para contenedores o puede utilizar 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: ¿Cómo selecciona y utiliza los recursos de computación en su carga de trabajo? | 
| --- | 
| La solución de computación más eficaz para cada carga de trabajo depende del diseño de las aplicaciones, de los patrones de uso y de las opciones de configuración. Las arquitecturas pueden usar diferentes soluciones de computación para varios componentes y activar diferentes características que mejoren el rendimiento. Seleccionar las soluciones de computación incorrectas para una arquitectura puede disminuir la eficiencia del rendimiento. | 

# 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 de Well-Architected utilizan almacenes de datos diseñados específicamente 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 que permite acceder a los datos desde cualquier ubicación de Internet para el contenido generado por los usuarios, el archivado activo, la computación sin servidor, el almacenamiento de macrodatos o las copias de seguridad y recuperación. Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos que ofrece escalabilidad, disponibilidad de datos, seguridad y rendimiento líderes del sector. Amazon S3 se creó desde cero para ofrecer un 99,999999999 % (11 nueves) de durabilidad y almacena datos de millones de aplicaciones para empresas de todo el mundo. 
+  El **almacenamiento en bloques** proporciona un almacenamiento en bloques de alta disponibilidad, uniforme y de baja latencia para cada host virtual y es análogo al almacenamiento con 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 lo ayuda a optimizar las aplicaciones con la capacidad de almacenamiento, el rendimiento y el costo 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 perfectas para los casos de uso como grandes repositorios de contenido, entornos de desarrollo, almacenes de medios o directorios domésticos de usuario. Amazon FSx es eficiente y rentabiliza el lanzamiento y la ejecución de sistemas de archivos populares para que pueda aprovechar los conjuntos de características completos 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: ¿Cómo almacena y administra los datos de su carga de trabajo y cómo accede a ellos? | 
| --- | 
|  La solución de almacenamiento más eficiente para un sistema varía según el tipo de operación de acceso (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. Los sistemas Well-Architected utilizan varias soluciones de almacenamiento y activan diferentes características para mejorar el rendimiento y utilizar los recursos de manera eficiente.  | 

# 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 en las instalaciones, 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: ¿Cómo selecciona y configura los recursos de red en su carga de trabajo? | 
| --- | 
|  Esta parte incluye la guía y las prácticas recomendadas para diseñar, configurar y operar soluciones de redes y entrega de contenido eficientes en la nube.  | 

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

 Al diseñar cargas de trabajo, hay principios y prácticas que puede adoptar con el fin de 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 implementación:** utilice una canalización de integración continua/implementación continua (CI/CD), (por ejemplo, el repositorio del código fuente, los sistemas de diseño, la implementación y la automatización de pruebas) para implementar su infraestructura. Esto le permite implementar de manera repetible, coherente y por un bajo costo mientras itera. 
+  **Métricas bien definidas:** configure y supervise métricas para capturar 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 recopilación de elementos no utilizados 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 implementación, lance automáticamente las pruebas de rendimiento después de que las pruebas de ejecución más rápida se hayan aprobado 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:** debería crear una serie de scripts de prueba que repliquen trayectos de usuario sintéticos o pregrabados. Estos scripts deben ser idempotentes y no acoplados; podría necesitar incluir scripts de *precalentamiento* para rendir resultados válidos. En la medida de lo posible, sus scripts de prueba deben replicar el comportamiento de uso en producción. Puede utilizar soluciones de software o de software como servicio (SaaS) para generar la carga. Considere la posibilidad de utilizar 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), ya que pueden ser formas rentables de generar 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: ¿Qué proceso utiliza para lograr una mayor eficiencia en el rendimiento de su carga de trabajo?  | 
| --- | 
|  Al diseñar cargas de trabajo, hay principios y prácticas que puede adoptar con el fin de 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.  | 