Eficiencia del rendimiento

Completado

Imagine que se publica un reportaje sobre uno de los recientes anuncios de productos de la organización. La publicidad adicional del reportaje supone una gran afluencia de tráfico a su sitio web. ¿Puede su sitio web controlar este aumento del tráfico? ¿Puede su sitio asumir la carga adicional sin que se vuelva lento o deje de responder?

En esta unidad, veremos algunos de los principios básicos de garantizar un rendimiento excepcional de la aplicación. Especialmente, los principios de escalado y optimización que componen el pilar de eficiencia 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 conoce como escalado vertical.

    An illustration that shows scaling up by adding resources to a virtual machine.

  • El escalado horizontal es la incorporación de más instancias. También se conoce como escalado horizontal.

    An illustration that shows scaling out by adding instances to increase performance.

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. Por ejemplo, un equilibrador de carga que distribuya las solicitudes entre los servidores disponibles, o 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 reducir 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 examina el rendimiento de la red y el almacenamiento para asegurarse de que sus niveles están dentro de 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 la mejor experiencia para 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 procesa las solicitudes, se van respondiendo en el orden en que se recibieron.

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 colocando el contenido estático más cerca de los usuarios. Este tipo de almacenamiento en caché reduce el tiempo necesario para devolver páginas web a los usuarios. También tiene como efecto secundario la descarga de solicitudes de los servidores web o de la base de datos, 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 realizar un seguimiento de la forma en que los usuarios usan el sistema. También es importante hacer un seguimiento de la utilización de los recursos y, en general, controlar 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 la comprensión del rendimiento de 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. Es habitual que estos problemas estén ocultos o resulten confusos para los usuarios finales, los desarrolladores y los administradores, pero pueden tener un efecto negativo en 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 exhaustivo de la supervisión del rendimiento, podrá determinar los tipos de patrones y prácticas de los que puede beneficiarse su arquitectura.

Comprobación de conocimientos

1.

¿Cuál de los siguientes constituye un ejemplo de escalado vertical?

2.

¿Cuál de los siguientes constituye un ejemplo de escalado horizontal?