¿Qué es la arquitectura de microservicios?

La arquitectura de microservicios (normalmente abreviada como "microservicios") es un estilo de arquitectura para desarrollar aplicaciones. Gracias a los microservicios, una aplicación grande puede separarse en partes independientes más pequeñas, cada una con su propio dominio de responsabilidad. Para servir una única solicitud de usuario, una aplicación basada en microservicios puede llamar a muchos microservicios internos con los que preparar su respuesta.

Los contenedores son un ejemplo notable de arquitectura de microservicios, ya que te permiten concentrarte en el desarrollo de los servicios sin tener que preocuparte por las dependencias. La computación sin servidor es otra estrategia habitual que permite a los equipos ejecutar microservicios sin gestionar servidores ni infraestructura, y escalar automáticamente las funciones en respuesta a la demanda.

Descubre cómo Google Kubernetes Engine (GKE) y Cloud Run pueden ayudarte a crear aplicaciones basadas en microservicios mediante contenedores.

¿Empezamos? Los nuevos clientes reciben 300 USD en crédito gratis para invertirlos en Google Cloud.

Consulta más información sobre la arquitectura de microservicios
Consulta más información sobre la arquitectura de microservicios

Definición de arquitectura de microservicios

Una arquitectura de microservicios es un tipo de arquitectura de aplicaciones en la que se desarrolla la aplicación como un conjunto de servicios. Este modelo proporciona el framework para desarrollar, desplegar y mantener diagramas y servicios de arquitectura de microservicios de forma independiente.

Dentro de una arquitectura de microservicios, cada microservicio es un servicio único creado para desempeñar una función de la aplicación y gestionar tareas independientes. Cada microservicio se comunica con los otros servicios a través interfaces sencillas para resolver problemas empresariales.

Arquitecturas monolíticas y de microservicios

Las aplicaciones monolíticas tradicionales se crean como una sola unidad unificada. Todos los componentes están estrechamente relacionados y comparten recursos y datos. Esto puede dificultar la ampliación, el despliegue y el mantenimiento de la aplicación, sobre todo a medida que aumenta su complejidad. Por el contrario, la arquitectura de microservicios descompone una aplicación en un conjunto de servicios pequeños e independientes. Cada microservicio es independiente, con su propio código, datos y dependencias. Este enfoque ofrece varias ventajas potenciales:

  • Mejora de la escalabilidad: los microservicios se pueden escalar de forma independiente en función de sus necesidades específicas
  • Mayor agilidad: los microservicios se pueden desarrollar, desplegar y actualizar de forma independiente, lo que permite ciclos de lanzamientos más rápidos
  • Resiliencia mejorada: si una microservicio falla, no necesariamente afecta a toda la aplicación
  • Diversidad tecnológica: la flexibilidad de los microservicios permite a los equipos usar la tecnología más adecuada para cada servicio

Para las aplicaciones que aún no son lo suficientemente grandes o complejas como para justificar una arquitectura de microservicios totalmente distribuida, el "monolito modular" es una opción potente. Este enfoque mantiene una única unidad de despliegue de la aplicación (un monolito), pero separa estrictamente el código base de la aplicación en módulos internos muy cohesivos y con bajo acoplamiento en función del dominio empresarial. Esto ofrece las ventajas organizativas de los microservicios (límites claros, desarrollo independiente) sin la sobrecarga total de gestionar un sistema distribuido.

Ejemplos de sectores

Muchas empresas de distintos sectores han adoptado la arquitectura de microservicios para abordar retos empresariales específicos y fomentar la innovación. Aquí tienes algunos ejemplos:

  • Comercio electrónico: muchas plataformas de comercio electrónico utilizan microservicios para gestionar diferentes aspectos de sus operaciones, como el catálogo de productos, el carrito de la compra, el procesamiento de pedidos y las cuentas de clientes. Esto les ayuda a escalar servicios individuales según la demanda, personalizar las experiencias de los clientes y desplegar nuevas funciones rápidamente.
  • Servicios de streaming: los servicios de streaming suelen basarse en microservicios para gestionar tareas como la codificación de vídeo, la entrega de contenido, la autenticación de usuarios y los motores de recomendaciones. Esto les ayuda a ofrecer experiencias de streaming de alta calidad a millones de usuarios a la vez.
  • Servicios financieros: las instituciones financieras utilizan los microservicios para gestionar varios aspectos de sus operaciones, como la detección de fraudes, el procesamiento de pagos y la gestión de riesgos. De esta forma, pueden responder rápidamente a los cambios en las condiciones del mercado, mejorar la seguridad y cumplir los requisitos normativos.

¿Para qué se usa la arquitectura de microservicios?

Normalmente, los microservicios se usan para acelerar el desarrollo de aplicaciones. Las arquitecturas de microservicios se basan en Java, sobre todo las de Spring Boot. Es habitual comparar las arquitecturas de microservicios con las orientadas a servicios. Ambas tienen el mismo objetivo, que consiste en dividir las aplicaciones monolíticas en componentes más pequeños, pero utilizan estrategias distintas. Estos son algunos ejemplos de arquitecturas de microservicios:

Migración de sitios web

Es posible migrar un sitio web complejo que esté alojado en una plataforma monolítica a una plataforma de microservicios basada en la nube y en contenedores.

Contenido multimedia

Gracias a la arquitectura de microservicios, se pueden almacenar recursos de vídeo e imágenes en sistemas de almacenamiento de objetos escalables y servirlos directamente en aplicaciones web o móviles.

Transacciones y facturas

El procesamiento de pagos y la gestión de pedidos pueden separarse como unidades de servicios independientes. De este modo, los pagos se seguirán aceptando aunque haya problemas con la facturación.

Procesamiento de datos

Adoptar una plataforma de microservicios puede ampliar la compatibilidad con la nube de los servicios de procesamiento de datos modulares ya disponibles.

Soluciona los retos empresariales que se te presenten con Google Cloud

Los nuevos clientes reciben 300 USD en crédito sin coste para invertirlos en Google Cloud.
Habla con un especialista del equipo de ventas de Google Cloud para hablar sobre tu reto único con más detalle.

Patrones de diseño de microservicios

Para gestionar la complejidad y optimizar el rendimiento de los sistemas distribuidos, los arquitectos de hoy en día se basan en varios patrones de diseño básicos.

Service Mesh

  • Una malla de servicios es una capa de infraestructura dedicada a gestionar la comunicación entre servicios.
  • Normalmente, utiliza un proxy sidecar (como Istio o Envoy) que se despliega junto a cada contenedor de microservicio para gestionar el tráfico.
  • Este patrón proporciona funciones cruciales como la resiliencia (por ejemplo, reintentos e interrupción de circuitos), la seguridad (autenticación mTLS) y la observabilidad (trazado y métricas detallados) sin necesidad de modificar el código del servicio.

Arquitectura basada en eventos (EDA)

  • Aunque los microservicios tradicionales suelen comunicarse de forma síncrona mediante APIs REST, las arquitecturas modernas cada vez más favorecen la comunicación asíncrona mediante eventos.
  • En la EDA, un servicio publica un evento (un cambio de estado) en un agente de mensajes (como Google Cloud Pub/Sub), y otros servicios se suscriben a esos eventos.
  • Esto favorece un acoplamiento más flexible, una mejor capacidad de respuesta en tiempo real y un aislamiento de errores mejorado, ya que los servicios no necesitan conocerse directamente.

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito y más de 20 productos sin coste.

Google Cloud