CodeGym /Cursos /Módulo 5. Spring /Lección 165: ¿Para qué sirven los microservicios — ejempl...

Lección 165: ¿Para qué sirven los microservicios — ejemplos de la vida real (Netflix, Uber)

Módulo 5. Spring
Nivel 11 , Lección 4
Disponible

Netflix: streaming, microservicios y miles de millones de horas de contenido

Netflix — sin exagerar, es el rey de los microservicios. La compañía puede considerarse un referente en el uso de esta arquitectura. Pero es importante entender que Netflix no siempre fue microservicios. Como la mayoría de las empresas, empezaron con una aplicación monolítica.

Un poco de historia

Cuando Netflix lanzó su servicio de streaming (antes, por cierto, se dedicaban solo al alquiler de discos), todo el sistema estaba construido en un gran monolito que se encargaba de todo: registro de usuarios, catálogo de películas, algoritmos de recomendación y el streaming.

Aproximadamente en 2008 hubo un fallo masivo en el servicio. El monolito colapsó bajo la carga, dejando a millones de usuarios sin acceso a sus series favoritas. Entonces, la gente de Netflix se dijo: "No se puede seguir así". Empezó el proceso de migración hacia una arquitectura de microservicios.


Cómo usa Netflix los microservicios

Hoy Netflix son más de 2000 microservicios que interactúan entre sí como engranajes en un mecanismo complejo. Cada servicio tiene una responsabilidad bien definida. Por ejemplo:

  • Servicio de recomendaciones: te sugiere series y películas basándose en lo que ves (y sí, saben que ves "Peter Rabbit" de noche, por eso te recomendaron "The Polar Express").
  • Servicio de streaming: se encarga de entregar el vídeo a tu dispositivo.
  • Servicio de gestión de suscripciones: administra tus suscripciones, notificaciones y hasta te recuerda pagar la suscripción (seguro te ha pasado).

Para cada microservicio se elige la tecnología que mejor encaja con su función. El streaming, por ejemplo, está optimizado para alta velocidad de entrega de datos, y la analítica usa Hadoop y Spark.


Ventajas de los microservicios en Netflix

  1. Escalabilidad: si de repente todo el planeta decide ver la nueva temporada de "Stranger Things", Netflix escala solo el servicio de streaming, no todo el sistema.
  2. Resiliencia: si el servicio de recomendaciones cae, eso no impide que puedas ver las series. A esas horas las recomendaciones no importan tanto.
  3. Independencia de los equipos: cada equipo en Netflix se ocupa de un microservicio concreto. El equipo que gestiona el vídeo no se cruza con el que trabaja en las recomendaciones. Nadie rompe el código del otro ni bloquea los releases.

Particularidades y retos

No todo es color de rosa. Gestionar 2000 microservicios exige herramientas potentes. Netflix desarrolló todo un conjunto de librerías y herramientas que hoy usan muchas empresas:

  • Hystrix: Circuit Breaker para manejar fallos.
  • Eureka: sistema de Service Discovery.
  • Zuul: API Gateway para gestionar peticiones.
  • Ribbon: librería para balanceo de carga.

Por cierto, muchas de estas soluciones las abrió Netflix como Open Source. Si ya te imaginas un proyecto donde quieres usar microservicios, puedes mirar su documentación en GitHub.


Uber: precios dinámicos, enrutamiento y "todo en tiempo real"

Uber es otro gigante que demostró que los microservicios funcionan. El inicio de Uber es parecido al de Netflix: la compañía también arrancó con un monolito.

Un poco de historia

En 2011 Uber funcionaba como una pequeña startup en San Francisco. El sistema era relativamente simple: una aplicación, una base de datos. Pero en cierto momento el servicio creció muy rápido y el monolito mostró sus límites. Especialmente se complicó gestionar procesos en tiempo real, como la fijación dinámica de precios cuando la demanda sube.


Cómo usa Uber los microservicios

Hoy Uber son cientos de microservicios, cada uno cubriendo una parte funcional separada:

  • Servicio de búsqueda de conductores: encuentra a los conductores más cercanos y estima el tiempo de llegada.
  • Servicio de pricing: calcula el precio del viaje en tiempo real, teniendo en cuenta atascos, demanda e incluso el tiempo.
  • Servicio de enrutamiento: determina la ruta óptima para que el conductor no tenga que venir a buscarte dando una vuelta por el Ártico.
  • Servicio de notificaciones: envía notificaciones push con la información del viaje.

Cada uno de estos servicios funciona de forma independiente y se intercambia información mediante API (por cierto, Uber tiene incluso su propio protocolo de comunicación entre servicios — TChannel).


Ventajas de los microservicios en Uber

  1. Flexibilidad tecnológica: para cada microservicio puedes usar tu propio stack. Por ejemplo, la analítica puede usar Python y los mapas de rutas Java.
  2. Procesamiento en tiempo real: los microservicios permiten a Uber reaccionar rápido a cambios, por ejemplo, cuando empieza a llover y los precios suben en toda la ciudad.
  3. Escalabilidad: el servicio de cálculo de precios puede escalar solo por la noche o en festivos, cuando la demanda aumenta.

Particularidades y retos

Uber se enfrentó a grandes problemas de consistencia de datos. Por ejemplo, si la información de un viaje se pierde entre microservicios, puede surgir descontento entre conductores o pasajeros. Por eso Uber usa intensamente enfoques Event-Driven Architecture y sistemas de mensajería para la interacción entre servicios.


Lecciones comunes de los ejemplos de Netflix y Uber

En los casos de Netflix y Uber queda claro que los microservicios no son solo una moda. Permiten a las empresas:

  • Adaptarse rápido a condiciones cambiantes.
  • Manejar picos de carga con más facilidad.
  • Organizar equipos de desarrolladores de forma más eficiente.

Sin embargo, tampoco hay que ignorar los retos. Implementar microservicios requiere buena infraestructura, herramientas fiables de monitorización y logging. Y eso sin contar la necesidad de diseñar la arquitectura para evitar el antipatrón "distributed monolith" — microservicios que siguen estando fuertemente acoplados entre sí.


Por qué estos ejemplos son importantes para ti como desarrollador

Primero, muestran que incluso las compañías gigantes empezaron con monolitos. Nadie nace siendo arquitecto de microservicios — es un proceso. Segundo, estos casos demuestran que los microservicios van muy bien para sistemas escalables y resilientes, pero no solucionan todos los problemas con una varita mágica.

Si vas a usar microservicios en tu proyecto, recuerda que un buen diseño es clave. Empieza por poco, no te lances a dividir la aplicación en cientos de servicios si aún no hay motivo. Y, claro, fíjate en empresas como Netflix y Uber para no repetir sus errores.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION