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 Cegid

Artículos Relacionados

liderazgo carismatico
¡Comparte este post!
Share
noviembre 20, 2024

En la era de la inteligencia artificial, el liderazgo carismático es clave para el éxito, impulsando la productividad y la rentabilidad. Frente a desafíos actuales, el carisma ofrece seguridad psicológica y fomenta la innovación, destacando por su autenticidad y su capacidad para crear conexiones emocionales que la tecnología no puede replicar.

tasa solidaridad
¡Comparte este post!
Share
noviembre 13, 2024

En enero de 2025, la Cotización Adicional de Solidaridad se implementará para asegurar la sostenibilidad del sistema de pensiones. Esta medida afectará a las retribuciones que superen la base máxima de cotización y requerirá que los departamentos de RR.HH. ajusten la gestión de nóminas y mejoren la comunicación con la Seguridad Social. Aunque supone un reto, también ofrece la oportunidad de modernizar procesos administrativos.

CIO
¡Comparte este post!
Share
noviembre 6, 2024

El CIO ha pasado de un rol técnico a uno de liderazgo estratégico, impulsando cambios en procesos y centrando su atención en las personas y la anticipación proactiva en un entorno tecnológico en constante evolución.