¿Cuál es la mejor estrategia para crear IU en una arquitectura de microservicios?

Creo que estás aludiendo a lo siguiente:

Utilizando el patrón de la puerta de enlace de la API , donde tiene sus microservicios detrás de una puerta de enlace, y su interfaz de usuario en la parte superior. Luego, su interfaz de usuario utiliza la puerta de enlace como API base, por así decirlo. Su aplicación móvil también utiliza la API. En este caso, la interfaz de usuario web (y la api) tienden a ser monolíticas.

Usando el patrón Compositon de UI , donde cada microservicio genera sus propios elementos de UI, y se combinan en el lado del cliente (o por otro monolito en el lado del servidor). Creo que esto suena más fácil de lo que es, debido a las realidades en el terreno. Y aunque mantiene el desacoplamiento del servicio y las pruebas individuales, tiende a crear un acoplamiento táctico para mantener el UX en la salida de cada servicio. Además, dado que cada equipo ofrece su propia UI / scripts (aunque con suerte comparten un estilo), las operaciones de elementos cruzados unen sus microservicios en una especie de monolito.

En mi opinión, creo que depende de sus necesidades y de su organización empresarial. Si tienes un sitio web como ebay, donde todo lo que es es un contenedor y algunos listados de productos, es probable que sea bastante fácil de usar el patrón # 2. Puede hacer que un conjunto de microservicios genere el contenedor y otro conjunto de servicios alimenta los resultados del producto. Sin embargo, si necesita un UX rico y bien controlado, es posible que no tenga tanto éxito con los entregables de varios equipos. Así que creo que debería elegir lo que hace que sea más fácil cumplir con sus compromisos para sus necesidades particulares.

Estos son algunos puntos de mi experiencia en el último año y medio. No es una pregunta fácil de responder y parece ser una de esas cosas que siempre deben resolverse después de que los grandes arquitectos del mundo consideren los microservicios como lo mejor de todos.

Las respuestas variarán según la complejidad de la aplicación y lo que hace la aplicación, pero estas son lecciones que he aprendido.

  • La interfaz de usuario debe tratarse como una aplicación de cliente. No acoples UI a microservicios ni intentes servir bits de tu aplicación desde cada uno de los microservicios. Estas cosas tienen diferentes preocupaciones. ¿Qué pasa cuando sus microservicios necesitan compatibilidad con las aplicaciones 2, 3 y 3 en las 5 plataformas?
  • El servicio perimetral / la API de puerta de enlace debe considerarse para la eficiencia Limite a la agregación y la búsqueda para servir un flujo de UX específico.
  • La lógica en la interfaz de usuario debe ser principalmente la lógica de visualización y evitar la lógica empresarial a toda costa. Piense en ello como un jugador para los datos.
  • Los equipos de MS deben publicar documentos y versiones de la API en consecuencia, como si estuvieran sirviendo a una comunidad de desarrollo abierta.
  • Descubrimiento de servicios, descubrimiento de servicios, descubrimiento de servicios.
  • Lo más importante es que la organización debe apoyar la arquitectura y no luchar contra ella, de lo contrario, cualquier ganancia en el tiempo de desarrollo que habría obtenido se convertirá en una tormenta de mierda.
  • Mantenlo simple.

Tomando el caso de estudio de la compañía GILT de la compañía que implementó microservicios.
Se supone que la aplicación web Ui no debe contener ninguna lógica empresarial. Lo llevó a un nivel en el que cada página de GILT se configura como una aplicación web de implementación independiente. Estas aplicaciones web de página única se basan en los micro servicios subyacentes. implementaciones al no dejar que todo el sitio web se caiga. La escalabilidad se logra al separar los servicios y la lógica de negocios, omitiendo solo la capa de UI y desplegando de forma independiente estos servicios que son reutilizables y compactables. la plataforma de la que se trata tu interfaz de usuario, no importa cuántas aplicaciones de la interfaz de usuario se ejecutarán. Siempre puedes escalarla.

Hay un montón de estrategias confiables. ¿Qué es la arquitectura de microservicios? Aquí hay un buen ejemplo de un artículo que cubre una respuesta a su pregunta. En general, es muy necesario implementar el patrón de puerta de enlace de la API y el patrón de composición de la interfaz de usuario . Sin embargo, tenga cuidado, ya que, por lo general, es muy importante tener un equipo de desarrollo de dispositivos listo también.

No creo que haya una mejor estrategia, depende de múltiples factores.

Si la red es buena, está bien que el cliente llame a múltiples servicios, aunque realiza muchas solicitudes de ida y vuelta.

De lo contrario, puede combinar todos sus servicios necesarios en un solo servicio, de modo que pueda reducir las solicitudes de ida y vuelta; los datos de muchos servicios se pueden transformar para minimizar el tráfico.

escalabilidad ¿Pueden acceder simultáneamente al sistema diez millones de ui móviles híbridos nativos y web? ¿Puedes diseñarlo para que al menos pueda escalar linealmente?

Por lo general, cuando usted piensa que algo parece pesado e innecesario, es porque no tiene conocimiento de los casos de uso que llevaron a los diseñadores a pensar que las capas particulares de su interfaz eran apropiadas.

Si el sistema está bien diseñado, a medida que su aplicación se vuelve más compleja, es probable que use más y más de estas características, y si no están allí, tendrá que luchar contra su falta. No puedo hablar con la presciencia de por vida sobre el asunto, no sé qué tan bueno es su sistema.

Lo que puedo decir es que cuando trato con sistemas complejos, cuanto más aprendo sobre ellos, más sentido tienen. Además, la meta-habilidad que obtienes (aprender sobre cómo aprender sobre marcos de cierta complejidad) es muy valiosa.

Creo que no existe una estrategia única para la creación de interfaces de usuario. ¿Podría por favor explicar qué tipo de aplicación es esta? ¿Se trata de interfaces de usuario web, interfaces de usuario móviles nativas, interfaces de usuario de escritorio o todas ellas?