Síguenos en

  RSS Google + Facebook Twitter

Addictware Logo

 

En una aplicación monolítica con servicios de gran tamaño, los equipos de desarrollo se focalizan en dar respuesta a los requisitos funcionales, dejando los no-funcionales para una fase posterior. Los microservicios permiten testear simultáneamente ambos gracias al carácter ágil de los despliegues inherente a ellos.

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. MTP Devops

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.

¿Pero qué aporta una arquitectura basada en microservicios comparándola con una arquitectura monolítica tradicional?

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.

Según el artículo “Practice to perfect, the quality first model, Bertrand Meyer, 1997”, si desde el comienzo del desarrollo se van implementando y probando tanto los requisitos funcionales como los no funcionales se conseguirá mejorar la calidad. Esta técnica se conoce como “Quality First”.

En una aplicación monolítica con servicios de gran tamaño, los equipos de desarrollo se focalizan, tradicionalmente, en dar respuesta a los requisitos funcionales, dejando los no-funcionales para una fase posterior. En cambio, los microservicios hacen posible que se puedan testear simultáneamente ambos gracias al carácter ágil de los despliegues inherente a ellos.

En conclusión, el uso de microservicios se ha convertido en un componente clave para las empresas que deseen implantar los principios básicos de cultura, organización, procesos y herramientas de la filosofía DevOps, ya que puede aportar agilidad en los despliegues, aumentar la calidad del software entregado, facilitar la creación de grupos autónomos identificados por el “value stream” e, incluso, eliminar las tradicionales barreras interdepartamentales.