¿Cómo funcionan los microservicios?

Los microservicios no son las aplicaciones que normalmente llamamos por ese nombre. Cuando hablamos de microservicios nos referimos a un enfoque para desarrollar un sistema de software el cual está constituido por un grupo de aplicaciones (llamadas pequeños servicios) que interactúan entre sí usualmente empleando mecanismos ligeros de comunicación. Los “pequeños servicios” se despliegan y ejecutan en su propio proceso.

Por favor no llames mas microservicios a un componente de la infraestructura, esa palabra “microservicios” solo hace referencia al estilo de la arquitectura bajo la cual se construyó el sistema de software.

Al enfoque de la arquitectura microservicios también se le conoce como MSA.

¿Cuáles son los componentes fundamentales de una MSA?

Para desarrollar una arquitectura microservicios deben tenerse en cuenta (no todos son necesarios usarlos) un grupo de componentes que mencionaremos a continuación.

WAF: Es el Web Application Firewall, encargado de filtrar el trafico HTTP, detectar anomalías, ataques de denegación de servicios, etc. Es una barrera de seguridad para la infraestructura.

API Gateway o Middleware: Se encarga de servir como punto único de entrada a nuestra infraestructura microservicios, se comunica con el proveedor de acceso y autorización para autenticar las solicitudes y enruta hacia el/los microservicios subyacentes la solicitud. En términos generales debería ser agnóstico y no poseer lógica de negocio.

BFFs: Los backend for frontend son servicios específicos que atienen las solicitudes de un tipo de cliente en particular, se recomienda tener un BFF por ejemplo para la web, otro para la aplicación mobile, etc. Si la lógica entre los tipos de clientes no son muy diferentes y las necesidades de escalar tampoco puede no sea necesario un BFF.

Configuración centralizada: Es un tipo de sistema, usualmente de tipo key/value que tiene la capacidad de almacenar las configuraciones de las aplicaciones. Los servicios al iniciar consultan este sistema pasando el name de la aplicación y el ambiente (desarrollo, pre-prod, prod) y este servicio les entrega las configuraciones para su arranque.

Registry and discovery: Funciona como un directorio donde los servicios al arrancar se registran y dan su ubicación. En dependencia de la implementación particular el servicio de registro consulta el /healtcheck de los servicios o los servicios le informan su estado de salud. Es una pieza fundamental, los servicios usan este componente para saber la ruta/estado de los demás a la hora de invocarlos.

Observabilidad: Como su nombre lo indica son un grupo de herramientas que permiten observar y/o monitorear el estado del sistema. Los pilares de la observabilidad son: 1) logs centralizados, 2) traceo distribuido y 3) métricas. Todos estos componentes son fundamentales en la implementación de una MSA.

Sobre estos conceptos con un ejemplo explicamos en este vídeo como funciona una arquitectura microservicios:

Espero te guste el video, suscríbete al canal y no te pierdas los nuevos videos para seguir aprendiendo 🙂