La fuerza de la manada, Microservicios (I).

UNA PEQUEÑA INTRODUCCIÓN AL MUNDO DE LOS MICROSERVICIOS.

La fuerza de la manada, Microservicios (I).

30 marzo 2020

Este artículo forma parte de una serie de artículos sobre metodología, arquitectura y nuevas tecnologías escritos con el objetivo de compartir parte de los procesos que desarrollan nuestros equipos de alta rendimiento en Mindden.

Seguro que has oído hablar de la programación orientada a microservicios, o cómo este nuevo paradigma plantea arquitecturas distribuidas en subsistemas autónomos. En este artículo vamos a intentar explicar de manera sencilla en que consiste es modelo y que puede aportar en los proyectos de desarrollo de software, haciendo una pequeña introducción al mundo de los microservicios.

 

Para la visión tradicional del desarrollo, el software está compuesto por una parte cliente y una parte servidor. Esto quiere decir que parte se ejecuta en cliente y parte se ejecuta en servidor. Cuando se necesitaba consumir la aplicación de una nueva manera, esto se resolvía creando clientes diferentes, uno para cada tipo dispositivo en el que se quiera poder ejecutar.

Llegado a este punto ¿Qué pasa entonces con la parte servidor? Pues nos encontramos con una serie de problemas habituales;

  • Cuando hay muchos clientes consumiéndola, se sobrecarga.
  • Cuando hay pocos, va muy bien pero está sobredimensionada en infraestructura y en coste.
  • Cuando hay que actualizarla, permanece fuera de servicio temporalmente.

 

Esto en resumen es lo que tradicionalmente se conoce como Monolito por ser grande, estable y muy poco manejable.

 

Este es un problema detectado y recurrente contra el que se llevan peleando departamento de IT de todo el mundo desde hace años. Mejorar este paradigma ha sido prioritario por muchos motivos:

  • Las dificultades de actualizar una aplicación monolítica al tratarse de un código único.
  • Los problemas de todo nuevo despliegue requiriendo relanzar la aplicación completa.

Una de las soluciones mayormente por toda la comunidad de desarrollo mundial ha sido implemente modelos para “romper” ese monolito en partes más pequeñas autónomas, de momento no entraremos en más detalles.

 

 

¿Porqué este paradigma puede aplicarse con tanto éxito a la desarrollo de software? pues en realidad es una de las estrategias más exitosas del mundo natural, dividir el problema o afrontar la solución de manera distribuida. Pensemos que igual que las hormigas se coordinan para llevar una carga cientos de veces más pesadas que ellas o un banco de peces se agrupa para confundir al depredador, distribuir los servicios de anteriormente acoplados a una única unidad nos hará encontrarnos ante un nuevo escenario.

Este escenario ofrece oportunidad y contraprestaciones, os la resumimos de manera somera:

 

Las principales desventajas.

  • Incremento en tiempo de datos en tránsito.
  • Se requiere gran disciplina en mantener los contratos para la comunicación, de lo contrario podemos mermar la cohesión.

 

Por otro lado este nuevo paradigma tiene unas cuantas ventajas.

  • La parte servidora es tecnológicamente heterogénea. Siempre maximizando el rendimiento y la agilidad del desarrollo.
  • En su escalabilidad, solo replica la parte más congestionada, mejorando los costes de infraestructura.
  • Un refactorizado es siempre sobre una parte y no sobre un todo.
  • Al tener partes en diferentes repositorios previene los conflictos.
  • Ofrece mayor facilidad a la hora de implementar una seguridad perimetral ya que solo se exponen partes.
  • El criterio de responsabilidad única previene la duplicidad de código.
  • Desplegar una parte siempre será más rápido que desplegar un todo.
  • Menor acoplamiento

 

Desde Mindden llevamos trabajando en este tipo de paradigmas bastantes años y hemos afrontados proyectos de todo tipo, algunos donde una estrategia de arquitectura distribuida es la mejor opción y otros donde mantener un base de desarrollo acoplada puede ayudarnos a conseguir los objetivos.

Por eso siempre la mejor opción es conocer el mayor número de soluciones posibles para maximizar el ROI y el beneficio aportado a todos los actores del proceso.

Por todo ello como en la sentencia atribuida a Julio Cesar: “Divide y vencerás”, nos vemos próximamente en MICROSERVICIOS (II).