descubre qué son los microservicios y cómo llevarlos a tus proyectos

¿Qué son los Microservicios? es una de las preguntas más frecuentes de quienes se están iniciando en el mundillo del desarrollo web. En este post descubrirás de qué va esta tecnología y cómo la puedes implementar utilizando Spring Cloud.

Hace unas semanas tuvimos un webinar donde tuvimos como invitado a David Martínez Sepúlveda, profesor con diez años de experiencia impartiendo cursos de programación, principalmente con tecnologías Java y trabajando en desarrollo web, tanto en​ back-end​ como en ​front-end​. En este caso ha venido a hablar de microservicios y de la herramienta Spring Cloud.

¿Qué son los Microservicios?

Una arquitectura de microservicios es un enfoque para desarrollar una aplicación software como una serie de pequeños servicios, cada uno ejecutándose de forma autónoma y comunicándose entre sí, por ejemplo, a través de peticiones HTTP a sus API. Los requisitos de estos servicios web es que son independientes, su comunicación es a través de API’s, el despliegue debe ser transparente y deben estar preparados para la nube. Además, deben disponer de una tolerancia a datos, ya que si un microservicio falla dentro de una aplicación, debemos ser capaces de responder a ese error para que la aplicación entera no se caiga.

Antes de los microservicios, las aplicaciones se desarrollaban de manera monolítica, como se puede ver en la imagen a continuación.

Más tarde, con la aparición de la arquitectura de microservicios, la estructura sería distinta: existiría una interfaz y la funcionalidad de cada una de las partes (pagos, inventario, envíos) estaría en su propio servicio, desplegado en su propio servidor.

Por otro lado, la arquitectura de microservicios presenta una serie de retos, que se enfrentarán con distintas herramientas como veremos más adelante. Estos son: la gestión de la configuración, el escalado dinámico, la distribución de la carga, la visibilidad, la monitorización y la tolerancia a fallos.

Ventajas de los Microservicios

Por otro lado, la parte positiva de la arquitectura de microservicios recae sobre una serie de ventajas:

  • Flexibilidad de tecnologías: podemos tener una aplicación que tenga microservicios escritos en cualquier lenguaje.
  • Escalado dinámico.
  • Ciclos de entrega más rápidos al poder aislar una funcionalidad y concentrarse en el desarrollo de la misma.

A continuación, vamos a ver unas herramientas que nos proporciona Spring Cloud para solucionar algunos de los retos que nos encontramos cuando trabajamos con los microservicios.

Spring Cloud

Se trata de un framework que se utiliza para construir aplicaciones robustas en la nube y tiene distintos elementos:

  • Spring Cloud Config Server, que se utiliza para la gestión de la comunicación.
  • Spring Cloud Bus nos permite mandar mensajes a todos los microservicios de una aplicación a la vez.
  • Spring Cloud Netflix es un proyecto ​Open Source​ que creó Netflix y que contiene:
    • Servicio de nombres: Eureka, encargado del escalado dinámico y de la visibilidad.
    • Balanceador de carga, Ribbon, se encarga también del escalado dinámico, además de la distribución de carga.
    • Cliente Rest, Feign, se ocupa también del escalado dinámico.
    • Api Gateway, Zuul, encargado de la visibilidad y la monitorización.
    • Además, Zipkin se encarga también de la monitorización y Hystrix de la tolerancia a fallos.

¿Cómo funciona una arquitectura de Microservicios?

David ha puesto en práctica todo lo que nos ha explicado a través del siguiente modelo:

Como veis, hay un catálogo de juegos que va a llamar a un servidor de nombres, el cual va a distribuir las llamadas entre las categorías y los juegos. El catálogo lo que va a hacer es preguntar qué categorías existen, y lo va a conseguir mediante el servicio de categorías. Una vez que conozca todas las categorías, le va a pedir al servicio de juegos que le mande los juegos de una determinada categoría.

Va a hacer esto por todas las categorías.

Si quieres ver cómo se realiza esto mediante código, aquí te dejamos la práctica que hemos hecho en el webinar:

Si quieres convertirte en un crack de la arquitectura basada en microservicios, descubre nuestro Full Stack Web Bootcamp, donde además donde además dominarás el desarrollo front-end, back-end, servidores y más. Descarga aquí el temario para conocerlo todo.

Otras entradas que te pueden interesar:

¡Conoce nuestros Bootcamps!

Descarga el temario y descubre cómo en 6 meses podrás ser un Full Stack DevOps Bootcamp.

¿Quieres más información?