Newsletter Glocalthinking

Subscribe to Email Updates

Featured Post

Recent Posts

Multitenancy al desnudo II: Configuración y mantenimiento

multitenancy-meta4 (1)-1

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>> 

Edu Fernandes

Eduardo Fernandes recibió su Ph.D en Ciencias Físicas en la EuropeanSpace Agency (ESA) / Universidad Complutense de Madrid (1995). Actualmente es Jefe Tecnológico de Producto en Meta4. En esta posición es responsable de la definición de las líneas estratégicas de la base tecnológica de los productos de Meta4, como las soluciones KnowNet y PeopleNet. Su principal función es analizar el mercado en búsqueda de nuevas corrientes tecnológicas estudiando la posibilidad de integrarlas con el producto global. Anteriormente a su etapa en Meta4 fue responsable del departamento de software del Centro Científico Operativo del Minisat-01 (ESA), el primer satélite español. Mientras realizaba sus estudios de postgrado, el Dr. Fernandes se encargó de la construcción tanto de software como de hardware para la automatización del mayor telescopio brasileño (1992). Eduardo está certificado como personal investigador por la Agencia de Acreditación en Investigación, Desarrollo e Innovación Tecnológica (AIDIT).

Eduardo Fernandes received his PhD in Physics from the European Space Agency (ESA) / Complutense University of Madrid (1995). Currently the Head of Product Technology at Meta4, he is responsible for defining the strategic lines of the technology-based Meta4 products like the PeopleNet and KnowNet solutions. His main role is to analyze the market in search of new technology trends, studying these to see how to integrate these with the global product. Prior to Meta4 he was Head of the Software Department at the Scientific Operations Center for Minisat-01 (ESA), the first Spanish satellite. While undertaking his PhD studies, Dr. Fernandes was also responsible for building both the software and hardware for automating Brazil's largest telescope (1992). Eduardo is a certified professional researcher through the Spanish Accreditation Agency for Technology Research, Development and Innovation (AIDIT).

Tus comentarios:

BUSCAR EN EL BLOG