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 este post, y en una segunda parte que publicaremos próximamente, 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 EE. UU. (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, dónde 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?

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?

Cuéntanos qué te parece.

Enviar.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.