Microservicios Spring Cloud: Arquitectura (1/2)

Desde un tiempo a esta parte se ha empezado a escuchar conceptos como la arquitectura de microservicios, una especie de versión 2.0 de una arquitectura distribuida. Este tipo de arquitecturas se han visto espoleadas por el gran auge de las tecnologías Cloud, las cuales le vienen “como anillo al dedo”.

En el presente texto [dividido en dos posts, puedes acceder a la segunda parte desde aquí]  se pretende identificar quienes son los “new kid in town” en esta arquitectura y qué papel juegan en ella.

La mayoría de los componentes de la arquitectura fueron originalmente desarrollados por Netflix, el conocido site de streaming online, el cual recibe el mayor tráfico de red de bajada de todo EEUU (llegando a representar a menudo un tercio del total). La arquitectura de Netflix está compuesta por más de 500 microservicios, y cuentan con más de 50 millones de suscriptores que realizan unas 2.000 millones de peticiones al día.

MicroS1 netflix

A continuación se analizan una selección de los más importantes componentes de dicha arquitectura desde tres ángulos fijos: ‘¿qué es?’, ‘¿cómo funciona?’ y ‘¿qué aporta?’.

Eureka
¿Qué es? Eureka es un servidor para el registro y localización de microservicios, balanceo de carga y tolerancia a fallos. La función de Eureka es registrar las diferentes instancias de microservicios existentes, su localización, estado, metadatos…

¿Cómo funciona? Cada microservicio durante su arranque se comunicará con el servidor Eureka para notificar que está disponible, donde está situado, sus metadatos… De esta forma Eureka mantendrá en su registro la información de todos los microservicios del ecosistema. El nuevo microservicio continuará notificando a Eureka su estado cada 30 segundos, lo que denominan ‘heartbeats’. Si después de tres periodos Eureka no recibe notificación de dicho microservicio lo eliminará del registro. De la misma forma una vez vueltos a recibir tres notificaciones considerará el servicio disponible de nuevo.

Cada cliente de Eureka podrá también recuperar el registro para localizar otros microservicios con los que necesite comunicarse. Dicha información de registro se cachea en el cliente. Eureka se puede configurar para funcionar en modo cluster donde varias instancias “peer” intercambiarán su información. Esto, junto al cacheo de la información de registro en los clientes da a Eureka una alta tolerancia a fallos.

¿Qué aporta?

  •  Abstracción de la localización física de los microservicios: cualquier microservicio que sea un cliente Eureka solo necesita conocer el identificador del microservicio al que desea invocar y Eureka resolverá su localización, puerto…
  •  Conocer el estado de nuestro ecosistema de microservicios: Eureka proporciona un dashboard que permite ver los microservicios existentes actualmente en el registro. microservicios1 2
  •  Se puede configurar como cluster incrementando notablemente su tolerancia a fallos.
  •  Eureka proporciona soporte a multiregión, pudiendo definir diferentes agrupaciones de microservicios. MicroS1 eureka 350
  •  Eureka fue inicialmente desarrollado por Netflix, quien utiliza AWS como IaaS, así Eureka fue diseñado para integrarse fácilmente con los servicios de Amazon.
  •  Eureka se integra con Asgard para la realización de despliegues haciendo más sencillo el cambio a nuevas o viejas releases.

Cloud-config
¿Qué es? Cloud-­config es un servidor de configuración pensado para sistemas distribuidos. Su función es almacenar las propiedades de configuración de los microservicios del ecosistema.

MicroS1 config

¿Cómo funciona? Cloud-config almacena las propiedades de configuración por defecto en un git. Durante el arranque de un microservicio éste consultará al servidor de cloud­-config las propiedades asociadas, quién se las descargará del repositorio git. Todo este proceso se realiza de forma transparente sin necesidad de una sola línea de código.

Los ficheros de propiedades típicamente se nombrarán con el formato {microservice}{profile}.{yml|properties} donde ‘microservice’ es el identificador de dicho microservicio y ‘profile’ un perfil de Spring.

¿Que aporta?

  •  Cloud­config se integra con Eureka de forma que durante el arranque de un microservicio, si éste es un Eureka client consultará al servidor Eureka donde se encuentra el servidor de configuración y le solicitará su configuración.
  •  Al almacenar la configuración en un repositorio git esto proporciona además de un repositorio centralizado de configuración, un histórico del mismo. Además cloud­config añade funcionalidades a esta integración con git permitiendo consultar configuración de diferentes ramas.
  •  Permite gestionar configuración de diferentes entornos, etiquetarla y consultar por dichas etiquetas…
  •  Proporciona encriptado opcional para los valores de las propiedades.
  •  La existencia de ciertas anotaciones de Spring en integración con cloud­config permiten recrear beans y reinicializar el contexto entero de Spring en caliente. Esto permite que los microservicios se adapten a cambios en las properties en caliente.

Abraham Rodríguez actualmente desarrolla funciones de ingeniero backend J2EE en Paradigma donde ya ha realizado diversos proyectos enfocados a arquitecturas de microservicios. Especializado en sistemas Cloud, ha trabajado con AWS y Openshift y es Certified Google Cloud Platform Developer. Cuenta con experiencia en diversos sectores como banca, telefonía, puntocom... Y es un gran defensor de las metodologías ágiles y el software libre."

Ver toda la actividad de José Abraham Rodríguez López

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Posts relacionados

2 comentarios

  1. […] de microservicios de Spring Cloud enumerando las ventajas que cada uno aporta (El ‘who is who‘). En el siguiente texto se pretende profundizar en dichas ventajas metiéndonos en harina […]

  2. […] en posts anteriores hemos identificado los componentes clave de la arquitectura de microservicios de Spring Cloud y Netflix y hemos profundizado en las posibilidades que Eureka como microservicio de descubrimiento nos […]

Escribe un comentario