Generalidades del performance
Día a día se escuchan en las
áreas de tecnología de las grandes empresas frases que asociamos con el
rendimiento de las aplicaciones, en algunos casos por ejemplo escuchamos que el
performance de cierta característica de nuestra aplicación es bueno o malo, de
igual manera relacionamos términos como "cuellos de botella" ,
"contención" y "throughput" con temas de rendimiento de
aplicaciones, sin embargo, cuando nos detenemos a pensar sobre lo que significa
el performance de aplicaciones solemos
no tener una idea clara sobre lo que realmente significa y esta será la
pregunta que nos ocupará durante la lectura de este capítulo.
¿Qué es el
performance de aplicaciones?
En primera instancia podemos
definir el performance desde el punto de vista del usuario como la capacidad
que tiene una aplicación de realizar las operaciones que le competen cumpliendo
a cabalidad con las expectativas de procesamiento de los usuarios. Teniendo en cuenta esta primera aproximación se
evidencia que el buen o mal rendimiento por parte de una aplicación será una
categorización subjetiva dependiendo de los requerimientos técnicos esperados
por parte de los usuarios, llevándonos a concluir que lo que para un usuario es
un rendimiento aceptable para un sitio web para otro puede no serlo,
normalmente la percepción del rendimiento está asociada al volumen de operaciones
y datos que dicho usuario opera y dicha percepción irá cambiando a medida que
los volúmenes de información y cálculos se van incrementando en el tiempo.
De lo anterior se puede intuir
que nuestras expectativas a la hora de diseñar y construir una aplicación
determinan en cierta medida el resultado que se obtendrá en términos de
desempeño, sin embargo, podemos observar que el hecho de que los volúmenes de
información manejados por dos aplicaciones distintas sean similares no quiere
decir que el rendimiento de ambas aplicaciones sea igual, aunque al usuario
pueda percibirlas por igual en producción, aún mas, que el performance de una
aplicación se perciba como bueno no implica que la manera en la que dicho
software realiza sus operaciones sea la óptima.
Teniendo en cuenta este segundo punto tendremos que buscar definir el
rendimiento de una manera más objetiva de modo tal que frente a dos
aplicaciones se pueda establecer cual cuenta con el mejor rendimiento.
Subjetividad
y objetividad de los datos
La manera más sensata de
conseguir una aproximación objetiva podría ser establecer métricas que se
encuentren directamente relacionadas con las expectativas de un único usuario
de referencia, por ejemplo, para un usuario gerente de un banco y para una
aplicación web de su intranet una buena métrica podría ser el número de
créditos que pueden ser ingresados al sistema durante una hora, para un usuario
en una planta de producción una buena métrica podría estar relacionada con el
número de piezas revisadas por minuto.
Estas métricas que se han definido podrían diferenciar claramente las características
de rendimiento entre dos aplicaciones de funcionalidades similares, sin embargo
para poder establecer un criterio de evaluación realmente objetivo que nos
permita determinar las características y límites de performance de las aplicaciones,
dicho criterio deberá abstraerse de las condiciones y las expectativas del
negocio, llevándonos a clasificar las métricas para la evaluación del desempeño
en dos categorías, la primera de ellas serían las métricas de negocio y las segunda
categoría estaría dada por las métricas de técnicas ambas relacionadas con el
performance.
Una combinación efectiva de ambos
tipos de métricas nos ayudarán a evaluar las condiciones de rendimiento de
manera objetiva sin alejarnos de los objetivos de negocio que perseguimos con
la implantación de nuestra solución en la organización.
Todo esto está muy bien, pero ¿Qué
tipo de métricas técnicas nos permiten evaluar el desempeño de nuestras
aplicaciones de manera objetiva? bueno, las métricas indicadas estarán
relacionadas con las operaciones (computacionalmente hablando) que realice la
aplicación en cuestión. Para una
aplicación web es muy probable que el número de solicitudes procesadas por
segundo sea una buena medida de cuanto es capaz de hacer dicha aplicación.
En términos generales podríamos
decir que el rendimiento general de una aplicación será mejor mientras más operaciones
por unidad de tiempo realice, sin embargo, aunque pareciera que esta métrica
únicamente dependiera de el número de operaciones procesadas por nuestro
software y del tiempo, la realidad es
que otros aspectos como el la cantidad de recursos que son consumidos por el
sistema pueden hacer que el número de operaciones por segundo disminuya
sustancialmente razón por la cual nos interesará establecer métricas
relacionadas con el consumo de recursos como memoria, cpu, red.
El performance de las aplicaciones
por tanto puede concebirse como el
conjunto de valores asociados con métricas claramente definidas que determinan
la capacidad de procesamiento del sistema computacional en cuestión así como su
calidad y el análisis de performance podría verse como el conjunto de las
técnicas y herramientas orientadas al estudio del mejoramiento de los valores
para cada una de dichas métricas.
Importancia del performance
Como se ha mencionado en el
capitulo anterior, el performance de las aplicaciones que construimos es una
parte importante dentro de los objetivos de negocio de una organización, temas
como la ejecución de las operaciones críticas de una empresa pueden estar
siendo afectadas por pérdidas en el
rendimiento de los sistemas de información utilizados para gestionar dichas
operaciones y estos temas de negocio son en general los que deben motivarnos a
realizar planes para el mejoramiento del desempeño. La importancia de obtener aplicaciones con un
buen performance se visualiza de manera más evidente cuando se contemplan los
riesgos asociados, es decir, los problemas potenciales que pueden provocarse
por no tener en cuenta el desempeño de los sistemas construidos. A continuación se presentan algunos de los
riesgos que pueden generar este tipo de problemas.
Daños en las
relaciones con los clientes
La manera más obvia en la que nos
afecta un bajo desempeño del software está ligada con la disminución en la capacidad
que posee una organización para proveer sus productos o servicios a los
clientes, una disminución en los niveles de servicio, tiempos de entrega o
productos fabricados puede afectar la imagen de la organización de manera tal
que los consumidores asocien una empresa con un mal manejo de la actividad
comercial a la que se dedica, los daños en la imagen pueden tomar mucho tiempo
en repararse y comúnmente reparar las causas de los daños no mejora
inmediatamente la percepción de los consumidores. Para el caso específico del
software como producto, una aplicación que ha sido identificada como de bajo
rendimiento hará que los usuarios antiguos dejen de utilizarla y probablemente
desviará el mercado potencial hacia otras alternativas equivalentes, es decir, nuestra competencia.
Efectos en la
comunicación
En el mundo de las arquitecturas
empresariales de hoy, las aplicaciones suelen estar conectadas entre sí
ejecutando sus tareas de manera colaborativa y coordinada, de esta manera la
velocidad del sistema general puede comenzar a presentar una disminución en las
operaciones realizadas debido al bajo rendimiento de una de muchas aplicaciones
dentro del ecosistema. Este tipo de
situaciones, por lo general terminarán afectando los tiempos de respuesta de
algunos servicios de la organización y a todas sus dependencias, haciendo más difícil
el cálculo de la pérdida y multiplicando la misma.
Pérdidas de
dinero
Los problemas relacionados con la
capacidad en la operación de una organización no solamente afectan la imagen y
la confianza de nuestros consumidores en la calidad de los productos, en
ocasiones, los retrasos producidos en las entregas o transacciones en general
pueden desencadenar pérdidas significativas de dinero para las empresas ya sea
por el pago de multas, clausulas de incumplimiento, por reprocesamiento
innecesario de trámites o por términos pactados con anterioridad en las
contrataciones relacionados con los niveles de servicio. A veces, los ingresos de la organización puede
estar relacionado de manera directa con el volumen de información que es capaz
de procesar un sistema de información específico.
Perdida de la
competitividad
Sumado a los problemas anteriormente
descritos, es probable que se comience a tener problemas de velocidad respecto
a nuestros competidores y a la oferta de los productos o servicios en el
mercado.
Performance como estrategia de mercadeo
Cualquier producto o servicio que
se esté presente en el mercado es susceptible de tener competencia y como es
algo natural los productos y servicios relacionados con el software no son la
excepción. Aún cuando nuestros productos
sean lo suficientemente innovadores y novedosos como para que no exista competidor
alguno, la posibilidad de competencia siempre está presente cada vez que se
abre un nuevo nicho en el mercado y si queremos conservar nuestra ventaja
competitiva tendremos que mejorar permanentemente las características de dichos
productos de manera que satisfagan las necesidades de nuestros
consumidores. El rendimiento de nuestras
aplicaciones no está exento de esta problemática de manera tal que en ocasiones
las evaluaciones de desempeño nos proporcionan herramientas para presentar a
nuestros consumidores la eficiencia con la que nuestro software realiza las
operaciones esperadas.
Debemos tener en cuenta que los
usuarios de las aplicaciones persiguen un objetivo claro y es el de poder hacer
más en el menor tiempo posible y el hacer más estará directamente relacionado
con dos características principales del producto. En primera instancia tenemos la cantidad de
operaciones de negocio que podemos procesar, la cual se relaciona directamente
con el rendimiento de las aplicaciones, el segundo aspecto en el cual pueden
estar interesados nuestros clientes, está relacionado con la capacidad que
brinde nuestros sistemas para poder crecer el volumen de las operaciones a
medida que los negocios crecen, este aspecto claramente se relaciona con la
escalabilidad del sistema. En esta
sección se discutirán algunos temas sobre como exponer a nuestros usuarios las
ventajas de rendimiento y escalabilidad de nuestras aplicaciones.
Hablar un
mismo idioma
Cuando intentamos presentar la
eficiencia de nuestros productos, como ya hemos dicho anteriormente debemos
tener en cuenta que a los consumidores de nuestras aplicaciones no les interesa
saber cuántos bytes por segundo, accesos a bases de datos o transacciones pueden
realizar nuestros programas de computadora,
se debe tratar de expresar las características de performance en
términos de beneficios para la operación del negocio si realmente deseamos
diferenciarnos, por ejemplo, si nuestra aplicación web puede procesar un
promedio de 100 solicitudes por segundo podremos presentar esta información en
términos de el número de aprobaciones para créditos que se pueden realizar al
día en nuestro sistema de información, de esta manera tendrá más valor para el
usuario saber que en un día laboral podrá procesar 2'880.000 de créditos que
saber el número de consultas a la base de datos. De esta manera se debe hablar en el idioma
del negocio y no en términos técnicos que puedan confundir o ahuyentar a
quienes serán los usuarios del sistema ofertado.
Performance como
factor diferenciador
Algunas veces las empresas
productoras de software liberan distintas versiones de sus productos con el
objetivo de generar popularidad o recordación entre los usuarios potenciales,
de esta manera, encontramos versiones de evaluación y algunas con limitaciones
respecto a sus funcionalidades. Nuevamente
trabajar en el performance y en la escalabilidad de nuestras aplicaciones nos
dará herramientas para convencer y conectarnos con aquellos usuarios que han
estado atentos a las versiones limitadas y que están buscando poder obtener el
mayor rendimiento posible para su operación, es una forma de plantear que si
está contento con las limitantes, ¿podría imaginar lo que haría funcionando al
máximo de capacidad? Este concepto
utiliza el performance como un factor diferenciador entre lo que ofrecemos como
muestra y lo que ofrecemos como producto.
Algunas veces las diferencias están asociadas a limitaciones en el uso,
por ejemplo, un sistema cuya versión gratuita se distribuye con una limitante
en el número de usuarios que pueden operar en ella, atrayendo a usuarios con
mayores necesidades a utilizar la versión paga con un número de usuarios
indefinidos en producción.
No hay comentarios:
Publicar un comentario
Los comentarios son parte activa de este blog y no serán moderados. Siéntete cómodo al dar tu opinión. Esta es muy importante para nosotros.