¿Qué son los microservicios?

Los microservicios describen un enfoque arquitectónico nativo de la nube para el desarrollo de software que estructura una aplicación a partir de servicios débilmente acoplados en comunicación entre sí mediante API o protocolos de mensajería. Cada servicio es autónomo y autocontenido y ejecuta un proceso único. A medida que los desarrolladores buscan construir aplicaciones escalables y resistentes, los microservicios se han hecho cada vez más populares.

 

Explicación de los microservicios

Los microservicios, también conocidos como arquitectura de microservicios, son un tipo de arquitectura de software utilizada en el desarrollo de aplicaciones cloud-native. Las aplicaciones creadas con este diseño constan de componentes desplegables pequeños, independientes y poco acoplados que, en conjunto, proporcionan las capacidades de la aplicación.

Cada servicio de la arquitectura de microservicios realiza una función empresarial distinta y se comunica con otros microservicios a través de interfaces bien definidas, en su mayoría mediante API RESTful.

Alejándose de la aplicación monolítica desarrollada como una sola unidad, los microservicios permiten a los desarrolladores construir con módulos que pueden desarrollar, probar e implementar de forma independiente, lo que acelera el tiempo de comercialización. Dado que la naturaleza de desacoplamiento de los microservicios permite a los desarrolladores introducir nuevo código y funcionalidad con más frecuencia de lo que podrían hacerlo de otro modo, las aplicaciones modernas son capaces de seguir el ritmo de la evolución de las necesidades de los clientes.

Más de tres cuartas partes de las empresas han pivotado hacia los microservicios, sustituyendo sus aplicaciones monolíticas alojadas en servidores web individuales por aplicaciones en contenedores, nativas de la nube y distribuidas en un clúster de servidores anfitriones.

 

De la arquitectura orientada a servicios a los microservicios

La arquitectura orientada a servicios (SOA) existe desde principios de la década de 2000 como una forma de construir grandes sistemas distribuidos descomponiéndolos en servicios más pequeños y libremente acoplados. La arquitectura de microservicios surgió como una evolución natural de SOA.

El concepto de microservicios fue introducido por Fred George en un taller de 2011 sobre arquitectura de software. George había estado intentando resolver problemas de escalabilidad con SOA mientras trabajaba en un sitio de comercio electrónico y se le ocurrió la idea de construir pequeños servicios autónomos.

La arquitectura de microservicios tomó los principios SOA de orientación a servicios y los perfeccionó para las modernas aplicaciones nativas de la nube. Los servicios de grano grueso de la SOA se convirtieron en "microservicios" granulares de grano fino, lo que los hizo muy eficientes y les proporcionó la flexibilidad necesaria para adaptar una pila tecnológica a un servicio determinado. La arquitectura de microservicios incluso redujo la carga de comunicación al sustituir las engorrosas API SOAP por opciones ligeras, como las API REST o las colas de mensajes.

Los microservicios pronto ganaron popularidad entre los arquitectos de software, y empresas como Netflix, Amazon, The Guardian y Spotify empezaron a adoptar esta arquitectura.

La arquitectura de microservicios es la base de los beneficios asociados a la aplicación moderna y nativa de la nube.

Figura 1: La arquitectura de microservicios es la base de los beneficios asociados a la aplicación moderna y nativa de la nube.

 

Ventajas de los microservicios

Los microservicios proporcionan un marco para crear aplicaciones nativas de la nube que pueden adaptarse a los requisitos cambiantes de la empresa. Las innumerables ventajas se derivan de la arquitectura de la aplicación.

Agilidad

La arquitectura de microservicios se presta al desarrollo y la implementación independientes. A diferencia de las aplicaciones monolíticas, en las que cambiar una línea de código implica actualizar toda la aplicación, los desarrolladores pueden modificar o sustituir servicios sin afectar al sistema distribuido. La posibilidad de implementar servicios individuales facilita la adición de nuevas funciones o la reversión de cambios en una aplicación.

Escalabilidad

Escalar una aplicación entera no es lo óptimo. Con los microservicios, sólo se escalan los componentes que lo requieren. Los desarrolladores pueden abordar un servicio individual según sea necesario, lo que en última instancia facilita un mejor rendimiento bajo cargas pesadas, el uso eficiente de los recursos y menores costes de infraestructura.

Elección

En la arquitectura de microservicios, la aplicación nativa de la nube no comparte una pila y una base de datos comunes. Los desarrolladores pueden elegir las herramientas que prefieran y las tecnologías para satisfacer los distintos requisitos de los servicios individuales.

Integración

Los desarrolladores pueden escribir microservicios en cualquier lenguaje - y conectarlos a microservicios programados en cualquier lenguaje. Es más, los microservicios pueden ejecutarse en cualquier plataforma, lo que los hace disponibles para integrarse con sistemas heredados.

Reutilización del código

La arquitectura de microservicios permite a los desarrolladores construir servicios modulares que pueden reutilizar en distintas aplicaciones. Al trabajar con componentes reutilizables, los programadores reducen el tiempo de desarrollo y mejoran la calidad del código, ya que invierten en una cultura de "escribir una vez, reutilizar a menudo".

Tolerancia a fallos

La arquitectura de microservicios promueve la resiliencia. Con servicios diseñados para funcionar de forma autónoma, el fallo de un solo servicio rara vez cierra la aplicación, como suele ocurrir con las aplicaciones monolíticas.

Colaboración

La arquitectura de microservicios permite a los equipos trabajar en diferentes servicios simultáneamente, lo que se traduce en un tiempo de comercialización más rápido. Mientras que los desarrolladores toman decisiones sin necesidad de coordinarse con otros equipos, los microservicios también fomentan la colaboración entre equipos, ya que cada uno es responsable de desarrollar y mantener una parte del todo. Esto puede conducir a una mejor alineación con los objetivos empresariales y a un uso más eficiente de los recursos.

Iteración continua

La aplicación construida con microservicios está hecha para evolucionar. Los desarrolladores pueden implementar rápidamente los microservicios básicos como producto mínimo viable y actualizar la aplicación a medida que los equipos completan los servicios adicionales. Las nuevas tecnologías pueden incorporarse al diseño a medida que vayan surgiendo. La aplicación basada en microservicios permanece en proceso, avanzando continuamente hacia la perfección teórica.

 

Cuándo utilizar microservicios

Aunque los microservicios basados en contenedores aportan muchas ventajas, no siempre son la arquitectura de aplicaciones más adecuada. Cuando tome decisiones de ingeniería de software, piense en sus objetivos para la aplicación, así como en los obstáculos y necesidades de desarrollo que prevé con vistas a la vida útil de la aplicación. Los microservicios funcionan mejor con aplicaciones complejas. Los escenarios para considerar el uso de microservicios incluyen:

Grandes aplicaciones

Si está construyendo una aplicación grande y compleja, los microservicios le permitirán dividir la aplicación en piezas manejables, lo que facilitará su desarrollo, implementación y mantenimiento.

Complejidades del calendario

La arquitectura de microservicios puede dar cabida a servicios independientes con diferentes ritmos de desarrollo. Incluso si un servicio sufre un retraso inesperado, el proyecto puede continuar sin implicaciones globales para el calendario de desarrollo de la aplicación.

Actualizaciones frecuentes

La arquitectura de microservicios es ideal para aplicaciones que requerirán actualizaciones frecuentes, ya que los servicios independientes permiten a los desarrolladores modificar el módulo en lugar de la aplicación.

Alta escalabilidad

Si su aplicación tiene que gestionar un gran volumen de tráfico o necesita escalar rápidamente, los microservicios son esenciales. Esto resulta especialmente útil si necesita escalar partes específicas de la aplicación, en lugar de escalar toda la aplicación.

Varios equipos

Si tiene varios equipos de desarrollo trabajando en la misma aplicación, los microservicios le ayudarán a mantener la agilidad y la eficiencia. Cada equipo puede trabajar en su microservicio, utilizando la pila tecnológica que le funcione, sin preocuparse del resto de la aplicación.

Arquitectura descentralizada

Si desea construir una aplicación con una arquitectura descentralizada, los microservicios son autónomos y pueden implementarse en diferentes ubicaciones, incluso entre distintos proveedores de servicios en la nube.

Nube híbrida

Si está planificando una arquitectura de nube híbrida, en la que algunos servicios seguirán ejecutándose in situ y otros en la nube, los microservicios le ayudarán a gestionar la complejidad de la aplicación.

API calls representing client requests routed by API gateway to the endpoints of the internal microservices

Figura 2: Llamadas a la API que representan solicitudes de clientes enrutadas por la puerta de enlace de la API a los endpoints de los microservicios internos.

 

Creación e implementación de aplicaciones basadas en microservicios

La arquitectura de microservicios requiere una planificación cuidadosa. Ciertas tecnologías y prácticas comunes al entorno de producción permiten a los desarrolladores desarrollar, mantener y operar eficazmente aplicaciones basadas en microservicios.

DevOps

Las prácticas DevOps, incluida CI/CD, son esenciales para el enfoque arquitectónico de los microservicios. A diferencia de las aplicaciones monolíticas, los microservicios son sistemas distribuidos inherentemente complejos con numerosas partes móviles y pilas tecnológicas independientes. Esta complejidad requiere una colaboración frecuente entre los equipos de desarrollo y operaciones para garantizar que los componentes se integran a la perfección.

Las prácticas de DevOps proporcionan las herramientas de colaboración, comunicación y automatización necesarias para unir eficazmente a los equipos a lo largo de todo el ciclo de vida del desarrollo de software.

Entrega continua

La entrega continua va de la mano de los microservicios, permitiendo a los desarrolladores lanzar actualizaciones de software con frecuencia y fiabilidad haciendo uso de herramientas de automatización de la infraestructura, como servidores de integración continua, canalizaciones de implementación y marcos de pruebas automatizados para agilizar el proceso de CI/CD.

La entrega continua es especialmente importante para garantizar que cada servicio pueda actualizarse y liberarse independientemente de los demás microservicios.

REST

Los microservicios se comunican con microservicios -y la mayoría lo hacen dentro de aplicaciones web-, lo que hace que REST sea complementario. REST, o transferencia de estado representacional, es un patrón de diseño arquitectónico para construir API RESTful, que permiten a los servicios comunicarse a través de HTTP en formatos estándar, como XML, HTML y JSON. Pero las API de REST son fundamentales para las aplicaciones basadas en microservicios por varias razones.

Las API REST son ligeras y agnósticas con respecto a la plataforma, lo que significa que proporcionan una interfaz estandarizada que permite que los microservicios se comuniquen, independientemente de su tecnología subyacente. Dado que las solicitudes contienen la información necesaria para completarlas, las API de REST no requieren contexto almacenado en el servidor. Pueden gestionar grandes volúmenes de solicitudes sin comprometer el rendimiento, y los servicios de una arquitectura de microservicios basada en REST pueden evolucionar de forma independiente, comunicándose eficazmente de forma apátrida.

Contenedores

Aunque los microservicios dan a los equipos la opción de elegir el lenguaje y el marco de su servicio, trabajar con varios lenguajes en la misma canalización de CD plantea retos. Contenedores abstraen la variación entre servicios, ya que cada microservicio se convierte en una unidad autónoma empaquetada con su código base, base de datos y dependencias. La tubería de CD, ahora homogénea, puede realizar pruebas coherentes de cada contenedor.

Los servicios pueden interactuar sin interferir entre sí cuando están separados por contenedores y, una vez implementados, los contenedores proporcionan un entorno de ejecución ligero y portátil que permite que los servicios funcionen de forma coherente en todas las plataformas. Herramientas como Docker y Kubernetes se utilizan ampliamente para gestionar microservicios en contenedores.

Orquestador de Kubernetes

Una herramienta de orquestación como Kubernetes puede abstraer la infraestructura subyacente y automatizar la gestión, implementación y escalado de contenedores en varios servidores. Su extensibilidad también permite a los desarrolladores y operadores utilizar sus herramientas de software comercial y de código abierto preferidas, reduciendo el trabajo manual de la gestión de contenedores.

Sin servidor

La computación sin servidor es otra opción para implementar microservicios. Serverless architectures utilizan plataformas de funciones como servicio (FaaS) para crear unidades de implementación aún más pequeñas y escalar bajo demanda. Aunque las arquitecturas sin servidor pueden aumentar las dependencias de los proveedores, ofrecen una reducción de los costes operativos, la complejidad y los plazos de ingeniería.

 

Mejores prácticas de microservicios

El diseño de una arquitectura de microservicios requiere una cuidadosa planificación y consideración. Para construir con éxito aplicaciones basadas en microservicios, los desarrolladores deben observar las siguientes buenas prácticas:

  • Diseño basado en el dominio : El diseño impulsado por el dominio (DDD) es un enfoque de diseño que se centra en el dominio empresarial y en el comportamiento de la aplicación. Ayuda a los desarrolladores a dividir la aplicación en componentes más pequeños y manejables, lo que facilita su construcción, implementación y mantenimiento.
  • Límites del servicio : Al diseñar una arquitectura de microservicios, es esencial definir unos límites de servicio claros. Cada microservicio debe tener una responsabilidad bien definida.
  • Pequeños servicios : Mantenga los servicios "micro", centrados en una única responsabilidad. Perder de vista este principio fundamental sacrificará la manejabilidad.
  • Diseño de API : Los microservicios se comunican a través de API, así que utilice API coherentes, escalables y seguras que restrinjan el acceso a los datos a las aplicaciones, usuarios y servidores autorizados.
  • Gestión descentralizada de datos : Las aplicaciones de microservicios requieren diversas opciones de almacenamiento y bases de datos. Cada microservicio debe tener su propio Almacén de datos. Este enfoque le ayuda a evitar incoherencias en los datos y le permite escalar cada microservicio de forma autónoma. Usted quiere que el equipo de desarrollo elija la base de datos de cada servicio para asegurarse de que se adapta mejor a su proyecto.
  • Canales de CI/CD : La implementación de CI/CD le ayudará a encontrar y corregir errores rápidamente, lo que resulta especialmente valioso con múltiples bases de código que gestionar en una arquitectura de microservicios.
  • Resiliencia intencionada : Proteja la aplicación de los cierres por fallo de dependencia. No utilice llamadas a procedimientos remotos (RPC) entre microservicios, si es posible, e incorpore funciones como disyuntores para detener los fallos en cascada.
  • SOP: Desarrolle procedimientos operativos estándar que definan las convenciones de codificación, las estructuras de directorios y los protocolos de comunicación. Seguir un conjunto de normas dará lugar a microservicios coherentes y manejables.

 

Adopción de microservicios

eBay, Etsy, Uber... innumerables empresas han desmantelado sus aplicaciones monolíticas y las han refactorizado en arquitecturas basadas en microservicios para capitalizar las ventajas de la escalabilidad, la agilidad empresarial y las ganancias financieras.

Las organizaciones que planean la transición a los microservicios deben adoptar primero DevOps, que le preparará para gestionar las complejidades que encontrará. En un nivel básico, prevea las etapas descritas a continuación cuando trace su proyecto.

Identificar las capacidades empresariales

El primer paso para migrar a una arquitectura de microservicios es identificar las capacidades o características empresariales que su aplicación necesita soportar. Esto le ayudará a definir el alcance de su aplicación e informará sus decisiones sobre qué capacidades deben priorizarse para el desarrollo, así como la forma en que esos microservicios deben diseñarse e integrarse entre sí.

Descomponer la aplicación monolítica

La mayoría de las organizaciones utilizan el diseño dirigido por dominios o la descomposición basada en características para descomponer sus aplicaciones monolíticas.

Una vez identificadas las capacidades empresariales de la aplicación, defina los límites de servicio para cada microservicio, asegurándose de que cada microservicio tiene una responsabilidad distinta y bien definida. Querrá mapear las dependencias entre las capacidades empresariales, los Almacenes de datos y los sistemas externos. Basándose en los contextos delimitados y las dependencias, defina los microservicios que sustituirán a la aplicación monolítica.

Cada microservicio, centrado en una única capacidad empresarial, debe tener interfaces claras. Revise cómo se accede a las entidades de datos y, por último, considere cómo particionar los datos para reducir las dependencias entre servicios.

Definir interfaces de servicio

Implemente las interfaces de servicio para cada microservicio, asegurándose de que la interfaz refleja la responsabilidad exclusiva del microservicio. Puede utilizar diferentes técnicas, como las API RESTful o los protocolos de mensajería, para definir las interfaces de servicio.

Implementación y prueba de los servicios

En función de sus requisitos y conocimientos, elija los lenguajes de programación y los marcos de trabajo para la implementación de los servicios. Itere en el diseño según sea necesario, incluidas las pruebas de las nuevas interfaces, protocolos de comunicación y almacenes de datos.

Contenedorizar los servicios

Una vez que haya implementado y probado los servicios, querrá contenerizarlos utilizando tecnologías de contenedores, como Docker o Kubernetes. La contenedorización le permitirá implementar y gestionar los servicios de forma independiente.

Automatizar la implementación y la orquestación

Automatice la orquestación de los servicios utilizando herramientas como Kubernetes o Docker Swarm. Además de agilizar eficazmente la implementación de servicios, la automatización mediante Kubernetes o Docker mejorará la fiabilidad y disponibilidad de la aplicación. Cualquiera de las dos plataformas puede detectar cuando una instancia de servicio falla o deja de responder y tomar medidas para solucionar el problema. Kubernetes, por ejemplo, puede reiniciar las instancias averiadas o reprogramarlas en otros nodos, mientras que Docker puede migrar automáticamente el contenedor averiado a otro nodo.

Supervisar y gestionar los servicios

Descomponer una aplicación monolítica no es un proceso único. Requiere mantenimiento y actualizaciones a medida que evolucionan las necesidades de la aplicación y de sus usuarios. Supervise los nuevos microservicios y realice un seguimiento de las métricas clave, como el tiempo de respuesta y la utilización de recursos.

 

Asegurar los microservicios

Las aplicaciones de microservicios altamente distribuidas y nativas de la nube introducen complejidades de seguridad. En lugar de un único punto de entrada, vienen con docenas, si no cientos, de puntos potenciales de vulnerabilidad - y cada uno debe ser asegurado. Las API y las dependencias de código no representan más que dos fuentes de riesgo en la creciente superficie de ataque de la aplicación moderna.

Seguridad de aplicaciones web y API

Las aplicaciones modernas consumen entradas de diversas fuentes: solicitudes web estándar, llamadas a la API de dispositivos móviles, eventos en la nube, comunicación telemétrica de dispositivos de IoT, almacenamiento en la nube, etc. Es más, una sola solicitud web de un cliente (es decir, tráfico norte-sur) puede generar cientos de llamadas API entre microservicios internos (es decir, tráfico este-oeste).

La complejidad de las aplicaciones web centradas en API requiere estrategias escalables, flexibles y multicapa que funcionen para cualquier tipo de carga de trabajo en cualquier tipo de entorno o arquitectura de nube. Asegurar la interfaz web frontend de la aplicación nativa de la nube no es suficiente. Las aplicaciones nativas de la nube requieren una protección de la capa de aplicación para las API nativas de la nube. La seguridad de aplicaciones web y API (WAAS) es esencial.

Dependencias del código y análisis de la composición del software

Los componentes de software de código abierto constituyen aproximadamente el 70% de las aplicaciones nativas de la nube. Aunque esto agiliza el desarrollo, muchos paquetes de código abierto y sus dependencias contienen vulnerabilidades. Además, cada versión de un paquete OSS dependiente puede cambiar una funcionalidad crítica. Sin una visibilidad total, las vulnerabilidades pasan desapercibidas.

Las herramientas independientes de análisis de la composición del software (SCA) sacan a la luz los riesgos del código abierto demasiado tarde en el ciclo de vida del desarrollo, lo que provoca una acumulación de vulnerabilidades que no siempre pueden resolverse. Las herramientas separadas para SCA y IaC security dan lugar a alertas ruidosas sin contexto ni conocimiento de los riesgos interconectados. Dado que las lagunas son inevitables sin cobertura del tiempo de ejecución y de la carga de trabajo, lo mejor es asegurar las aplicaciones nativas de la nube con seguridad nativa de la nube integrada.

De código a nube CNAPP

Al identificar y priorizar los riesgos críticos de toda la aplicación nativa de la nube, una plataforma de protección de aplicaciones nativas de la nube (CNAPP) integra múltiples tipos de seguridad para ofrecer una protección integral del código a la nube: gestión de la postura de seguridad en la nube (CSPM), protección de la carga de trabajo en la nube, gestión de la habilitación de la infraestructura en la nube (CIEM), gestión de la postura de seguridad de Kubernetes (KSPM), seguridad de la infraestructura como código, WAAS, SCA y mucho más.

Los responsables de la seguridad en la nube que exploran la mejor manera de asegurar las rápidas necesidades de desarrollo de las aplicaciones que emplean tecnologías nativas de la nube, como contenedores, microservicios y funciones sin servidor, deberían considerar la adopción de una CNAPP.

 

Preguntas frecuentes sobre microservicios

Todas las aplicaciones nativas en la nube son aplicaciones de microservicios, pero no todas las aplicaciones de microservicios son nativas en la nube. La arquitectura de microservicios puede implementarse in situ o en la nube y no requiere necesariamente tecnologías o herramientas específicas de la nube.
Los microservicios se comunican a través de API, y a menudo se utiliza una puerta de enlace de API como capa intermedia, especialmente a medida que crece el número de servicios de una aplicación. Situada en el borde exterior de sus microservicios, la puerta de enlace API actúa como un proxy para gestionar todo el tráfico de entrada, proporcionando un único punto de entrada y enrutando todas las solicitudes.
Una malla de servicios es una capa dedicada de infraestructura aplicada a un sistema basado en microservicios que permite a los desarrolladores separar y gestionar la comunicación entre servicios dentro de una arquitectura de microservicios. La tecnología de malla de servicios puede encargarse de cosas como el descubrimiento de servicios, el equilibrio de la carga y la gestión del tráfico, liberando a los desarrolladores para que se centren en escribir código en lugar de gestionar la infraestructura.
Dado que los microservicios son sistemas distribuidos con múltiples componentes y servicios, el registro y la supervisión desempeñan un papel esencial para preservar la salud y el rendimiento generales del sistema. Cada microservicio genera un registro, que debe agregarse y analizarse para identificar problemas en el sistema.
Los microservicios sin estado no mantienen la información de estado entre peticiones. Diseñadas para ser autónomas, no dependen de los datos almacenados previamente para gestionar las solicitudes entrantes. Los microservicios sin estado son más fáciles de gestionar y escalar, pero pueden requerir una complejidad adicional para mantener la coherencia de los datos a través de múltiples solicitudes. Los microservicios sin estado suelen utilizarse para tareas sencillas e independientes, como la validación de datos o la autorización, en las que no se requieren operaciones con estado.
Los microservicios con estado son un tipo de microservicio que mantiene el estado de una aplicación. Esto significa que el microservicio tiene acceso y puede modificar los datos que persisten entre las solicitudes, que pueden incluir datos de la sesión del usuario, conexiones a bases de datos u otra información de estado. Los microservicios con estado pueden proporcionar ventajas como un mejor rendimiento, una mayor coherencia de los datos y una menor complejidad en el diseño de las aplicaciones. Sin embargo, requieren una gestión adicional y pueden ser difíciles de escalar horizontalmente.
Si un dominio representa un problema a resolver -como ocurre en el diseño dirigido por dominios (DDD)-, el modelo de dominio es el modelo que implementa la solución al problema.
El contexto delimitado representa un conjunto de características funcionales, un modelo de dominio, dentro de los límites de un dominio. En otras palabras, al igual que un subdominio es un segmento del dominio, un contexto acotado es un segmento de la solución. Un microservicio, entonces, es un contexto delimitado - pero no todos los contextos delimitados son microservicios. Los contextos limitados, de hecho, no están necesariamente aislados unos de otros.
El rastreo distribuido es una técnica que permite a los desarrolladores rastrear una solicitud a través de múltiples microservicios e identificar cualquier problema en el flujo de solicitudes. Las herramientas de seguimiento distribuido permiten a los desarrolladores rastrear el flujo de peticiones a través del sistema e identificar cualquier cuello de botella o problema en el flujo de peticiones.
Las arquitecturas de microservicios se diseñan e implementan utilizando el lenguaje de patrones de microservicios. Los lenguajes de patrones incluyen patrones para el abastecimiento de eventos, la gestión de datos, la comunicación y mucho más.
Los patrones de descubrimiento de servicios ayudan a las aplicaciones y servicios a encontrarse entre sí en un entorno de microservicios distribuidos. Las instancias de servicio cambian dinámicamente debido al escalado, las actualizaciones y los fallos del servicio, y estos patrones proporcionan mecanismos de descubrimiento para hacer frente a la transitoriedad. El equilibrio de la carga puede utilizar patrones de descubrimiento de servicios utilizando comprobaciones de salud y fallos de servicio como desencadenantes para reequilibrar el tráfico.
Los patrones de microservicios adaptadores traducen las relaciones entre clases u objetos que de otro modo serían incompatibles. Una aplicación que dependa de API de terceros podría utilizar un patrón adaptador para garantizar la comunicación entre la aplicación y las API.
Los patrones de aplicación Strangler ayudan a gestionar el proceso de refactorización de una aplicación monolítica en microservicios sustituyendo lentamente partes del monolito por microservicios.
Los patrones "backend-for-frontend" (BFF) identifican la forma en que se obtienen los datos entre el servidor y los clientes. El BFF inserta una capa entre la interfaz de usuario y los recursos a los que llama la interfaz, lo que permite a los desarrolladores crear y dar soporte a un tipo de backend por interfaz de usuario, utilizando las mejores opciones para esa interfaz. Esto, a su vez, mejora el rendimiento del frontend al adaptar los recursos a las necesidades de la interfaz.
Los patrones de entidades y agregados clasifican los datos de forma significativa. Por ejemplo, un sitio de comercio electrónico podría utilizar el patrón entidad para representar productos individuales y el patrón agregado para representar pedidos, que son colecciones de productos encargados por un comprador.
El almacenamiento en caché es una parte importante de muchas aplicaciones de microservicios, ya que puede ayudar a mejorar el rendimiento y reducir la carga en el backend. La mayoría de los proveedores de servicios en la nube (CSP) ofrecen a sus clientes un servicio de almacenamiento en caché gestionado.
El almacenamiento de objetos forma parte integral de muchas aplicaciones de microservicios, ya que permite almacenar y recuperar archivos y objetos de datos de gran tamaño. La mayoría de los CSP ofrecen un servicio de almacenamiento de objetos gestionado que puede utilizarse para almacenar y recuperar objetos para aplicaciones de microservicios.