¿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.
Los microservicios se han hecho populares en los últimos años debido al auge de la computación en la nube y los contenedores. La computación en la nube permite a las empresas alquilar recursos de un proveedor externo, como Amazon Web Services (AWS). Los contenedores permiten empaquetar las aplicaciones y ejecutarlas en entornos aislados, lo que los hace ideales para su uso en entornos de computación en la nube.
¿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:
- Mayor agilidad: Los pequeños servicios pueden desarrollarse y desplegarse más rápidamente que las grandes aplicaciones monolíticas.
- Escalabilidad: Los servicios pueden ampliarse o reducirse según sea necesario, para satisfacer la demanda cambiante.
- Aislamiento de fallos: Si un servicio falla, no se cae toda la aplicación.
- Modularidad: Los servicios pueden sustituirse o actualizarse sin afectar al resto del sistema.
Si estás pensando en implantar una arquitectura de microservicios para tu próximo proyecto, hay algunas cosas que debes tener en cuenta. En primer lugar, tienes que comprender bien los requisitos del negocio y cómo se utilizará el sistema. En segundo lugar, necesitas diseñar una buena estrategia de comunicación entre los servicios. Y, por último, tienes que estar preparado para manejar la carga adicional de tu infraestructura.
¿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:
¿Cómo hacer una arquitectura de microservicios con SpringCloud?
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.
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:

Herramientas para crear una arquitectura de microservicios
Algunas de las herramientas más usadas para la creación de una arquitectura de microservicios son:
- Amazon Simple Queue Service (SQS)
- Apache Kafka
- Apache Kafka
- Kubernetes
- Elixir
- Spring Boot
- Google Cloud Functions
- AWS Lambda
- Microsoft Azure Functions
Si quieres convertirte en un crack de la arquitectura basada en microservicios, descubre nuestro Desarrollo Web Full Stack 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