Multitenancy al desnudo II: Configuración y mantenimiento

Share on facebook
Share on linkedin
Share on twitter

Cuando lo simple se vuelve complejo

Durante los quince años que llevo desarrollando tecnologías multitenancy, me he encontrado en muchas situaciones en las que desarrollar nuevas funcionalidades se volvía complicado debido a la dependencia de tecnologías externas que carecían de un diseño multitenencia. He aquí un ejemplo de esto cuando hace algunos años traté de extender una librería de Java para añadir tecnología multitenancy:

 [Extender una librería hace alusión a aquello que apelas cuando estás programando y necesitas algo preprogramado, sito en una librería, que no tienes que programar a mano].

Aislando las colisiones entre las instancias de varios clientes

Java es un poderoso lenguaje de programación dotado de un rico repositorio de librería y con gran un soporte para internet. Aún así, cuando tratas de usar Java en un entorno multitenancy te encuentras en seguida con algunas dificultades importantes. Una de ellas es que la manera en que Java ejecuta las instancias (ver definición abajo): Si un cliente del entorno multitenancy instancia un objeto «A», este puede a entrar en conflicto con cualquier otro objeto de la clase «A» instanciado por otro cliente, pues Java no distingue de quién es cada cual. Un buen entorno multitenancy debe poder aislar esas posibles colisiones de manera que cualquier objeto definido o usado por un cliente (ya sea Java o no) nunca entre en conflicto con el de ningún otro cliente. Para ello tuvimos que mejorar la forma en la que la librería de Java carga las clases, para que pudiese soportar muchas clases cargadas al mismo tiempo, e incluso diferentes versiones de la misma clase. Fue un trabajo duro pero el resultado fue muy beneficioso para dar soporte a otra funcionalidad basada en la tecnología Java. Desde la perspectiva del usuario final todo parece muy sencillo, y permite implementar muchas otras tecnologías basadas en esta capacidad mejorada del Java. La complejidad es absorbida por la tecnología multitenancy, trabajando por detrás para simplificar el desempeño del usuario final.

Gestionando la complejidad a través de la herencia de los objetos

Para entender esta complejidad imaginémonos un proceso global implementado usando un objeto al que llamamos «Objeto-Padre» (ver definición abajo). Podemos hacer que otro objeto herede algunas de sus características, pero siendo diferente, llamémoslo «Objeto-Hijo». La  tecnología multitenancy trasladará para todo cliente cualquier instancia del «Objeto-Padre» al «Objeto-Hijo», y de esta manera el programador no tendrá que escribir ni una línea de código para reemplazar y usar el nuevo comportamiento: se trata de una simple configuración.

Herencia en este contexto, significa que si no cambias el «Objeto-Hijo», u objeto heredado, éste se comportará exactamente como el «Objeto-Padre». Y si cambias una pequeña parte de tu nuevo «Objeto-Hijo», esa pequeña parte será exclusiva del hijo, pero el resto seguirán siendo como las del padre. Esto significa que cualquier cambio aplicado en el ciclo de mantenimiento normal será aplicado a tu objeto heredado de manera transparente. Sin errores manuales o de fusión, etc. Además, hay que tener en cuenta que puedes tener más de un nivel de herencia. Este mecanismo ahorra tiempo y dinero manteniendo la estabilidad de la plataforma.

Este concepto también se puede aplicar a otros elementos de la arquitectura como los datos o la seguridad.

Fácil configuración y mantenimiento

Ahora supongamos que nos gustaría reemplazar al «Objeto-Padre» por el «Objeto-Hijo» sólo para algunos de nuestros clientes, pero que hay otros cientos de procesos usados por estos clientes que dependen del «Objeto-Padre». En teoría deberíamos cambiar todos los objetos uno por uno, pero una tecnología de primera clase como esta debería hacerlo con un simple mecanismo y ser capaz de deshacerlo si es necesario.

En un entorno multitenancy los clientes usan procesos para completar tareas. En nuestro caso nosotros mapeamos un proceso a un «objeto». Esto tiene muchas ventajas: Los objetos, desde un punto de vista de programación, añaden muchas propiedades que vienen muy bien en un entorno multitenancy. El mantenimiento es uno: si usas un proceso u objeto estándar en la plataforma multitenancy, sabes que cualquier actualización desde este origen estará automáticamente disponible para ti. Pero… ¿qué pasa si tienes que «tunear» un poco este proceso de acuerdo a un requerimiento específico en tu compañía? Podrías, por supuesto, copiar y pegar el objeto y sobrescribirlo. Pero el problema es obvio: estarías sólo para mantenerlo. De todas maneras, como se trata de un objeto, puedes heredarlo desde el original.

Como he dicho, la adopción de la tecnología multitenacy junto con esta orientación a objetos de la que hablamos, ahorran mucho tiempo y dinero.

En el siguiente artículo hablaremos de todo esto desde la perspectiva de un sistema de RR.HH. y su impacto directo en términos de coste y esfuerzo.

GLOSARIO:

Multitenancy: Un sistema compartido entre varios clientes, pero que funciona de manera flexible y opera como si fuera exclusivo de uno solo. (Wikipedia)

Java: Es un lenguaje de programación de propósito general, concurrente, basado en clases, y orientado a objetos, que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. (Wikipedia)

Objetos: Los objetos son entidades que tienen un determinado estado, comportamiento (método) e identidad. (Technopedia)

Objeto Padre: El objeto en el cual reside otro objeto. Por ejemplo, una carpeta es el objeto padre en el que reside un archivo, o un «Objeto Hijo».

Objeto Hijo: Un objeto que reside en un «Objeto Padre», y del que hereda algunas de sus características.

Clases: Definición de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas. (Java.about.com)

Instancia: Una instancia de un programa es una copia de una versión ejecutable del programa que ha sido escrito en la memoria del computador. (Wikipedia)

<Multitenancy al desnudo III: Como contribuye esta tecnolgía a la gestión de los RR.HH. de tu empresa>> 

Share on facebook
Share on linkedin
Share on twitter
Share on facebook
Share on linkedin
Share on twitter

ESCRITO POR

Experto Meta4

Artículos Relacionados

¡Comparte este post!
Share
noviembre 30, 2021

Descubre en este post nuestra selección de algunos de los mejores artículos relacionados con el mundo de los Recursos Humanos del mes de noviembre.

¡Comparte este post!
Share
noviembre 25, 2021

Muchos años de experiencia en la formación de directivos, en varios países y en numerosas industrias, me dejan unas sensaciones encontradas. Por una parte, reconozco con satisfacción el esfuerzo de tantos colegas que han contribuido a la capacitación de miles de personas llamadas a ocupar posiciones de responsabilidad en sus organizaciones.

¡Comparte este post!
Share
noviembre 23, 2021

Sin duda alguna, la agilidad es un imperativo de nuestra época. Como dice Gary Hamel, “lo que ha cambiado es el cambio”,  adquiriendo una velocidad desconcertante y poniendo a prueba a las organizaciones y los ecosistemas completos