¿En qué consiste la arquitectura de microservicios?

Los microservicios, o la arquitectura basada en microservicios, son un enfoque de desarrollo de software basado en un conjunto de componentes o servicios modulares que se comunican entre sí para crear una aplicación de mayores dimensiones.  En este artículo, explicamos el funcionamiento de la arquitectura de microservicios, sus ventajas y desventajas y cómo facilita la gestión de la Seguridad IT.

El Cloud Computing ha cambiado muchas cosas en el terreno de la computación y, por eso, ha favorecido la proliferación de las aplicaciones basadas en esta arquitectura microservicios, mientras que ha relegado las arquitecturas monolíticas a un segundo plano para según qué aplicaciones. En la arquitectura, los pequeños servicios se ejecutan en su propio proceso y se comunican con mecanismos ligeros. La idea es que cada uno de estos módulos independientes se encargue de una tarea específica, o de un objetivo de negocio.

Cómo funcionan los microservicios

Los microservicios son unidades funcionales concretas e independientes, que trabajan juntas para ofrecer la funcionalidad general de una aplicación. En el otro lado de la balanza, la arquitectura monolítica produce aplicaciones sin separación entre módulos, algo que puede ser lo indicado para algunas aplicaciones, pero totalmente rígido para muchas otras.

De hecho, los microservicios pueden ser actualizados sin que esto afecte a la disponibilidad de las demás unidades y de la aplicación en su conjunto.

El funcionamiento de estos microservicios es sencillo de entender. En este tipo de arquitectura, una aplicación se divide en servicios. Como dijimos, cada uno ejecuta un proceso único y, si es necesario, administra su base de datos.

Un servicio puede realizar muchas tareas, entre las que, típicamente, se encuentran la generación de alertas, la gestión de la autenticación de usuario, o admitir UI. La ventaja de este paradigma para los equipos de desarrollo es que cada servicio puede ser manipulado de manera independiente con respecto a los demás.

Esto significa que el desarrollo es descentralizado, y que una modificación en un servicio no tiene por qué afectar a los demás, a menos que se modifique de alguna manera la interacción mutua. Por ejemplo, si una aplicación muestra una manera de proceder incorrecta que es responsabilidad de un servicio específico, es posible, en primer lugar, encontrar el origen del error más rápido. En segundo lugar, es posible arreglar ese problema, probarlo y hacer las modificaciones necesarias sin afectar al resto de servicios.

Ventajas y desventajas de la arquitectura de microservicios

Toda arquitectura o modelo tiene sus ventajas y desventajas. Si bien los microservicios acumulan más pros que contras frente a las arquitecturas monolíticas, conviene tener bien claro a qué atenernos. Como ventajas, podríamos resumir las siguientes:

  • El despliegue de los microservicios es rápido y sencillo.
  • Como es lógico, los servicios, en términos generales, son menos costosos en tiempo de desarrollo que la opción monolítica.
  • La independencia entre servicios permite acometer cambios sin que nada se vea afectado, incluso la aplicación podría seguir en funcionamiento, salvo el servicio desactivado o en mantenimiento.
  • Los diferentes servicios se pueden reutilizar en otros proyectos sin coste alguno.
  • El control de errores y el aislamiento frente a fallos es considerable, al contrario que en la arquitectura monolítica.
  • Una ventaja clave es que trabajan bien con contenedores.

En la parte menos positiva, podemos destacar el esfuerzo extra que hay que poner en la fase de diseño para la comunicación entre servicios, o que requiere un proceso de pruebas complejo.

Microservicios y seguridad

La arquitectura de microservicios puede mejorar o solventar algunos problemas de seguridad que surgen con las aplicaciones monolíticas. Así, se hace más simple la monitorización de seguridad, por un lado, porque las diferentes partes o módulos de una aplicación están aisladas.

Por otro lado, esta monitorización puede ser compleja en el sentido de que existen múltiples puntos que vigilar. Lo realmente importante es que puede suceder un fallo de seguridad en un módulo que no afecte en nada al funcionamiento del resto del proyecto.

De esta manera, la arquitectura de microservicios ofrece cierta resistencia contra los ataques distribuidos de denegación de servicio (DDoS) cuando se usan con contenedores, porque minimizan la posibilidad de que se tumbe una infraestructura por un exceso de solicitudes de servidor. Con todo, existen una serie de desafíos pendientes de resolución, como son la existencia de más áreas de vulnerabilidad en la red; una menor coherencia general entre las actualizaciones de la aplicación; múltiples puntos de ataque posibles, entre puertos y API; o la potencial falta de control sobre el software de terceros.