La arquitectura para microservicios propuesta es la utilizada por el framework Spring, en el cual se utilizan un conjunto de herramientas con funciones especificas, que se detallan a continuacion:
DIAGRAMA GENERAL
CONFIG-SERVER
Es el servidor de configuración centralizado, aqui se centralizan las configuraciones de los micro-servicios.
Permite tener una jerarquía de configuración a través de perfiles que permite definir las configuraciones para distintos entornos (TEST, PREPROD, PROD), ademas cuenta con un histórico de cambios gracias a que las configuraciones se almacenan en el GIT (en este caso de Cabal).
También permite la recarga de valores de propiedades en caliente.
EUREKA
Su papel es registrar y localizar los micro-servicios existentes, informar de su localización, su estado y datos relevantes de cada uno de ellos.Cada instancia de Micro-servicio (eureka-client) notifica su estado al Eureka Server
API-GATEWAY
Proporciona una puerta de entrada única a todo nuestro ecosistema de micro-servicios para peticiones desde dispositivos móviles, sitios web u otros sistemas externos.
Permite un enrutamiento dinámico, motorización e implementar seguridad de acceso a todo el ecosistema de micro-servicios.
ZIPKIN
Es un solucion de rastreo distribuido. Ayuda a recopilar los datos de interconexion y de tiempo necesarios para solucionar problemas de latencia en arquitecturas complejas de servicio. Las características incluyen tanto la recopilación como la búsqueda de estos datos.
KEYCLOAK
Es un producto de software de código abierto que permite el inicio de sesión único con la gestión de identidades y accesos dirigido a aplicaciones y servicios web.
REGISTRY
Es una aplicación que almacena y le permite distribuir imágenes de Docker.
PORTAINER
Provee un ambiente grafico para la configuración, la gestión y la seguridad centralizadas de los entornos con Dockers, lo que le permite ofrecer "containers-as-a-service" a sus usuarios de forma rápida, sencilla y segura.
RESUMEN
Los microservicios se desarrollan utilizando el framework Spring y se implementan dentro de contenedores, donde cada contenedor esta orientada a cubrir una funcionalidad.
Las configuraciones que se aplican a nivel de la aplicación estan almacenadas en el GIT, y son gestionadas gracias al Config-Server.
En tiempo de ejecucion los microservidos se registran con el Eureka server.
El API-Gateway es el unico punto de ingreso desde el exterior hacia los microservicios.
El Zipkin nos permite monitorear las conexiones y los tiempos de respuesta de cada microservicio.
Con Keycloak gestionamos la seguridad para el acceso y uso de los microservicios.
Y el Portainer nos permite gestionar de una forma grafica los contenedores dockers.
HARDWARE REQUERIMIENTOS
Sistema Operativo Centos 7.x (o superior)
Docker 2.10.7 o superior
Servidor con 2 nucleos (recomendado 4)
3.5GB RAM para SO e infraestructura del Middleware, mas 500MB por cada contenedor de Microservicios.
200GB SSD de almacenamiento para SO y contenedores.