Continuando con la serie de post de arquitectura hoy les vengo a comentar la arquitectura de microkernel o también conocida como arquitectura de plug-in.
¿Qué es?
La arquitectura microkernel se basa en dos componentes básicos, un sistema core y sus módulos plugin.
El sistema core de nuestra aplicación, es en si el software base de nuestro sistema, que resuelve la problemática para la que fue hecho de la mínima manera posible.
Los modulos plugin son pequeños sistemas que se acoplan al core, dando la posibilidad de extender o mejorar la funcionalidad del mismo.
De esta manera se puede crear un producto sumamente extensible y flexible que se puede adecuar a cada necesidad en particular, pudiendo agregar o modificar el sistema core mediante los plugins que deseamos.
¿Dónde podemos utilizar esto?
Un ejemplo que utilizamos todos los días es, por ejemplo, un sistemas operativo.
Las funcionalidad central de un SO están manejadas por un sistema core llamado kernel, el cual se manipula mediante una consola sheel.
Esto está bien cundo sabemos de comandos, parámetros, etc. ¿Pero si soy un simple usuario que no tiene conocimiento de consolas? Para esto es que al kernel se le agrega un “plugin” de interface visual lo cual extiende la funcionalidad agregando una linda visual para que un usuario sin conocimientos de programación pueda utilizar el SO.
Este es un claro ejemplo de cómo funciona la arquitectura de microkernel y como a partir de un sistema core podemos extenderlo y crear un sistema mejor y acorde a la necesidad de cada cliente.
Responsabilidades
Sistema core
- Debe tener la lógica mínima del negocio y ser independiente de los plugins o especificaciones hacia algún cliente en especial
- Debe tener acceso a los recursos del sistema y proporcionárselos a los plugins que los requieran.
- Manejar las excepciones ante el fallo de algún plugin para que esto no afecte a todo el sistema.
- Limitar el acceso a los plugin según su necesidad por una cuestión de seguridad, de esta manera ante la falla de seguridad de un plugin no se vería afectado todo el sistema core.
Plug-in's
- Deben poseer las funcionalidades especificas que no se encuentran en el sistema core por ejemplo la lógica de negocio de un cliente en especial o una integración con un sistema externo, etc.
- Como norma generar siempre se busca la independencia de funcionamiento de otros plugin, esto para evitar problemas de dependencia y/o versiones.
Ventajas
- Extensible y personalizable según la necesidad.
- Los plugins al ser módulos pequeños son más fáciles de implementar y mantener.
Desventajas
- El mantenimiento puede resultar difícil para asegurar la compatibilidad con todos los plugins si realizamos cambios a nuestro sistema core.
- Si los plugins son dependientes de otros plugins esto puede causar una complejidad en el funcionamiento.
- El testeo de estos plugins también puede ser más complejo según las características y funcionamiento del mismo.
Esto fue todo por el momento, espero que les sirva y compartan así entre todos podemos colaborar y aprendamos juntos.
Hasta el próximo post.