El poder de la información

El-poder-de-la-informacionA la hora de desarrollar un sistema hay que tener en cuenta cómo recabar información que nos ayude a mejorar el rendimiento. Los sistemas en la nube han tomado buena nota de esto y nos ofrecen una serie de herramientas para poder monitorizar el rendimiento y el uso, para poder realizar estrategias de escalado (ampliar los recursos que dan soporte a nuestro sistema) o realizar cambios en la forma de acceder a los datos que nos permitan una mejora tangible en el rendimiento con el mínimo esfuerzo.

Reunir, analizar, interpretar y actuar sobre los datos nos permite identificar dónde existen problemas o necesidades de mejora. Esto nos permite hacer ajustes correctivos que mejoren de manera notable el rendimiento del sistema, dando una respuesta rápida a los usuarios.

Si lo enfocamos de una forma sencilla, es equivalente a cuando ordenamos una habitación. En una habitación desordenada tardaremos más en encontrar algo que buscamos, sobre todo si hace tiempo que no lo usamos y se ha quedado olvidado en algún rincón del fondo del armario. Pero si la habitación está ordenada, tardaremos menos en encontrar lo que buscamos, sobre todo porque normalmente hemos pensado un orden lógico basado en las cosas que tenemos en la habitación para ordenarlo y es este orden lógico el que nos permite pensar con rapidez donde puede estar lo que buscamos. Para ordenar seguramente hemos pensado qué cosas usamos con frecuencia para ponerlas lo más a mano posible y qué cosas no usamos que podamos almacenarlas en cajas con contenido similar para poder localizarlas de forma rápida el día que sea necesario. Por ejemplo, el libro que leemos por la noche estará encima de la mesilla, la caja con los repuestos de las bombillas en el armario con una etiqueta, el botiquín relativamente a mano por si ocurre una urgencia…

La información no deja de ser un conjunto de elementos que hay que colocar. Pero para colocarlos primero hay que conocer su importancia, su frecuencia de uso, su peso y tamaño, etc.

Recabar datos nos permite conocer esto mismo, cuanto se usa, que tamaño tiene, si es posible devolver la información con retraso o es necesaria en tiempo real…

Una vez conocemos las características de los datos podemos plantearnos cómo organizarlos. Con frecuencia recabar datos es una labor sencilla pero algo desorganizada. Cualquier sistema que tenga trazas de log y auditoría puede realizar esta explotación de datos y analizarlos para determinar su importancia. Una tarea sencilla que puede aportarnos mucho valor es añadir información en forma de etiquetas a las trazas. Estas “etiquetas” nos permitirán clasificar la información para poder estudiarla de forma cómoda. Veamos un ejemplo con dos trazas de error:

01/10/2015 09:24:12 Info Transacción Completada

Comparándola con la siguiente

01/10/2015 09:24:10 Info [Módulo:Clientes][Update][Inicio]

01/10/2015 09:24:10 Info [Módulo:Clientes][Core:DataStore][OP:Modify][Inicio]

01/10/2015 09:24:11 Info [Módulo:Clientes][Core:DataStore][OP:Modify][fin][tiempo: 900 ms]

01/10/2015 09:24:11 Info [Módulo:Clientes][Update][fin] [tiempo: 1100 ms]

Evidentemente, la segunda traza nos proporciona más información que la primera. Pero lo importante es que gracias al formato de bloques ‘[]’ podemos sacar estadísticas de uso del módulo de clientes, del módulo de almacén de datos, cuánto tarda de media, como mínimo y como máximo en hacer una operación de actualización en un cliente, etc. Con una simple búsqueda en las trazas podemos obtener mucha información, sin penalizar apenas el rendimiento de funcionamiento de nuestro sistema.

Según estas trazas podemos buscar por las siguientes etiquetas:

[Módulo:Clientes]  Cualquier operación en el módulo de clientes

[Módulo:Clientes][Update]  Operaciones de modificación en el módulo de clientes

[Core:DataStore]  Cualquier operación en el módulo de datos

[Core:DataStore][OP:Modify]  Operaciones de modificación en el módulo de datos

[OP:Modify] [Inicio]  Operaciones de modificación iniciadas

[OP:Modify] [fin]  Operaciones de modificación terminadas

[OP:Modify][fin][tiempo:  Tiempo de operaciones de modificación

[tiempo:  Tiempos de todos los módulos

Una vez hayamos recopilado y estructurado la información a analizar, podemos ver dónde están los módulos a mejorar y plantear algún tipo de estrategia. Una de las estrategias que podemos utilizar para mejorar el rendimiento es el almacenamiento en caché. Es el método que mejora el tiempo de respuesta con una relación esfuerzo/beneficio muy buena: con poco esfuerzo podemos obtener grandes beneficios en el rendimiento. La mayoría de las aplicaciones se desarrollan con poco o ningún uso de almacenamiento en caché. Por tanto, es útil tras hacer un análisis de datos añadir almacenamiento en caché, sobre todo para aquellos datos que sean consumidos constantemente por nuestro sistema. El análisis de datos en este caso nos ayudará a determinar el grado de actualización y vigencia de la caché y qué datos almacenar.

No olvidemos también que los datos nos permiten alimentar nuestros test con casos de prueba válidos que mejoren tanto el rendimiento como la eficacia de nuestros algoritmos. Por ejemplo, pensemos en un algoritmo capaz de separar una cadena en nombre, primer apellido y segundo apellido. Esto que podría ser algo sencillo se complica a la hora de pensar que existen personas con varios nombres y apellidos compuestos. Un punto de partida sería buscar varias personas con diferentes nombres y apellidos pero seguro que encontramos casos en los que nuestro algoritmo no es capaz de clasificar los datos correctamente. Si usamos las mismas entradas de los usuarios como casos de prueba podremos ir mejorando nuestro algoritmo hasta la perfección.

Descubre cómo SOGETI puede ayudarte con el desarrollo de proyectos de TI.

David RuizDavid Ruiz es Licenciado en Ingeniería informática, con más de 10 años de experiencia orientados al diseño, análisis y desarrollo de soluciones empresariales basadas en tecnologías Microsoft y a la supervisión de equipos de desarrollo, aplicando patrones, estándares y métricas de calidad. Desde 2012 ejerce como arquitecto de software dentro de la Unidad de Soluciones Microsoft de Sogeti España.

Autor: ITblogsogeti

Sogeti es una compañía tecnológica perteneciente al Grupo Capgemini y especialista en: Testing y Calidad de Software; Soluciones Microsoft y High Tech Consulting. En Sogeti entendemos la importancia de obtener el máximo valor empresarial de sus sistemas de IT, por ello somos líderes mundiales en Testing & QA.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s