Ir al contenido principal

Microservicios

Son servicios creados en función de las capacidades de la empresa con una gestión centralizada mínima.

¿Qué es?

Los microservicios o la arquitectura de microservicios es un enfoque arquitectónico en el que un sistema posee varios componentes más pequeños que pueden desplegarse de manera independiente y están acoplados de forma imprecisa. Estos componentes o servicios más pequeños se crean en función de la capacidad de la empresa con una gestión centralizada mínima. Básicamente, es el enfoque opuesto a la arquitectura monolítica, en la que un sistema se crea como una sola unidad. El diagrama a continuación muestra la comparación:

Propuesta de valor de la capacidad

Uno de los argumentos más conocidos a favor de los microservicios es que son fáciles de mantener. Las arquitecturas de los sistemas monolíticos se pueden volver rígidas, lo que dificulta el soporte y, a su vez, los cambios en el sistema. Los sistemas críticos de las empresas como estos pueden causar una agilidad deficiente en la empresa. En una arquitectura de microservicios, los equipos se unifican con los microservicios y, al igual que el microservicio, no necesitan ocuparse del resto del sistema. Esto facilita las actualizaciones ligeras e independientes y los cambios que son fáciles de gestionar, ya que los cambios de los microservicios no dependen de pruebas generales en todo el sistema.

Otra ventaja de los microservicios radica en la fiabilidad de todo el sistema. Como los servicios se despliegan de manera independiente y se acoplan de forma imprecisa, una falla en un microservicio no afectará a los otros servicios directamente. Puede haber problemas en el flujo de los datos desde un microservicio con fallas hacia otros; no obstante, en general, los microservicios libres de errores continúan funcionando. La posibilidad de recuperar el microservicio con fallas puede ser más fácil debido a que solo se necesita recuperar una unidad independiente. Por lo general, los servicios se despliegan en contenedores ligeros, como Docker, por lo que el tiempo de recuperación es muy reducido.

Otro beneficio importante de la arquitectura de microservicios es la escalabilidad. En lugar de tener que escalar todo el sistema, se puede escalar un servicio particular para satisfacer la demanda. En consecuencia, los costes son menores en comparación con los de una arquitectura monolítica ampliamente escalable, en la que se necesita escalar o tener disponible un único componente.

Usos habituales o casos de uso

La arquitectura de microservicios se está usando cada vez más en varias industrias debido a los beneficios que se mencionaron anteriormente. No obstante, es más adecuada para los sistemas complejos con múltiples elementos móviles. La propuesta de valor es menos atractiva para soluciones más pequeñas y simples que no cambian con frecuencia.

El caso de uso más frecuente de los microservicios suele originarse con la refactorización de aplicaciones antiguas. Por lo general, las empresas tienen un código base antiguo por muchos años y comienzan a sentir las complicaciones al momento de hacer cambios ágiles. La reconstrucción de aplicaciones como estas en una arquitectura de microservicios se vuelve una propuesta atractiva en comparación con realizar proyectos costosos y lentos cada vez que se necesita un cambio.

Otro caso de uso frecuente de los microservicios ocurre con las aplicaciones de procesamiento de datos en tiempo real. Los servicios que son ligeros, fáciles de escalar, y están ampliamente disponibles benefician a las aplicaciones como las de los servicios bancarios electrónicos y los sistemas de radar y de control de tráfico que operan en tiempo real.

Prácticas de implementación recomendadas

Hay diversas recomendaciones a tener en cuenta al implementar microservicios.

  • Principio de responsabilidad única: los microservicios se deben modelar para que solo tengan una responsabilidad y, por ende, una sola razón para cambiar. De esta manera, los servicios se pueden explicar, comprender, e implementar con mayor facilidad.
  • Almacén de datos independiente: si hay una base de datos monolítica única y compartida, no tiene sentido tener microservicios. Cualquier cambio o período de inactividad de la base de datos impactaría en todos los microservicios que usen la base de datos. 
  • Use la comunicación asincrónica para lograr un acople impreciso: con el fin de evitar crear una red de componentes con una conexión sólida, tiene la opción de usar la comunicación asincrónica entre los microservicios. La mejor opción es usar los eventos para la comunicación entre los microservicios.
  • Usar un Portal de la API: en lugar de que cada microservicio en el sistema ejecute las funciones de la autenticación de API, registro de respuesta/solicitud, y regulación, contar con un Portal de la API que se ocupe de estas tareas de forma anticipada añadirá un gran beneficio. 
  • Infraestructura dedicada: aislar la infraestructura del microservicio de otros componentes para ayudar a aislar las fallas y lograr el mejor rendimiento.
  • Serie de versiones individuales: los microservicios deben contar con su propio vehículo de versión individual que no esté vinculado a otros componentes de la empresa.
  • Generación de estándares: mientras que los microservicios te brindan la libertad de desarrollar y lanzar versiones de manera independiente, algunos estándares requieren un control para resolver inquietudes interrelacionadas de modo que los equipos no pierdan tiempo en crear soluciones únicas para cada una de estas. Esto es de suma importancia en una arquitectura distribuida como los microservicios, donde necesitas poder conectar todas las piezas del rompecabezas para ver el panorama general. En consecuencia, las soluciones empresariales son necesarias para API Security, la acumulación de registros, el monitoreo, la documentación de API, la gestión de secretos y configuraciones, el control distribuido, etc.

¿En qué se diferencian las tecnologías?

Al implementar microservicios, es clave considerar la estructura de organización de la empresa y la comprensión correspondiente de las repercusiones de adoptar esta arquitectura. Un enfoque de microservicios es más que una tecnología. La tecnología posibilita y mejora el enfoque, aunque es la empresa la que implementa el enfoque de microservicios. Un modelo operativo es un componente clave para que la capacidad de microservicios sea exitosa y le proporcione al «equipo» la responsabilidad total sobre un microservicio. Esto implica que el equipo necesitará muchas capacidades como DevOps, diseño, desarrollo, e integración. Los equipos no deberían tener la necesidad de comunicarse con sectores diferentes y deberían poder enfocarse únicamente en experimentar y crear nuevas características del servicio particular.

También se debe considerar si los microservicios son realmente el enfoque adecuado. Las arquitecturas monolíticas aún se utilizan y son bastante menos complicadas que la suma de todos los microservicios. El total de los costes de los microservicios puede ser mucho más alto en general, no solo en cuanto a la cantidad de recursos necesarios, sino también en cuanto a los costes de los recursos individuales, los cuales pueden ser mucho más altos cuando consideramos roles como los arquitectos de DevOps y especialistas de automatización. La inversión es conveniente cuando hay un beneficio importante, pero puede ser costoso para sistemas simples y estables que no necesitan demasiados cambios.

La gestión de los microservicios es otro aspecto a considerar. Los servicios se pueden multiplicar en poco tiempo y producir problemas similares a los del estilo de integración punto a punto que se usaba anteriormente, en el que no estaba claro cuál servicio se comunicaba con cuál otro, ni cuál sería el impacto si un servicio no estaba disponible. Es importante preparar una estrategia para gestionar los microservicios desde el comienzo y crear estándares adecuados y principios de seguridad antes del desarrollo.

Se debe considerar la integración al analizar la arquitectura de microservicios. Como se detalló anteriormente, se recomienda un enfoque asincrónico y preferentemente basado en los eventos, aunque no siempre sea posible o no tenga sentido. Nuevamente, esta es un área que se debe explorar y planificar con anticipación para garantizar que el enfoque de integración cumpla con las necesidades de la empresa. La comunicación es fundamental para el éxito de los microservicios. Después de todo, no sirve de nada que los componentes no puedan comunicarse entre ellos. El proceso comercial o recorrido general debe mapearse de manera anticipada para conocer dónde tiene sentido el enfoque sincrónico/asincrónico y dónde debe mantenerse el estado. 

¿Por qué elegir Chakray?

Chakray es especialista en las arquitecturas de microservicios, en particular en la comunicación entre ellos. Tenemos experiencia en el diseño, el desarrollo, y la propiedad de microservicios para empresas, así como en el establecimiento de las capacidades de microservicios. En Chakray somos expertos en el lenguaje común de los desarrollos de microservicios como Java, Python, Ballerina, y .NET, pero también en una variedad de tecnologías para la gestión, la comunicación, y el seguimiento de microservicios como WSO2, Gravitee, Confluent Kafka, Kubernetes, y Docker, entre otros.

Puede que te interese...

Más información y lecturas sobre temas relacionados con esta página.

Ebook

Conoce cómo implementar una arquitectura de microservicios

Las arquitecturas de microservicios (o microservices) están cada día más cerca de convertirse en un estándar a la hora de desarrollar

Chakray
Editing Team
Swapnil Bankar
Integrator Architect

Habla con nuestros expertos

Habla con nosotros sobre las capacidades que quieres implantar o mejorar en tu organización

Contáctanos