Tutorial de microservicios: ¿Qué es? Architectura y ejemplo

⚡ Resumen inteligente

Los microservicios son un patrón de arquitectura orientada a servicios en el que una aplicación se construye como una colección de pequeñas unidades de servicio independientes. Este recurso explica la arquitectura monolítica frente a la de microservicios, sus diferencias, desafíos, una comparación con SOA, herramientas populares y mejores prácticas.

  • 🧩 Concepto principal: Los microservicios descomponen una aplicación en módulos de una sola función, que se pueden implementar de forma independiente, y cada uno de ellos es propiedad de un pequeño equipo de entre 5 y 10 desarrolladores.
  • 📦 Contraste monolítico: Una aplicación monolítica agrupa todas las funcionalidades en un solo paquete en un único servidor, por lo que la escalabilidad implica ejecutar varias copias completas.
  • ???? ️ Microservicio Architectura: Cada servicio gestiona una funcionalidad empresarial, se ejecuta en su propia instancia y se comunica mediante protocolos ligeros y sin estado.
  • 🗄️ Datos federados: Cada microservicio posee su propio almacén de datos, por lo que un cambio en el modelo de datos de un servicio no afecta a los demás.
  • 🛠️ Herramientas y prácticas: Herramientas como WireMockDocker e Hystrix admiten pruebas, despliegue y tolerancia a fallos; mantenga cada servicio sin estado con su propia compilación.

Tutorial de microservicios

¿Qué son los Microservicios?

Microservicios es un patrón de arquitectura orientada a servicios en el que las aplicaciones se construyen como una colección de varias unidades de servicio independientes más pequeñas. Ingeniería de software Enfoque que se centra en descomponer una aplicación en módulos de una sola función con interfaces bien definidas. Estos módulos pueden implementarse y operarse de forma independiente por pequeños equipos que son dueños de todo el ciclo de vida del servicio.

El término “micro” se refiere al tamaño de un microservicio, que debe ser gestionable por un único equipo de desarrollo (de 5 a 10 desarrolladores). En esta metodología, las aplicaciones grandes se dividen en las unidades independientes más pequeñas.

¿Qué es monolítico? Archi¿Tectura?

En términos sencillos, se puede decir que la arquitectura monolítica es como un gran contenedor donde todos los componentes de software de una aplicación se agrupan en un solo paquete. Analicemos un ejemplo de una tienda de comercio electrónico en el contexto de una arquitectura monolítica.

Monolítico ArchiTecnología de la aplicación de comercio electrónico.

Monolítico ArchiTecnología de la aplicación de comercio electrónico.

En cualquier aplicación de comercio electrónico, existen algunas funciones estándar como Búsqueda, RevVista y calificaciones, y pagos. Estas funciones son accesibles para los clientes que utilizan su navegador o aplicaciones. Cuando el desarrollador del sitio de comercio electrónico implementa la aplicación, es una única unidad monolítica. El código para diferentes funciones como la búsqueda, RevLas funciones de visualización, calificaciones y pagos se encuentran en el mismo servidor. Para escalar la aplicación, es necesario ejecutar varias instancias (servidores) de estas aplicaciones.

¿Qué es el microservicio? Archi¿Tectura?

Microservicio Architectura es un estilo de desarrollo arquitectónico que permite construir aplicaciones como una colección de pequeños servicios autónomos desarrollados para un dominio empresarial. Es una variante de la arquitectura de estilo estructural que ayuda a organizar las aplicaciones como una colección de servicios acoplados de forma flexible. El microservicio Architecture contiene servicios detallados y protocolos ligeros.

Tomemos como ejemplo una aplicación de comercio electrónico desarrollada con arquitectura de microservicios. En este ejemplo de arquitectura de microservicios, cada microservicio se centra en una única funcionalidad empresarial. Búsqueda, Calificación y Review y Payment tienen cada uno su instancia (servidor) y se comunican entre sí.

Microservicios Architectura

Microservicios Architectura

En el monolítico ArchiEn la arquitectura, todos los componentes se fusionan en un único módulo. Pero en los microservicios ArchiEn cuanto a la arquitectura, se distribuyen en módulos individuales (microservicios) que se comunican entre sí, como se muestra en el ejemplo de microservicios anterior.

La comunicación entre microservicios es una comunicación sin estado donde cada par de solicitud y respuesta es independiente. Por tanto, los microservicios pueden comunicarse sin esfuerzo. En el microservicio ArchiEn la arquitectura, los datos están federados. Cada microservicio tiene su propio almacén de datos.

Microservicios versus monolíticos Architectura

MicroserviciosMonolítico Architectura
Cada unidad de toda la aplicación debe ser la más pequeña y debe poder cumplir un objetivo comercial específico.Un único código base para todos los objetivos empresariales.
El inicio del servicio es relativamente rápido.La puesta en marcha del servicio requiere más tiempo.
Aislar las fallas es fácil. Incluso si un servicio falla, los demás pueden seguir funcionando.El aislamiento de fallos es difícil. Si alguna función específica deja de funcionar, todo el sistema se cae. Para solucionar este problema, es necesario reconstruir, volver a probar y volver a implementar la aplicación.
Todos los microservicios deben estar débilmente acoplados para que los cambios realizados en uno no afecten a los demás.La arquitectura monolítica está estrechamente acoplada. Los cambios en un módulo de código afectan a los demás.
Las empresas pueden destinar más recursos a los servicios que generan un mayor retorno de la inversión.Dado que los servicios no están aislados, no es posible la asignación individual de recursos.
Se podrían asignar más recursos de hardware al servicio que se usa con mayor frecuencia. En el ejemplo de comercio electrónico anterior, más usuarios consultan el listado de productos y realizan búsquedas que los pagos, por lo que se podrían asignar más recursos al microservicio de búsqueda y listado de productos.El escalado de aplicaciones es un desafío y un desperdicio.
Los microservicios siempre se mantienen consistentes y disponibles de forma continua.Las herramientas de desarrollo se sobrecargan, ya que el proceso debe comenzar desde cero.
Los datos están federados. Esto permite que cada microservicio adopte el modelo de datos que mejor se adapte a sus necesidades.Los datos están centralizados.
Equipos pequeños y especializados. Desarrollo paralelo y más rápido.Se requiere un equipo numeroso y un esfuerzo considerable por parte de su gestión.
El cambio en el modelo de datos de un Microservicio no afecta a otros Microservicios.Un cambio en el modelo de datos afecta a toda la base de datos.
Interactúa con otros microservicios mediante interfaces bien definidas.No aplica.
Los microservicios funcionan bajo el principio de centrarse en los productos, no en los proyectos.Hace hincapié en todo el proyecto.
No hay dependencias cruzadas entre bases de código. Puede utilizar diferentes tecnologías para diferentes Microservicios.Una función o programa depende de otros.

Desafíos de los microservicios

  • Los microservicios dependen unos de otros y tendrán que comunicarse entre sí.
  • En comparación con los sistemas monolíticos, existen más servicios para monitorear que se desarrollan utilizando diferentes lenguajes de programación.
  • Como es un sistema distribuido, es un modelo inherentemente complejo.
  • Los distintos servicios tendrán sus propios mecanismos, lo que dará como resultado una gran cantidad de memoria para datos no estructurados.
  • Para evitar que los problemas se propaguen, se requiere una gestión eficaz y trabajo en equipo.
  • Reproducir un problema será una tarea difícil cuando este desaparece en una versión y reaparece en la última versión.
  • El despliegue independiente se complica con los microservicios.
  • La arquitectura de microservicios conlleva una gran sobrecarga operativa.
  • Resulta difícil gestionar la aplicación cuando se añaden nuevos servicios al sistema.
  • Se requiere una amplia gama de profesionales cualificados para dar soporte a microservicios distribuidos de forma heterogénea.
  • El microservicio es costoso, ya que es necesario mantener diferentes espacios de servidor para diferentes tareas comerciales.

SOA versus microservicios

Los servicios SOA se mantienen en la organización mediante un registro que actúa como un directorio. Las aplicaciones necesitan buscar los servicios en el registro e invocar el servicio. En otras palabras, SOA Es como una orquesta donde cada artista toca con su instrumento mientras el director musical da instrucciones a todos.

Por otro lado, los microservicios son una forma de arquitectura orientada a servicios (SOA) en la que las aplicaciones se construyen como una colección de diferentes servicios más pequeños, en lugar de un único software o aplicación. Los microservicios son como una compañía de danza donde cada bailarín es independiente y sabe lo que tiene que hacer. Así, si se equivocan en algún paso, saben cómo retomar la secuencia correcta. A continuación, se presenta una comparación detallada entre SOA y microservicios.

ParámetroSOAMicroservicios
Tipo de diseñoEn SOA, los componentes de software están expuestos al mundo exterior para su uso en forma de servicios.Micro Service es parte de SOA. Es una implementación de SOA.
DependenciaLas unidades de negocio son dependientes.Son independientes entre sí.
Tamaño del softwareEl tamaño del software es mayor que el de cualquier software convencional.En las arquitecturas de microservicios, el tamaño del software siempre es pequeño.
Pila de tecnologíaLa pila de tecnología es menor en comparación con el microservicio.La pila de tecnología de microservicios podría ser muy grande.
Naturaleza de la aplicaciónDe naturaleza monolítica.De naturaleza full stack.
Independiente y enfocadoLas aplicaciones SOA están diseñadas para realizar múltiples tareas comerciales.Están diseñados para realizar una única tarea comercial.
DespliegueEl proceso de despliegue requiere mucho tiempo.La implementación es sencilla y requiere menos tiempo.
Relación coste-eficaciaMás rentable.Less económico.
Escalabilidad organizacionalLess en comparación con los microservicios.Altamente escalable.
Lógica de negociosLos componentes de la lógica de negocio se almacenan dentro de un único dominio de servicio, con protocolos de comunicación sencillos (HTTP con XML o JSON) y controlados por API con SDK/clientes.La lógica de negocio puede residir en diferentes dominios, con capas similares a un bus de servicios empresariales entre los servicios (middleware).

Herramientas de microservicios

1) Wiremock: Prueba de microservicios

WireMock Es una biblioteca flexible para simular y reproducir servicios web. Permite configurar la respuesta que devuelve la API HTTP al recibir una solicitud específica. También se utiliza para probar microservicios.

Enlace de descarga: http://wiremock.org/

2) acoplador

Docker es un proyecto de código abierto que permite crear, desplegar y ejecutar aplicaciones mediante contenedores. Al usar estos contenedores, los desarrolladores pueden ejecutar una aplicación como un único paquete. Permite distribuir bibliotecas y otras dependencias en un solo paquete.

Enlace de descarga: https://www.docker.com/

3) Hystrix

Hystrix es un sistema tolerante a fallos. Java Biblioteca. Esta herramienta está diseñada para separar los puntos de acceso a servicios remotos, sistemas y bibliotecas de terceros en un entorno distribuido como el de microservicios. Mejora el sistema general al aislar los servicios que fallan y prevenir el efecto en cascada de las fallas.

Download Link: https://github.com/Netflix/Hystrix

Mejores Prácticas de Microservicios Architectura

  • Almacenamiento de datos independiente para cada microservicio.
  • Mantén el código con un nivel de madurez similar.
  • Compilación independiente para cada microservicio.
  • Trate siempre cada servidor como si no tuviera estado.

Preguntas Frecuentes

Las capacidades de IA suelen presentarse como microservicios individuales, lo que permite a las aplicaciones invocar un modelo a través de una API sin necesidad de integrarlo. La IA también impulsa el enrutamiento inteligente, el escalado automático y la detección de anomalías en numerosos servicios.

Sí. Las herramientas de observabilidad impulsadas por IA correlacionan registros, métricas y traces a través de los servicios para detectar fallas, predecir cuellos de botella y localizar la causa raíz más rápidamente que el análisis manual en un sistema distribuido grande.

Los microservicios se clasifican generalmente en sin estado y con estado. Los microservicios sin estado no retienen datos entre solicitudes, mientras que los microservicios con estado mantienen datos o el estado de la sesión, a menudo respaldados por su propio almacén de datos dedicado.

Grandes empresas tecnológicas como Netflix, Amazon, Uber y Spotify Utilice microservicios para escalar de forma independiente y realizar despliegues frecuentes. Este enfoque es ideal para aplicaciones nativas de la nube con alto tráfico que requieren lanzamientos rápidos y aislados.

Resumir este post con: