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.
¿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.
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
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
| Microservicios | Monolí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ámetro | SOA | Microservicios |
|---|---|---|
| Tipo de diseño | En 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. |
| Dependencia | Las unidades de negocio son dependientes. | Son independientes entre sí. |
| Tamaño del software | El 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ía | La 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ón | De naturaleza monolítica. | De naturaleza full stack. |
| Independiente y enfocado | Las aplicaciones SOA están diseñadas para realizar múltiples tareas comerciales. | Están diseñados para realizar una única tarea comercial. |
| Despliegue | El proceso de despliegue requiere mucho tiempo. | La implementación es sencilla y requiere menos tiempo. |
| Relación coste-eficacia | Más rentable. | Less económico. |
| Escalabilidad organizacional | Less en comparación con los microservicios. | Altamente escalable. |
| Lógica de negocios | Los 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.



