Hoy vamos a hablar sobre Microservicios el cual es un término que se viene escuchando hace años pero confunde a más de uno.

El objetivo de este post es explicar fácilmente que son los microservicios, ennumerar sus pros, contras y finalmente citar algunas empresas las cuales implementen microservicios en sus productos.

Y todo eso sin entrar en un nivel técnico!

Qué es eso de microservicios?

Short explanation: Es un tipo de arquitectura, fin.

Expliquemos:

Este tipo de arquitectura al que hacemos referencia es un enfoque para desarrollar una aplicación de software como una serie de pequeños servicios (de ahí la palabra micro).

La idea es que cada uno de estos pequeños microservicios se ejecuten de forma autónoma y se comuniquen entre sí. (Ej: a través de api’s).

Otra característica es que estos pequeños servicios deben poder ser desplegados a producción sin afectar a los demás, incluso cada uno de estos microservicios puede ser escrito en lenguajes de promogración distintos ya que para comunicarse, cada uno expone su propia API que luego va a ser consumida por otro/s microservicios.

Si bien no hay una regla de como dividir los microservicios o que tamaño tienen que tener, una posible forma de implementar la arquitectura de microserviciospor ejemplo– sería que cada uno de estos pequeños servicios sea un área de negocio distintos dentro de la aplicación.

Para ‘calcular’ el tamaño de un microservicio podríamos decir que este debe ser poder reescrito en un plazo máximo de dos semanas. (Según señalan algunos desarrolladores)

Cómo identificar un microservicio?

Ya que no hay un estándar, es complicado «identificarlo» pero… Teniendo en cuenta lo explicado anteriormente podremos decir que si se presenta una aplicación modular a base de “pequeñas piezas” estaríamos frente a una arquitectura de microservicios.

Beneficios de la arquitectura basada en microservicios

  • Resulta más sencilla la localización de un bloque dentro de un sistema repleto de procesos en funcionamiento.
  • Es más facil de comprender ya que la lógica de negocio se encuentra separada.
  • Es posible implementar módulos redundantes, programando que ante la caída o fallo de uno de los módulos el tráfico se derive al servicio redundante y así no provocar la caída del servicio.
  • Facilita la gestión de equipos multifuncionales y autónomos.
  • Modificaciones: En las aplicaciones monolíticas un mínimo cambio requiere del despliegue de toda la aplicación nuevamente mientras que en microservicios podremos modificar un módulo/sección del sistema sin que se produzca interrupción alguna en el resto de servicios. Fabuloso, no?!

Arquitectura monolítica vs Arquitectura Microservicios

Una imagen vale más que mil palabras:

Arquitectura de microservicios vs arquitectura monolítica

Ejemplos

Algunas compañías que trabajan con la arquitectura de microservicios:

  • Netflix: Ya hace varios años se pasó a la arquitectura basada en microservicios para el funcionamiento de sus productos.
  • Amazon: Al igual que netflix, hace varios años ha migrado a la arquitectura de microservicios siendo una de las primeras grandes compañías que la implementaban en producción.
  • Ebay: Fue pionera en la adopción de una arquitectura basada en microservicios como así también en implementar tecnologías como Docker (No hablaremos de docker en este post).
  • Mercadolibre: El gigante de America Latina, al igual que las anteriores, hace varios años que viene trabajando con una arquitectura basada en microservicios en donde su aplicación principal comprende varios servicios autónomos (microservicios) que ejecutan la lógica propia de cada área funcional que se ofrece a los usuarios (internos y/o externos).

Ley de Conway

Spoiler alert: Lo que sigue no tiene relación directa con microservicios pero si con la arquitectura implementada en el desarrollo de software.

Que es eso de Conway?

Conway decía lo siguiente:

Cualquier organización que diseñe un sistema producirá un diseño que copia la estructura de comunicación de dicha organización

Melvin Conway (Informático)

La afirmación de Conway se basa en que dos módulos no pueden interactuar correctamente a menos que los diseñadores de ambos subsistemas se comuniquen entre sí. 

Y eso que tiene que ver con microservicios?

Los microservicios se comunican entre sí, no lo olvides!

Sin comunicación entre los pequeños servicios no existe la arquitectura basada en microservicios!

Conclusión? La comunicación lo es todo sin importar el contexto en el que estemos hablando, ya sea dentro de un sistema de software, dentro de una empresa, en la calle, con tu familia, amigos, en tu vida personal y/o profesional!

Pero no nos vayamos por las ramas, eso lo dejaremos para otra futura entrada 😎

Espero que este post te haya sido de utilidad!

Gracias por leer! 🙌


Nahuel Krowicki 🙋‍♂️

Linkedin ⬅️



Nahuel Krowicki

Passionate about computers, technology and security. I love learning new things! https://nahuel.dev