Cómo implementar múltiples micro servicios dependientes


7

Queremos implementar múltiples microservicios en AWS ECS.

El problema que debemos resolver es cómo implementarlos de forma atómica:

Let dice que tenemos los servicios front-end que requieren el servicio de usuario versión 2.0.

Cómo asegurarse de que el servicio de usuario esté disponible antes de implementar el front-end.

Tenemos la idea de replicar todo el infra, implementar todo y luego ponerlo a disposición. Pero me parece complejo. ¿Cómo se hacen estas instancias de reserva, se implementan los servicios y se realiza el cambio?

Estamos utilizando dos ALB y grupos objetivo para cada servicio (asignaciones de puertos dinámicos).

Respuestas:


6

Tal pregunta podría ser una indicación de un corte arquitectónico pobre en microservicios. ¿ De qué son los microservicios? :

Estos servicios se basan en las capacidades comerciales y se pueden implementar de forma independiente mediante maquinaria de implementación totalmente automatizada.

El punto clave perdido en tal caso sería su aspecto de despliegue independiente .

El punto también podría ser simplemente mal entendido: no necesariamente significa que cada microservicio debe ser capaz de realizar toda su funcionalidad por sí mismo, solo significa que puede rescatar con gracia cuando algún otro microservicio del que depende su funcionalidad no está disponible, tal vez hacer un seguimiento de las cosas de "todo" para su posterior ejecución, cuando ese microservicio esté disponible.

Visto desde una perspectiva diferente: el manejo de la falta de disponibilidad de dependencias de servicios externos en realidad debería ser parte de cada funcionalidad de microservicio, por lo que uno podría considerar que el microservicio es completamente funcional incluso cuando sus dependencias de tiempo de ejecución no están satisfechas :)

Vale la pena señalar, creo, que en los comentarios anteriores me refiero a la falta de disponibilidad de microservicios independientemente de su razón, ya sea el orden de dependencia de implementación u otra cosa (interrupciones, por ejemplo).

Otra cosa a considerar sería la diferencia más fina entre implementar los microservicios y ponerlos en acción al cambiar el tráfico hacia ellos. El tráfico de conmutación es a menudo más rápido que la implementación en sí misma, por lo que la disponibilidad a nivel de todo el sistema se puede aumentar implementando primero todos los microservicios y solo después de realizar el cambio de tráfico para todos ellos.


¡Es lo que pensaba! Muchas gracias por estas explicaciones.
Kaymaz

1

Tuvimos una situación similar en la que una de nuestras aplicaciones tuvo que construirse, implementarse y estar en funcionamiento antes de que se ejecutara la segunda. Esto se debió a que la aplicación A tiene alguna funcionalidad que debería ejecutarse antes de que se haga referencia a ella a través de la aplicación B. La forma en que lo logramos fue mediante la construcción de una sola tubería de entrega. De esa manera, todas las dependencias se implementaron de forma secuencial o paralela según sea necesario. También teníamos los scripts de nuestra base de datos en secuencia junto con las capacidades de reversión, por si acaso. Reformulando su caso, puede implementar su API antes de su servicio front-end. Espero que esto ayude.


0

La solución aquí es implementar los micro servicios utilizando el patrón de implementación azul / verde.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.