El rendimiento —o performance en inglés— es un atributo de la calidad de una arquitectura de software que define la capacidad de un sistema, producto o componente para cumplir con sus funciones dentro de los límites de tiempo aceptables1.
Las operaciones en las computadoras llevan tiempo. Los cálculos en el procesador llevan tiempo del orden de miles de nanosegundos, el acceso al disco —ya sea de estado sólido o mecánico— lleva tiempo del orden de decenas de milisegundos, y el acceso a la red lleva tiempo que va desde cientos de microsegundos dentro del mismo centro de datos hasta más de 100 milisegundos para mensajes a centros de cómputo en la nube.
El modelo de calidad de la norma ISO/IEC 250102 no define un atributo de calidad para el rendimiento con la definición que aquí se usa, sino para eficiencia de desempeño, que a su vez incluye una sub-característica comportamiento temporal que es más cercana a lo que aquí llamamos rendimiento. La eficiencia del desempeño incluye además de las cuestiones relacionadas con el tiempo, otras relacionadas con el consumo de recursos y la capacidad de éstos, en las sub-características utilización de recursos y capacidad respectivamente.
En el Azure Well-Architected Framework[^3] el pilar es rendimiento eficiente o performance efficiency en inglés, que al igual que 2 incluye aspectos de comportamiento temporal pero también de utilización de recursos y capacidad.
-
Tiempo de respuesta: el tiempo que tarda el sistema, producto o componente en responder a una solicitud desde el momento en que se inicia la acción hasta que se recibe una respuesta.
-
Throughput: la cantidad de trabajo que un sistema, producto o componente puede realizar en un período de tiempo dado, por ejemplo, el número de transacciones por segundo realizadas por un servicio, solicitudes por segundo procesadas por un servidor, bytes por segundo transmitidos por un canal, etc.
-
Utilización de recursos: la cantidad de recursos de procesador, memoria, disco, red, etc. que se utilizan para realizar tareas específicas; usualmente se expresan como un porcentaje del total disponible de ese recurso.
-
Capacidad de escalabilidad: la capacidad del sistema, producto o componente para mantener su rendimiento a medida que se incrementa la carga de trabajo o el número de usuarios.
-
Latencia: el tiempo de espera para comenzar el procesamiento de una solicitud; es parte del tiempo de respuesta y excluye el tiempo de procesamiento de la solicitud.
En cualquier momento durante el período posterior a la llegada de una solicitud, pero antes de que se complete la respuesta del sistema, el sistema está trabajando para responder a esa solicitud o el procesamiento está bloqueado por alguna razón. Esto da lugar a los dos factores básicos que contribuyen al tiempo de respuesta y al uso de recursos: el tiempo de procesamiento —cuando el sistema está trabajando para responder y consumiendo recursos de forma activa— y el tiempo de bloqueo —cuando el sistema no puede responder—.
- Tiempo de procesamiento y uso de los recursos
- Tiempo de bloqueo y contención de recursos
- Contención de los recursos
- Disponibilidad de recursos
- Dependencia de otras operaciones
Vean más detalles sobre estas las tácticas para el rendimiento aquí.
Tácticas de rendimiento | Controlar la demanda de recursos |
Gestionar los pedidos de trabajo: |
Limitar la respuesta a eventos | ||
Priorizar los eventos | ||
Reducir la sobrecarga computacional
|
||
Limitar los tiempos de ejecución | ||
Incrementar la eficiencia en el uso de recursos | ||
Gestionar los recursos | Aumentar los recursos | |
Introducir concurrencia | ||
Mantener múltiples copias de los cálculos | ||
Mantener múltiples copias de los datos | ||
Limitar los tamaños de las colas | ||
Calendarizar recursos |
Vean Cloud design patterns that support performance efficiency en Azure Well Architected Framework.