El ciclo de vida de la información, su seguridad y el rendimiento

En el mundo de arquitectura muchas veces olvidamos un punto crucial para sistemas grandes, de alta transaccionalidad, gran operatividad y/o de alta transmisión de datos. Me refiero a la Arquitectura de la información.

Dentro del mundo de arquitectura de información podríamos incluir (aunque no limitarnos a) Big Data, Business Intelligence, Data Science, entre otras disciplinas, pero sin entrar de momento en una de ellas en específico, es un echo que la información cuenta con un ciclo de vida, el cual no necesariamente debe ser el mismo para cada negocio, por ejemplo, lista de enfermedades existentes, aunque la información sea la misma, su ciclo de vida dentro de un entorno de seguros no es el mismo que en un entorno de hospitales de especialidades o en un centro de investigación de enfermedades infecciosas.

Así que tomando lo anterior, el ciclo de vida de la información tiene muchas dimensiones, en función de la utilidad, tecnología, necesidad, tipo de aplicación, rendimiento, etcétera, podemos listar algunas de esas dimensiones como:

  • La presentación de una pantalla
  • Un reporte
  • Transito desde una aplicación a un tercero
  • Reposo (almacenamiento)
  • Reposo largo (respaldos o históricos)
  • Entre muchas otras.

¿Y cómo afecta esto en la seguridad y rendimiento?

Pues bien, en muchas ocasiones se nos hace trivial hacer un sistema sin tener en consideración este tema, y si el sistema es pequeño o interno, quizás ni siquiera se note mucho el déficit de análisis, sin embargo cuando la exposición del sistema es mayor o el número de usuarios se incrementa considerablemente, el no contemplar esto nos lleva a contar con temas como:

  • Fuga de información confidencial
  • Aumento de latencia en respuestas
  • Acceso a información no permitida por perfiles inadecuados
  • Degradación del servicio
  • Alto aumento de costos en infraestructura
  • Entre varios más.

Tratando de ejemplificar cada punto expongo la lista anterior sin ser exhaustivo en todas la problemáticas, pero sí las más comunes:

Fuga de información confidencial
Esto se puede presentar de muchas maneras, pero por ejemplo, re utilización de un servicio que brinda mucha información de algún proceso en un front-end que utiliza mucha menos información de la que se envía, esta información puede claramente ser extraída y referenciada para su mal uso.

Otro ejemplo sería el almacenamiento de la información en cookies o local storage para «agilizar pantallas», pero dicha información se almacena sin cifrado, sin tempo de expiración, sin control de acceso por otros sitios, etc.

Entre otras problemáticas de información que pueden presentarse.

Aumento de latencia en respuestas
En ocasiones pensamos que brindar toda la información de un solo llamado es lo más eficiente, sin embargo cuando no se analiza correctamente podemos estar saturando la red o la aplicación con mucha información que no se utiliza, o la utilización real es de un 10% de la información el 90% del tiempo, cuando el resto de la información no es necesaria mas que en un 10% de las ocasiones. Eso satura las comunicaciones, servidores, memoria y aumenta significativamente los costos.

Acceso a información no permitida por perfiles inadecuados
De forma similar a la fuga de información, utilizar servicios para distintos perfiles sin una correcta separación de datos puede llevar a que los sistemas entreguen información de más al front-end y dejar la responsabilidad de discriminar dicha información a la capa final, esto produce que cierta información sea accesible por personas inadecuadas.

Degradación del servicio
Cierta información no corresponde a los usuarios sino a otras entidades, como a la aplicación, a la sesión, un entrono específico o al perfil del usuario, pero al no contemplar esto muchos sistemas cargan toda la información a solicitud del usuario lo que provoca que exista multiplicidad de la misma información en memoria del servidor, carga innecesaria de procesamiento en los servidores back o bases de datos, saturaciones de memoria entre otras problemáticas. Estos problemas pueden aumentar conforme aumentan los usuarios y la carga de la aplicación, en muchos casos solventándolo con aumento de infraestructura cuando el problema real puede ser de análisis de información.


De aquí que tener un correcto análisis de información, junto con una buena definición de entidades, dependencias, diccionario de datos, niveles de acceso y determinación del ciclo de vida del dato, es crucial cuando queremos tener aplicaciones altamente escalables, de buen rendimiento y de fácil evolución.

Si es que no sabes si cuentas con alguno de estos problemas, si sabes que los tienes pero no sabes cómo resolverlos o si estás desarrollando y quieres reducir el riesgo de caer en los problemas mencionados, puedes contactarnos y con gusto te podemos ayudar.