Nota: Traducido de la versión original en Inglés.
Durante los últimos meses, he estado investigando y experimentando con microservicios y aplicaciones Vaadin. Mi objetivo era probar la “compatibilidad” de Vaadin con algunas de las técnicas asociadas a microservicios. En resumen, Vaadin es tan compatible con microservicios como cualquier otro framework web basado en componentes. Además, muchos de los desafíos que enfrentarías al implementar microservicios con Vaadin los enfrentarías con cualquier framework de JavaScript/HTML.
Los microservicios traen ventajas como el desarrollo y despliegue independiente de servicios, pero vienen con un costo, principalmente, un aumento en la complejidad, estupéndamente explicado por Dave Kerr en su artículo The Death of Microservice Madness en 2018, una lectura altamente recomendada para todos aquellos que estén evaluando microservicios. Uno de los desafíos técnicos clave en microservicios relacionados con los frameworks web es cómo crear una interfaz de usuario “mash-up” que combine dos o más aplicaciones web.
Ignorando el hecho de que los microservicios adoptan cierta independencia tecnológica (es decir, los equipos pueden decidir qué tecnologías usar, incluyendo frameworks web), me interesaba cómo renderizar dos aplicaciones Vaadin desplegadas independientemente en una sola página en el navegador. Resultó, nuevamente, que los desafíos que enfrenté fueron casi los mismos que habría enfrentado con cualquier otro framework web, especialmente, lidiar con colisiones de CSS y JavaScript y la gestión de sesiones HTTP.
Pude desarrollar una aplicación usando Spring Boot con Spring Cloud para mostrar una página web con una interfaz CRUD a la izquierda y un feed de Twitter a la derecha, ambos desarrollados con Vaadin:
Ejecutar esta aplicación requiere iniciar al menos 7 procesos, 3 servicios de orquestación, 1 servicio de back-end y 3 aplicaciones web:
Puedes encontrar información detallada sobre mi experimento en esta serie de artículos:
- Introducción a los Microservicios
- Microservicios: Registro y Descubrimiento de Servicios
- Microservicios: Configuración Externalizada
- Microservicios: Consumo de servicios sin estado desde interfaces de usuario Vaadin
- Microservicios: Tolerancia a Fallos
- Microservicios: Composición de UI
- Microservicios: Alta Disponibilidad
- Microservicios: Monitoreo de Salud