Veo en un artículo en Physor.com, a través de Microsiervos, una noticia (si se puede llamar así) que me ha llamado mucho la atención y que me suscita una reflexión.

La noticia parte de un estudio científico en el que se compara ni más ni menos, que las conexiones nerviosas (los procesos reguladores) de una bacteria (la E. Coli) con los del sistema operativo Unix. El resultado sería este:

A la izquierda podemos ver los de la bacteria, en forma de pirámide invertida. En la parte de arriba estarían los “genes maestro” que estarían relacionados con muchos más genes básicos en la parte de abajo.

Por contra, a la derecha, en el caso de Linux, se ve que en su línea media se relaciona con muchos menos “genes”, servicios o rutinas en este caso. La explicación a esto es que el desarrollo de aplicaciones informáticas se aboga por la reutilización de código ya existente por motivos de ahorro de tiempo y coste.

A la conclusión a la que se llega, a la vista de estos resultados, es que la estructura del Linux, y en general de todas las aplicaciones informáticas, es más vulnerable ya que tiene la mayor parte de los servicios o rutinas dependientes de un puñado de líneas de código (servicios de bajo nivel). Cualquier cambio en uno de estos servicios tan usados puede impactar puede tener consecuencias en cadena e impactar a toda la organización.

Yendo un poco más allá en la reflexión, nos podríamos preguntar ¿la reutilización de servicios es un peligro?

Si analizamos los pros y los contras creo que estamos de acuerdo en que las ventajas de la reutilización (ahorro de tiempo y coste) superan con creces a la de sus peligros (el impacto que puede tener una pequeña modificación un servicio de bajo nivel). Sin embargo, debería bastar esto para examinar con lupa la implementación de estos servicios y extremar las pruebas unitarias de los mismos, y también por supuesto, las pruebas de regresión para asegurarnos de que lo que hemos hecho funciona pero tampoco hemos roto nada de lo que ya funcionaba antes.

Hay que tener en cuenta además que si bien hay un pequeño número de servicios que son ejecutados millones de veces, esto nos dará por otra parte una gran seguridad de que funcionan correctamente.

Si trasladamos estas reflexiones al mundo SOA, está claro que la reutilización es uno de sus pilares, sin embargo tampoco es menos cierto que la gestión de estos servicios (al componerse de invocaciones a otros servicios de más bajo nivel) se complica enormemente. Al menos, deberíamos disponer de una herramienta que nos ofrezca un análisis de impacto detallado y poder saber a qué servicios estamos afectando si tocamos uno en concreto. Y, por supuesto, qué servicios o procesos desde el punto de vista del usuario, podríamos poner en peligro (por ejemplo, el servicio de consulta de saldo, el de reservar un avión o el de alta de un siniestro en una aseguradora).

Comparte este artículo…

Share

Anuncios