Los microservicios, o como también se los conoce, la arquitectura de microservicios (MSA), es una práctica de desarrollo de software que consiste en diseñar una aplicación como un conjunto de pequeños servicios que corren bajo sus propios procesos y que proporcionan mecanismos de comunicación con otros servicios o aplicaciones. La solución de diseño más extendida de estos mecanismos acostumbra a ser sobre protocolo HTTP vía API, ya que la comunicación sobre este protocolo suele estar permitida en la configuración de un firewall de aplicación.
Es importante resaltar que la arquitectura de microservicios no consiste SOLO en diseñar servicios más pequeños. Esta simplificación podría dar como resultado una arquitectura más compleja, más lenta y con menor calidad. Para no caer en este error, habría que pensar en diseñar servicios autónomos, simples y con un mínimo grado de acoplamiento y alta cohesión con el resto de servicios.
Uno de los objetivos del uso de los microservicios es ofrecer una mayor agilidad, calidad y eficiencia en la entrega y despliegue continuos del software, para así mejorar el time-to-market, un requisito cada vez más demandando por los departamentos de negocio de las empresas. Debido a lo anterior, los microservicios juegan un papel protagonista en la implementación de una filosofía DevOps.
En el ámbito de DevOps, el diseño de la arquitectura del software debe dar respuesta tanto a los requisitos funcionales como a los no-funcionales, tales como:
Autonomía: el carácter independiente de los microservicios proporciona a los equipos de desarrollo la capacidad de decidir, por ejemplo, la tecnología a usar en su implementación.
Escalabilidad: las particularidades asociadas al despliegue de los microservicios hacen que sean fácilmente escalables, considerándolos un nodo que forma parte de un clúster o un pool de servidores.
Fiabilidad: el tiempo de respuesta ante un fallo en una aplicación diseñada con microservicios disminuye Al tener “separados” los diferentes servicios de un todo resulta más sencillo acotar dónde puede estar el origen del error.
Mantenimiento: los microservicios facilitan el uso de metodologías ágiles que simplifican el mantenimiento correctivo y evolutivo de las funcionalidades.
Resiliencia: el uso de microservicios puede mejorar la capacidad de recuperación de los sistemas.