ATRIBUTO DE CALIDAD: DESEMPEÑO
Introducción Desempeño: Rapidez con que el sistema realiza su actual carga de trabajo Escalabilidad: Se enfoca en la previsibilidad del desempeño del sistema a medida que la caga de trabajo aumenta
Preocupaciones Tiempo de Respuesta Grado de reacción: La rapidez del sistema en responder a la carga de trabajo de rutina, p.e. solicitudes interactivas de usuarios Segundos Ejemplo: Bajo una carga de 350 transacciones de actualización por minuto, el 98% de las transacciones debe retornar el control al usuario dentro de los siguientes 3 segundos siguientes al envío de la solicitud vía Web
Preocupaciones (2) Tiempo de Respuesta Tiempos de entrega: Tiempo tomado para completar tareas largas Minutos u horas Ejemplo: Debe ser posible sincronizar el sistema con todas las estaciones de monitoreo de la línea de producción y resetear la base de datos para reflejar el estado actual de dicha línea en no más de 5 minutos. Ninguna transacción de actualización será procesada durante dicho período de sincronización.
Preocupaciones (3) Rendimiento Cantidad de carga de trabajo que el sistema es capaz de manejar en un periodo de tiempo Entre más corto sea el procesamiento de una transacción, más alto es el rendimiento del sistema A medida que el la carga del sistema aumenta, el tiempo de respuesta de las transacciones individuales tiende a aumentar también Debido a esto es muy posible que las metas de rendimiento sean logradas sólo a expensas de las metas de tiempo de respuesta o viceversa
Preocupaciones (4) Previsibilidad Transacciones similares deben ser completadas en cantidades muy similares de tiempo, independientemente de cuando son ejecutadas A menudo es una cualidad más deseable que el rendimiento absoluto Ejemplo: Un sistema de servicio al cliente utilizado por agentes comerciales para obtener información de clientes que efectúan solicitudes telefónicamente, necesita ofrecer un tiempo predecible por transacción de 1 a 5 segundos
Aplicabilidad a Puntos de Vista Funcional El análisis de desempeño puede revelar la necesidad de cambios y compromisos para lograr una estructura funcional adecuada Los modelos de esta vista pueden proporcionar entradas para la construcción de modelos de desempeño
Aplicabilidad a Puntos de Vista (2) Información El análisis de desempeño puede identificar aspectos de la vista de información como obstáculos para el cumplimiento de requisitos de desempeño Este punto de vista permite: Identificar recursos compartidos y los requerimientos de transaccionalidad para cada uno de ellos Sugerir elementos de esta vista que pueden ser replicados o distribuidos
Aplicabilidad a Puntos de Vista (3) Concurrencia El análisis de desempeño puede: Identificar problemas como el uso excesivo de un recurso clave en un momento determinado Resultar en que la concurrencia se convierta en el elemento de diseño más importante Los elementos de esta vista (i.e. Mecanismos de comunicación entre componentes - Conectores) pueden proporcionar métricas de calibración para los modelos de desempeño
Aplicabilidad a Puntos de Vista (4) Despliegue El análisis de desempeño normalmente sugiere cambios y refinamientos en el ambiente de despliegue del sistema A su vez, muchas partes de los modelos de desempeño son derivados de los contenidos de esta vista, ya que proporcionan un número de métricas críticas de calibración
Actividades Tomado de [1]
Actividades (2) 1. Capturar los requerimientos de desempeño Especificar requisitos de tiempo de respuesta Especificar requisitos de rendimiento Especificar requisitos de escalabilidad 2. Crear modelos de desempeño Identificar la estructura crítica de desempeño Identificar las métricas claves de desempeño Estimar las métricas de desempeño
Actividades (3) 3. Analizar los modelos de desempeño Caracterizar la carga de trabajo: Priorizar y estimar el volumen de cada tipo de requisitos que el sistema debe manejar Estimar el desempeño 4. Ejecutar pruebas prácticas Medir las métricas de desempeño 5. Evaluar contra los requerimientos 6. Rehacer la arquitectura
Pensando acerca de Desempeño La meta de las tácticas de desempeño es generar una respuesta a un evento que llega al sistema dentro de alguna restricción de tiempo Dos aspectos básicos a tener en cuenta son: Consumo de recursos Tiempo de bloqueo de recursos Luego de que un evento llega, el sistema está procesando dicho evento o el procesamiento está bloqueado por alguna razón
Pensando acerca de Desempeño (2) Consumo de Recursos Unidad Central de Procesamiento (CPU) Unidades de almacenamiento de datos Ancho de banda Memoria Tiempo de Bloqueo Un cálculo puede ser bloqueado porque: El recurso está en uso El recurso no está disponible El cálculo depende del resultado de otros cálculos que no están disponibles aún
Ejemplo de Modelo de Desempeño Parameters: Arrival rate Scheduling algorithm Service time Topology Network bandwidth Routing algorithm Latencia (tiempo para ejecutar un evento) Puede sólo ser afectada por el cambio en uno de los parámetros
Administrando Desempeño Las decisiones de arquitectura deben controlar los parámetros de un modelo de desempeño: Arrival rate Restringir acceso a recursos Service time Incrementar la eficiencia computacional (algoritmos) Reducir la sobrecarga (reducir comunicación entre procesos, usar pools de threads, utilizar pool de conexiones a bases de datos, etc.) Utilizar procesadores rápidos Scheduling algorithm First-Come First Served (FCFS), priridades dinámicas, etc. Topology Adicionar/eliminar procesadores Network bandwidth Redes rápidas Routing algorithm Balanceo de carga
Architectural Tactics Performance tactic categories and their goals: Control Resource demand: Reduce or manage the demand for resources Manage Resources: Manage resources even though the demand for resources is not controllable Arbitrate Resources: Control contention for resources through scheduling
Architectural Tactics (2) Resource demand: Increase computational efficiency: Improving algorithms used in critical areas will have the effect of decreasing latency Reduce computational overhead: reducing the need for and use of resources, thereby reducing processing Manage event rate: Reducing the arrival rate of variables to which the system monitors or responds Control frequency of sampling: Queuing the arrival of events and sample at a lower frequency
Architectural Tactics (3) Resource management: Introduce concurrency: Processing requests in parallel thereby reducing blocked time Maintain multiple copies: Reducing the contention that would occur if all data were accessed at a single location or computations were performed on a single resource Increase available resources: using more and/or faster processors, more and/or faster memory, more and/or faster networks, and so forth
Architectural Tactics (4) Resource arbitration: Scheduling policy: Analyzing the usage characteristics of each resource and choose compatible scheduling strategies First in first out: Treats all requests as equals Fixed priorities: Assigns resources in fixed order of priority Dynamic priorities: Re-orders priorities (round robin) or schedule those resources with the earliest deadlines Static scheduling: Preemption and the sequence of priority assignments are determine offline (compile time)
Architectural Tactics (5)
Algunos problemas Metas imprecisas de desempeño Construcción de modelos poco realistas Partición de procesamiento inapropiado Supuestos inválidos con respecto al ambiente y la plataforma Poca importancia a la ubicación física de los recursos Contención relacionada con la concurrencia
Material preparado por Rafael Meneses
Referencias 1. Rozanski Nick, Woods Eoin. Presentation on Software Architecture with Viewpoints and Perspectives. BCS SPA Specialist Group, 6th July 2005 2. Len Bass et Al. Software Architecture in Practice. Second Edition, Addison Wesley, 2007 3. Len Bass, Paul Clements, Rick Kazman. Aspectos Avanzados en Arquitectura de Software. Universidad de los Andes, Curso de Verano 2010, Bogotá, Colombia