Ir al contenido principal

Microservicios: conceptos

La arquitectura de microservicios se utiliza para desarrollar aplicaciones más escalables y flexibles. En lugar de tener una sola aplicación monolítica, se divide en múltiples servicios pequeños y independientes que se pueden desarrollar, probar y desplegar de forma independiente. Esto permite una mayor eficiencia en el desarrollo, ya que cada equipo puede trabajar en un servicio específico sin afectar al resto de la aplicación. También facilita el escalamiento y la resolución de problemas, ya que si un servicio falla, solo afecta a ese servicio y no a toda la aplicación.



La mejor forma de dividir una aplicación en microservicios depende del caso específico y de los requisitos de la aplicación. Sin embargo, hay algunas prácticas recomendadas que pueden ayudar a dividir una aplicación en microservicios:

  1. Por responsabilidad: Cada servicio debe tener una responsabilidad específica y no debería estar sobrecargado con múltiples funciones.
  2. Por lógica de negocio: Los servicios deben estar organizados en torno a la lógica de negocio y no a la tecnología.
  3. Por independencia: Los servicios deben ser independientes entre sí y no deberían depender fuertemente de otros servicios.
  4. Por tamaño: Los servicios deben ser lo suficientemente pequeños para que puedan ser desarrollados, probados y desplegados de forma independiente.
  5. Por escalabilidad: Los servicios deben ser escalables de forma independiente para permitir el escalado de algunos servicios sin afectar al rendimiento de otros.

Es importante recordar que la arquitectura de microservicios es una estrategia de desarrollo de software, y como tal, debe ser revisada y adaptada a medida que se evoluciona la aplicación y los requisitos cambian.

En una arquitectura de microservicios, cada microservicio se encarga de una tarea específica, como la gestión de usuarios, el catálogo de productos, etc. Las API REST se utilizan para exponer esos servicios de manera que puedan ser accedidos y utilizados por aplicaciones externas.

Uno de los principales beneficios de utilizar API REST con microservicios es que permite una mayor flexibilidad y escalabilidad. Cada microservicio puede ser desarrollado, probado y desplegado de forma independiente, y las API REST proporcionan una interfaz estandarizada para acceder a esos servicios. Esto permite que los desarrolladores de aplicaciones externas puedan utilizar los servicios de manera fácil y consistente, independientemente de la tecnología subyacente.

Juntos, los microservicios y las API REST permiten una mayor escalabilidad, flexibilidad y reutilización del código.

Al planificar una arquitectura de microservicios, algunos patrones de diseño comunes y relevantes son:

  1. Strangler pattern: es un patrón útil para realizar una migración desde una aplicación monolitica a conjunto de microservicios, y consiste en ir reemplazando gradualmente partes de una aplicación monolítica existente con microservicios, sin interrumpir la funcionalidad existente.
  2. Gateway pattern: hace uso de una puerta de enlace o gateway para centralizar la lógica de seguridad, autenticación y enrutamiento de peticiones hacia los servicios.
  3. Sidecar pattern: configura ejecución de un segundo servicio junto con un servicio existente, para proporcionar funcionalidades como seguridad, registro o balanceo de carga.
  4. BFF pattern (Backend for Frontend): aconseja usar un servicio específico para atender las necesidades de una aplicación cliente específica, en lugar de exponer toda la funcionalidad de los servicios a través de una sola API.
  5. CQRS pattern (Command Query Responsibility Segregation): define separación de la lógica de lectura y escritura en servicios diferentes, con el objetivo de escalar y optimizar la performance de cada uno de ellos.
  6. Event-Driven pattern: propone usar la emisión y escucha de eventos como método de comunicación entre servicios, en lugar de invocar servicios directamente.

Es importante tener en cuenta que estos patrones son solo herramientas para ayudar en la planificación y diseño de una arquitectura de microservicios, y su aplicación dependerá de cada caso específico y de los requerimientos de la aplicación.

Algunos errores comunes al diseñar un sistema de microservicios incluyen:

  1. Monolítica: dividir una aplicación monolítica en microservicios sin una estrategia clara puede llevar a una complejidad aumentada y una mayor dificultad para implementar y mantener el sistema.
  2. Comunicación: la comunicación entre microservicios puede ser un desafío, especialmente si no se implementa correctamente. Esto puede llevar a problemas de rendimiento y escalabilidad.
  3. Sobrecarga de configuración: configurar demasiados microservicios puede ser abrumador y difícil de mantener, lo que puede dificultar el despliegue y la gestión del sistema.
  4. Falta de monitorización: la falta de monitorización adecuada de los microservicios puede dificultar la identificación y resolución de problemas en el sistema.
  5. Falta de estandarización: la falta de estandarización en la implementación de microservicios puede llevar a problemas de compatibilidad y escalabilidad a medida que el sistema crece.

Comentarios