Netflix OSS, solución para una infraestructura Cloud
Hola a todos colegas, hace unos días, posterior a publicar el artículo sobre el ¿Por qué empresas que empiezan con lenguajes modernos se vuelven a Java? , me despertó la curiosidad y me puse a investigar y probar algunas cosas. Una de ellas es Netflix OSS, una solución que hoy sostiene la arquitectura de microservicios de esta empresa. Considero esta tecnología una joya que deben conocer los desarrolladores de aplicaciones, más que Java en sí, es posible que algo como esto esté disponible en algún otro lenguaje, sería interesante comentar sobre eso si alguien tiene conocimiento.
Al comenzar a leer sobre Netflix OSS hay dos cosas que debemos conocer, primero saber sobre Spring Boot y luego sobre la arquitectura de Microservicios.
Sobre Spring boot son un conjunto de mejoras realizadas al marco de trabajo Spring para facilitar su configuración y despliegue introduciendo el concepto de starters, algo así como metapaquetes en un repositorio de Linux, pero basado en la tecnología POM (puede usar Gradle o Maven para gestionarlos).
En el caso de Microservicios, es un nombre bonito para la segmentación de los servicios que se ofrecen en base de un dominio específico. Martin Fowler, quien considero uno de las personas más influyentes en el mundo de la arquitectura y patrones de software lo describe aquí.
Antes de entrar en materia, hay una solución que mejora esto aún más que Netflix OSS, pero se basa en ello, es JHipster.
Vayamos entonces al grano ¿Qué es Netflix OSS?
Netflix OSS son una serie de herramientas / componentes de software para poder desarrollar de una manera fácil y rápida aplicaciones y servicios que implementen alguno de los patrones más comunes que se usan en sistemas distribuidos:
- Configuración distribuida.
- Registro y autoreconocimiento de servicios.
- Enrutado.
- Llamadas servicio a servicio.
- Balanceo de carga.
- Control de ruptura de comunicación con los servicios.
- Clusterización.
- Mensajería distribuida.
Lograr todos estos elementos que permitan orquestar toda una red de microservicios es complejo. Las herramientas de Netflix OSS lo convierten en una tarea sencilla.
Los ingenieros de Netflix desarrollaron un conjunto de soluciones para implementar cada una de esas características, para ello se basaron en la reutilización de mucho código existente, el resultado final es la solución de código abierto Spring Cloud Netflix.
Las herramientas específicas que resuelve el problema son:
- Archaius (configuración distribuida)
- Eureka (registro y autoreconocimiento de servicios)
- Hystrix & Turbine (control de ruptura de comunicación con los servicios)
- Ribbon (balance de carga)
- Feign (llamadas servicio a servicio, lenguaje declarativo)
- Zuul (enrutado)
- Curator (clustering)
- Rabbitmq (mensajería distribuida)
La siguiente imagen, tomada de la web Nirmata, explica gráficamente la comunicación de algunos componentes.
Por el momento lo dejaremos acá, pienso publicar más adelantes algunos ejemplos que ya he implementado, para los más aventurados los invito a seguir la serie temática del blog Un Poco de Java, donde hablan del tema en español, en inglés pueden consultar a Nirmata, donde dan una explicación y finalmente explican el despliegue con Docker.
Good info, Thanks a lot!