Tutorial de microservicios: ¿Qué es? Architectura y ejemplo
¿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 grandes aplicaciones se dividen en 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 en el que todos los componentes de software de una aplicación están agrupados en un solo paquete.
Analicemos un ejemplo de una tienda de comercio electrónico en el contexto de una arquitectura monolítica.

En cualquier aplicación de comercio electrónico, existen algunas funciones estándar como Búsqueda, RevVista y calificaciones y Pagos. Los clientes pueden acceder a estas funciones mediante 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 Búsqueda, RevLa vista, las calificaciones y los pagos están en el mismo servidor. Para escalar la aplicación, necesita 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 una arquitectura de microservicios. En este ejemplo de arquitectura de microservicios, cada microservicio se centra en una única capacidad empresarial. Búsqueda, calificación y RevVista y Pago tienen cada uno su instancia (servidor) y se comunican entre sí.
En el monolítico Architecture, todos los componentes se fusionan en un solo módulo. Pero, en Microservicios Architectura, 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 Architectura, los datos están federados. Cada Microservicio tiene su almacén de datos independiente. Siguiente en este Java Tutorial de microservicios, aprenderemos sobre la diferencia entre microservicios y arquitectura monolítica.
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. | Una base de código única para todos los objetivos comerciales |
El inicio del servicio es relativamente rápido | El inicio del servicio lleva más tiempo |
El aislamiento de fallas es fácil. Incluso si un servicio deja de funcionar, otros pueden seguir funcionando. | El aislamiento de fallas es difícil. Si alguna característica específica no funciona, el sistema completo deja de funcionar. Para solucionar este problema, es necesario volver a compilar, probar y volver a implementar la aplicación. |
Todos los microservicios deben tener un acoplamiento flexible para que los cambios realizados en uno no afecten al otro. | La arquitectura monolítica está estrechamente acoplada. Los cambios en un módulo de código afectan al otro. |
Las empresas pueden implementar más recursos en 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 utiliza con frecuencia. En el ejemplo de comercio electrónico anterior, una mayor cantidad de usuarios consultan la lista de productos y realizan búsquedas en comparación con los pagos. Por lo tanto, 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 permanecen consistentes y continuamente disponibles. | Las herramientas de desarrollo se sobrecargan ya que el proceso debe comenzar desde cero. |
Los datos están federados. Esto permite que el microservicio individual adopte el modelo de datos que mejor se adapte a sus necesidades. | Los datos están centralizados. |
Pequeños equipos enfocados. Desarrollo paralelo y más rápido | Se requiere un gran equipo y un esfuerzo considerable de gestión del equipo. |
El cambio en el modelo de datos de un Microservicio no afecta a otros Microservicios. | El cambio en el modelo de datos afecta a toda la base de datos. |
Interactúa con otros microservicios mediante el uso de interfaces bien definidas. | No es aplicable |
Los microservicios funcionan según el principio de centrarse en productos, no en proyectos. | Poner énfasis 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 diferentes servicios tendrán su mecanismo separado, lo que dará como resultado una gran cantidad de memoria para datos no estructurados.
- Se requiere una gestión eficaz y trabajo en equipo para evitar problemas en cascada
- Reproducir un problema será una tarea difícil cuando desaparece en una versión y vuelve a aparecer en la última versión.
- La implementación independiente es complicada con los microservicios.
- La arquitectura de microservicios conlleva una gran sobrecarga operativa.
- Es difícil administrar la aplicación cuando se agregan nuevos servicios al sistema.
- Se requiere una amplia gama de profesionales capacitados para respaldar 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 listado de directorio. Las aplicaciones deben buscar los servicios en el registro e invocar el servicio.
En otro mundo, 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 en la que las aplicaciones se construyen como una colección de diferentes servicios más pequeños en lugar de un solo software o aplicación.
Los microservicios son como una compañía en la que cada bailarín es independiente y sabe lo que tiene que hacer. Por lo tanto, si se saltan algún paso, saben cómo volver a la secuencia correcta. En este tutorial de arquitectura de microservicios, aprenderemos la diferencia entre SOA y microservicios.
Aquí hay 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. | El tamaño del Software siempre es pequeño en Microservicios |
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 | Pila completa en la naturaleza |
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 implementación lleva mucho tiempo. | La implementación es sencilla y requiere menos tiempo. |
Rentabilidad | Más rentable. | Less económico. |
Escalabilidad | Less en comparación con los microservicios. | Altamente escalable. |
Lógica de negocios | Los componentes de lógica empresarial se almacenan dentro de un dominio de servicio único. La API de protocolos de conexión simples (HTTP con XML JSON) se controla con SDK/clientes. | La lógica empresarial puede residir en dominios empresariales. Bus de servicios como capas entre servicios. Middleware. |
Herramientas de microservicios
1) Wiremock: Prueba de microservicios
WireMock es una biblioteca flexible para simular y simular servicios web. Puede configurar la respuesta devuelta por la API HTTP cuando recibe 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 nos permite crear, implementar y ejecutar aplicaciones mediante contenedores. Al utilizar estos contenedores, los desarrolladores pueden ejecutar una aplicación como un paquete único. Le permite enviar bibliotecas y otras dependencias en un solo paquete.
Enlace de descarga:https://www.docker.com/
3) Hystrix
Hystrix es una biblioteca Java con tolerancia a fallos. Esta herramienta está diseñada para separar puntos de acceso a servicios remotos, sistemas y bibliotecas de terceros en un entorno distribuido como Microservicios. Mejora el sistema general al aislar los servicios defectuosos y prevenir el efecto en cascada de las fallas.
Download Link:https://github.com/Netflix/Hystrix
Mejores Prácticas de Microservicios Architectura
- Almacén de datos separado para cada microservicio
- Mantenga el código de un nivel similar de madurez.
- Compilación separada para cada microservicio.
- Trate siempre – grave como apátrida.
Resumen
- Los microservicios son 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.
- Microservicio Architecture es un estilo de desarrollo arquitectónico que permite construir una aplicación como una colección de pequeños servicios autónomos desarrollados para un dominio empresarial.
- La arquitectura monolítica es como un gran contenedor en el que todos los componentes de software de una aplicación están agrupados en un solo paquete.
- En un microservicio, cada unidad de la aplicación completa debe ser la más pequeña y debe poder cumplir un objetivo comercial específico.
- En una arquitectura monolítica, una base de código grande puede ralentizar todo el proceso de desarrollo. Las nuevas versiones pueden tardar meses. El mantenimiento del código es difícil.
- Dos tipos de microservicios son 1) sin estado 2) con estado
- Microservicios en Java dependen unos de otros y tendrán que comunicarse entre sí. Le ayuda a enfatizar una característica específica y las necesidades comerciales.
- La arquitectura orientada a servicios, conocida brevemente como SOA, es una evolución de la computación distribuida basada en el modelo de diseño de solicitud o respuesta para aplicaciones sincrónicas y asincrónicas.
- En SOA, los componentes de software están expuestos al mundo exterior para su uso en forma de servicios, mientras que Micro Service es parte de SOA. Es una implementación de SOA.
- Wiremock, Docker y Hystrix son algunas herramientas de microservicios populares