Eficacia del rendimiento
Imagine que se acaba de publicar un reportaje sobre uno de los recientes anuncios de productos de la organización. La publicidad adicional del reportaje sin duda va a atraer una gran cantidad de tráfico al sitio web. ¿Puede controlar el sitio web este aumento de tráfico, o la carga adicional va a hacer que se ralentice o no responda?
En esta unidad se examinan algunos de los principios básicos para garantizar un rendimiento sobresaliente de las aplicaciones mediante los principios de escalado y optimización que conforman el pilar de eficacia del rendimiento.
¿Qué es la eficacia del rendimiento?
La eficacia del rendimiento consiste en ajustar los recursos disponibles para una aplicación a la demanda que recibe. La eficacia del rendimiento incluye escalar los recursos, identificar y optimizar los posibles cuellos de botella, y optimizar el código de la aplicación para el máximo rendimiento.
Vamos a examinar algunos patrones y procedimientos que pueden mejorar la escalabilidad y el rendimiento de la aplicación.
Escalado vertical y horizontal
Los recursos de proceso pueden escalarse en dos direcciones:
El escalado vertical es la incorporación de más recursos a una sola instancia. También se denomina escalado elástico.

El escalado horizontal es la incorporación de más instancias. Esto también se denomina escalado horizontal.

El escalado vertical consiste en agregar más recursos, como CPU o memoria, a una sola instancia. Esta instancia puede ser una máquina virtual o un servicio PaaS.
La acción de agregar más capacidad a la instancia aumenta los recursos disponibles para la aplicación, pero tiene un límite. Las máquinas virtuales están limitadas a la capacidad del host en el que se ejecutan, y los propios hosts tienen limitaciones físicas. Al final, al escalar verticalmente una instancia, puede ejecutar dentro de estos límites. Ellos restringen la capacidad de agregar más recursos a la instancia.
El escalado horizontal consiste en agregar más instancias a un servicio. Pueden ser máquinas virtuales o servicios PaaS. En lugar de agregar más capacidad al aumentar la eficacia de una sola instancia, se agrega capacidad mediante el aumento del número total de instancias.
La ventaja del escalado horizontal es que se podría escalar horizontalmente para siempre si se tuvieran más máquinas para agregar a la arquitectura. El escalado horizontal requiere algún tipo de distribución de carga. Podría ser en forma de equilibrador de carga que distribuyera las solicitudes entre los servidores disponibles. O bien podría tratarse de un mecanismo de detección de servicios para identificar los servidores activos a los que enviar solicitudes.
En ambos tipos de escalado se pueden reducir los recursos, lo que agrega la optimización de costos a la imagen.
El escalado automático es el proceso de asignación dinámica de recursos para satisfacer los requisitos de rendimiento. A medida que aumenta el volumen de trabajo, una aplicación puede necesitar más recursos para mantener los niveles de rendimiento deseados y cumplir los Acuerdos de Nivel de Servicio (SLA). Cuando la demanda se reduce y ya no se necesitan recursos adicionales, se pueden desasignar para minimizar los costos.
El escalado automático aprovecha la elasticidad de los entornos hospedados en la nube y alivia la sobrecarga de administración. Reduce la necesidad de que un operador tenga que supervisar continuamente el rendimiento de un sistema y tomar decisiones sobre la incorporación o eliminación de recursos.
Optimización del rendimiento de red
Cuando se optimiza el rendimiento, se examinan el rendimiento de la red y el almacenamiento para garantizar que sus niveles estén dentro de los límites aceptables. Estos niveles de rendimiento pueden afectar al tiempo de respuesta de la aplicación. La selección de las tecnologías de redes y almacenamiento adecuadas para la arquitectura ayuda a garantizar que se proporcione la mejor experiencia a los clientes.
La incorporación de una capa de mensajería entre servicios puede ser beneficiosa para el rendimiento y la escalabilidad, ya que crea un búfer para que las solicitudes pueden continuar fluyendo sin errores si la aplicación receptora no puede mantener el ritmo. A medida que la aplicación administra las solicitudes, se van respondiendo en el orden en que se han recibido.
Optimización del rendimiento de almacenamiento
En muchas soluciones de gran escala, los datos se dividen en particiones independientes que se pueden administrar y a las que se puede acceder por separado. Debe elegir cuidadosamente la estrategia de partición para maximizar los beneficios y minimizar los efectos adversos. La creación de particiones puede ayudar a mejorar la escalabilidad, reducir la contención y optimizar el rendimiento.
Use el almacenamiento en caché en la arquitectura para ayudar a mejorar el rendimiento. El almacenamiento en caché es un mecanismo para almacenar datos o recursos que se usan con frecuencia (páginas web, imágenes) a fin de agilizar la recuperación. El almacenamiento en caché se puede usar en diferentes capas de la aplicación. Puede usar el almacenamiento en caché entre los servidores de la aplicación y una base de datos para reducir los tiempos de recuperación de datos.
También puede usar el almacenamiento en caché entre los usuarios y los servidores web si coloca el contenido estático más cerca de los usuarios y reduce el tiempo necesario para devolver páginas web a los usuarios. Esto tiene como efecto secundario la descarga de solicitudes de la base de datos o los servidores web, lo que aumenta el rendimiento de otras solicitudes.
Identificación de cuellos de botella de rendimiento en la aplicación
Las aplicaciones distribuidas y los servicios que se ejecutan en la nube son programas de software complejos que se componen de muchos elementos móviles. En un entorno de producción, es importante poder hacer un seguimiento de la forma en que los usuarios usan el sistema y del uso de recursos y, en general, supervisar el estado y el rendimiento del sistema. Puede usar esta información como ayuda de diagnóstico para detectar y corregir problemas. También puede usar la información para ayudar a detectar posibles problemas y a evitar que se produzcan.
La optimización del rendimiento incluye entender cómo rinden las propias aplicaciones. Errores, código con un mal rendimiento y cuellos de botella en sistemas dependientes pueden detectarse por medio de una herramienta de administración del rendimiento de las aplicaciones. A menudo, estos problemas pueden quedar ocultos o escondidos a los usuarios, desarrolladores y administradores, a pesar de tener un impacto adverso sobre el rendimiento general de la aplicación.
Busque en todas las capas de la aplicación, identifique los cuellos de botella de rendimiento y corríjalos. Estos cuellos de botella podrían ser una administración deficiente de la memoria de la aplicación, o incluso el proceso de agregar índices a la base de datos. Puede ser repetitivo solucionar un cuello de botella y luego detectar otro que había pasado desapercibido.
Con un enfoque riguroso de la supervisión del rendimiento, es posible determinar los tipos de patrones y procedimientos beneficiosos para la arquitectura.
Prueba de conocimientos
¿Necesita ayuda? Consulte nuestra guía de solución de problemas o notifique un problema para enviar comentarios específicos.