¿Qué son los Microservicios?

Los microservicios son como piezas de Lego para las aplicaciones de computadora.

En lugar de construir una gran cosa, las aplicaciones se hacen de muchas piezas pequeñas e independientes que hacen un trabajo específico. Cada pieza puede ser manejada por un equipo pequeño de personas, y tienen reglas claras sobre cómo se comunican entre sí.

La idea es dividir una aplicación grande en partes más fáciles de manejar, como si estuvieras armando un rompecabezas con muchas piezas pequeñas en lugar de una sola grande.

Esto hace que el desarrollo y el mantenimiento sean más simples y eficientes.

¿Qué es la arquitectura de microservicios?

La arquitectura de microservicios es un enfoque de desarrollo de software que divide las aplicaciones en pequeñas unidades de servicios independientes, diseñadas para realizar tareas específicas.

Estos servicios son autónomos y se comunican a través de protocolos ligeros. Es una forma de estructurar aplicaciones en componentes débilmente acoplados.

Imagina que estás construyendo una casa de LEGO. En lugar de tener una sola pieza grande que representa toda la casa, utilizas muchas piezas más pequeñas, cada una con una función específica.

Por tanto ,tienes piezas para las paredes, el techo, las ventanas y las puertas. Cada una de estas piezas es como un “microservicio” en la arquitectura de microservicios.

En lugar de tener una sola persona construyendo toda la casa, tienes un equipo de constructores. Cada constructor se especializa en ensamblar una parte específica de la casa.

Por ejemplo, uno se encarga de las paredes, otro del techo y así sucesivamente. Cada constructor es como un “microservicio” autónomo en la arquitectura de microservicios.

Estos constructores trabajan juntos para construir la casa, y si necesitas cambiar o agregar algo en la casa, puedes hacerlo sin afectar las otras partes. Es como si pudieras quitar una ventana y reemplazarla sin derribar toda la casa.

Esto es similar a cómo los microservicios permiten cambios y actualizar una aplicación sin afectar otras partes de la misma, ni al rendimiento.

¿Qué es la arquitectura monolítica?

La arquitectura monolítica se refiere a un enfoque de diseño de software en el que todos los componentes de una aplicación están integrados en una única unidad de software.

En este enfoque, no hay una separación clara entre las diferentes partes de la aplicación y todo funciona como un solo bloque.

Intentemos verlo de una manera sencilla. Pensemos en una arquitectura monolítica como una gran estructura de piezas de LEGO, en donde todas las piezas se encuentran soportadas por una única gran pieza que hace la función de base.

Por tanto, ese proyecto no se puede separar fácilmente, sin antes pararte a construir nuevas bases y que todo el LEGO se derrumbe.

¿Diferencias entre la Arquitectura como Servicios y la Arquitectura Monolítica?

Esta tabla resume las principales diferencias entre ambas arquitecturas en términos de estructura, tamaño, desarrollo, escalabilidad, flexibilidad, tiempo de implementación, mantenimiento, aislamiento de fallos, dependencias, y administración.

AspectoArquitectura de MicroserviciosArquitectura Monolítica
EstructuraDividida en pequeños serviciosIntegrada en una única unidad
Tamaño de la aplicaciónMás pequeñaMás grande
DesarrolloEquipos pequeños y autónomosEquipo único
EscalabilidadEscalabilidad sencilla y granularEscalabilidad compleja
FlexibilidadMayor flexibilidad para cambiosMenos flexibilidad
Tiempo de implementaciónImplementación más rápidaImplementación más lenta
MantenimientoMenos impacto en actualizacionesMayor impacto en actualizaciones
Aislamiento de fallosAislamiento más sencilloAislamiento más complejo
DependenciasMenos dependencias cruzadasMás dependencias cruzadas
AdministraciónMás complejaMás sencilla
EjemploAplicación web con servicios independientes (Búsqueda, Pagos, Calificaciones)Aplicación web con todos los componentes en un solo bloque

¿Diferencias entre la Arquitectura como Servicios y la Arquitectura SOA?

Una tabla comparativa entre la arquitectura de microservicios y la arquitectura orientada a servicios (SOA):

AspectoArquitectura de MicroserviciosArquitectura SOA
Tamaño de los serviciosPequeños y específicosPuede variar en tamaño y alcance
IndependenciaAlta independencia de serviciosIndependencia, pero mayor dependencia potencial
Comunicación entre serviciosProtocolos ligeros y comunicación sin estadoProtocolos más variados, incluyendo SOAP
AcoplamientoBajo acoplamientoPuede tener acoplamiento variable
GranularidadMuy granularVariable, puede ser menos granular
Tecnologías utilizadasDiversidad de tecnologíasPuede estar más estandarizada
EnfoqueDesarrollo y despliegue rápidoEnfoque más orientado a estándares y reutilización
EscalabilidadEscalabilidad granularEscalabilidad variable según implementación
AdministraciónMenos complejaPuede ser más compleja
Aislamiento de fallosAislamiento más sencilloAislamiento, pero complejidad variable
EjemploVarios microservicios interconectados (pago, búsqueda, calificaciones)Servicios empresariales interconectados (facturación, inventario, recursos humanos)

Esta tabla resalta las diferencias clave entre la arquitectura de microservicios y la arquitectura orientada a servicios (SOA) en términos de tamaño de los servicios, independencia, comunicación, acoplamiento, granularidad, tecnologías utilizadas, enfoque, escalabilidad, administración, aislamiento de fallos y ejemplos típicos.

Debes tener en cuenta que ambas arquitecturas comparten algunas similitudes, pero también tienen enfoques y objetivos diferentes.