Introducción a los Microservicios

Microservicios en la nube

Introducción a los Microservicios

Microservicios es el nombre de un estilo de arquitectura del software, fuertemente influenciado por el software distribuido. De entre todas las cosas que caracterizan esta arquitectura del detaca el hecho de que diversos componentes están altamente distribuidos. También, un aspecto distintivo es el hecho de que cada uno de los microservicios es responsable de un único problema en concreto.

Historia

La historia de los microservicios se puede rastrear hasta Mayo del 2011 en Venecia, donde un grupo de arquitectos de software se pusieron de acuerdo en utilizar la palabra para caracterizar los sistemas en cuyo desarrollo estaban involucrados.

Con la influencia de algunos de los pioneros en el campo (Adrian Cockcroft, Netflix,…) los microservicios han ido ganando presencia y, hoy en día, se aceptan en la industria como un estilo arquitectónico bien establecido.

Muchas organizaciones están migrando sus sistemas a esta arquitectura, descomponiendo sus monolitos en unidades más pequeñas y distribuidas.

Principios

La idea principal es la de procesos pequeños y autónomos que trabajan en colaboración para cumplir cierta lógica de negocio.

Pero llegar a este concepto es una tarea difícil. Si no se tiene un conjunto de principios coherente que guíe, el camino hacia esta arquitectura puede ser muy largo. En un sistema distribuido hay más decisiones que tomar que en un sistema monolítico. ¿Un único lenguaje para todo? ¿Qué almacén de datos? ¿Cual es el protocolo de comunicaciones que debo utilizar? ¿Qué servidores?

Los microservicios deben estar modelados en torno al dominio en cuestión, de forma que las fronteras entre cada uno de ellos sean claras, fáciles de entender y poco mutables.

Otro principio importante es el de la automatización de procesos, en particular el movimiento llamado DevOps. Con procesos automatizados la liberación de versiones, fijación de bugs y, en general, la evolución natural del sistema es posible y económicamente viable.

Igualmente importante es la ocultación de detalles de implementación. Cuando los microservicios interaccionan mediante APIs estables, entonces los equipos responsables de los microservicios pueden funcionar de forma ágil.

El despliegue individualizado es otro de los principios clave para los microservicios. Ser capaz de desplegar servicios individuales sin afectar el resto es clave para una arquitectura de microservicios exitosa.

El aislamiento de fallos es también clave. En un sistema distribuído es fundamental que si un elemento del sistema tiene un fallo, el mismo no se propague en cascada por el resto.

Observabilidad es el otro principio fundamental. Al igual que ocurre con el aislamiento de los fallos, un sistema distribuido es más difícil de diagnosticar que un sistema monolítico. Por ello, es fundamental en las arquitecturas de microservicios que éstos sean observables con el mayor nivel de profundidad posible.

Futuro

No es fácil predecir el futuro de los microservicios, teniendo en cuenta que los líderes tecnológicos están poniendo todo su esfuerzo en fabricar productos cada vez mejores para el DevOps, el API Management, las Paas y las Iaas. En cualquier caso, está claro que los microservicios están aquí para quedarse y quizá fusionarse con otras explosiones tecnológicas como la IoT.