Los desafíos de una arquitectura de micro servicios

  • Hybrid IT

equipo-dispositivos

Los microservicios ciertamente no son una solución milagrosa, ni una solución mágica a todos sus problemas. Es por eso que solo se debe pasar a una arquitectura de microservicios solo si realmente beneficiará a la organización.

Hay muchos desafíos a considerar. Los sistemas distribuidos son uno de ellos. De hecho, son complejos de probar, complejos de implementar y administrar, complejos de comprender en su conjunto. Por lo tanto, no debe subestimar la creciente complejidad.

Los equipos también suelen terminar con algo más parecido a un "monolito distribuido" que a microservicios verdaderamente desacoplados, donde efectivamente tienen una colección de servicios más pequeños pero aún estrechamente integrados, continúa. Eso lleva a los equipos a meterse en un lío en el que no pueden implementar un servicio de forma independiente sin tener que implementar también algunos otros, o donde un cambio en un servicio rompe con frecuencia la funcionalidad de otros servicios. Por lo tanto, puede terminar con lo peor de ambos mundos: la complejidad de trabajar con servicios separados, pero ninguna de las ventajas que brindaría una arquitectura poco acoplada.

Además, otro aspecto importante que a menudo se pasa por alto hasta que los equipos comienzan a trabajar con microservicios es la experiencia del desarrollador. Por lo general, es bastante fácil ejecutar su aplicación monolítica en la computadora portátil de un desarrollador, pero ¿qué hay de intentar ejecutar decenas o cientos de microservicios en esa misma computadora portátil? Los desarrolladores se frustran cuando su máquina se detiene, lo que interrumpe su flujo cuando trabajan con TDD, o tal vez ni siquiera es posible ejecutar todo el sistema en la máquina de un desarrollador.

Finalmente, la última preocupación es la expansión tecnológica. Es genial que cada equipo pueda usar cualquier tecnología apropiada para construir sus microservicios, pero aún necesita algún tipo de restricciones. La estandarización es importante para permitir que los equipos aprendan unos de otros, reutilicen el código cuando corresponda, etc. 

Algunos desafíos para migrar a una arquitectura de microservicios:

  • Es difícil organizar una gran cantidad de microservicios.
  • Comprender, administrar y probar las dependencias es difícil.
  • Los patrones de software (encapsulaciones y similares) no proporcionan una abstracción de servicio uniforme.
  • El flujo de mensajes aumenta con la cantidad de microservicios y obstaculiza el rendimiento.
  • El control de versiones de la interfaz de servicio debe administrarse para los múltiples servicios

La complejidad es uno de los mayores desafíos que vienen con los microservicios. De hecho, un gran poder conlleva una gran responsabilidad. La arquitectura de microservicio trae muchas piezas de software que intentan trabajar todas juntas para intentar resolver un problema.