Es muy común en estos días escuchar hablar de arquitecturas distribuidas basadas en microservicios y como esto se fue convirtiendo en un must para el desarrollo de sistemas.. pero qué es esta nueva tendencia? cómo se hacía antes?

Partiendo de una base conceptual, es un método de desarrollo de software que consiste en construir una aplicación como un conjunto de pequeñas subaplicaciones (servicios), con funciones bien definidas e independientes entre sí.

Mientras que en una Arquitectura Monolítica (así se llama a la manera de construcción de las antiguas aplicaciones) tendríamos en una sola aplicación el manejo de usuarios, funcionalidades de negocio, logs, interface de usuario, etc., en una Arquitectura de Microservicios tendríamos segregadas esas funcionalidades en distintas y pequeñas aplicaciones específicas llamadas Microservicios donde a través de APIs lograrían el punto de integración para sistemas clientes que deseen utilizar combinaciones de microservicios para lograr funcionalidades más complejas.

En este caso, cada microservicio ejecuta su propio proceso y se encarga de implementar una funcionalidad completa del negocio. Puede estar programado en distintos lenguajes y usar diferentes tecnologías de almacenamiento de datos.

¿Qué hace especial a los Microservicios?

  • Cada microservicio se puede desplegar de forma independiente sin afectar a los demás.
  • Es más fácil de escalar a nivel de software, ya que en lugar de replicar toda la aplicación, replicaremos los servicios que requieran más recursos.
  • Podemos utilizar diferentes lenguajes de programación y base de datos dentro de cada microservicio.
  • Los clientes no necesitan conocer su firma ya que se comunicarían a través de las APIs

Al mantener las funcionalidades aisladas reducimos el riesgo en las distintos desarrollos, ya que la hora de hacer un despliegue, cada servicio se hace de forma independiente. La arquitectura de Microservicios aumenta también la escalabilidad por permitir el uso de enfoques como el auto-escalamiento y el despliegue en contenedores independientes.

APIs y microservicios están muy relacionados, pues el estándar es utilizar una interfaz de APIs totalmente dirigida a RESTful. Sin embargo, actualmente todavía enfrentamos algunos problemas cuando necesitamos integrar con sistemas legados para externalizar funcionalidades como servicios, pues la mayoría de los sistemas no tienen protocolos como WebServices o interfaces RESTful.

¿Por qué usar APIs?

Las APIs garantizan el aislamiento a los microservicios y orquestan entre ellos cuando deben invocarse a más de uno para cubrir una funcionalidad. Las garantías de aislamiento y las APIs son los elementos más importantes de los microservicios.

El aislamiento permite a los desarrolladores iterar de forma rápida e independiente. Sin embargo, los desarrolladores deben mantener la compatibilidad con la API para que otros microservicios no se vean afectados (y crean dependencias que ralentizan las iteraciones).

¿Qué tener en cuenta?

  • No todos los servicios son microservicios. Al comenzar a trabajar en microservicios debes asegurarte que estén adecuadamente desacoplados. Si están fuertemente acoplados no será posible escalarlos de manera individual.
  • No empieces con muchos servicios al mismo tiempo. Empieza poco a poco, con las funcionalidades clave y hazlo evolucionar.
  • Diseña pequeñas aplicaciones que sean totalmente independiente de todo lo demás y busca luego su orquestación a través de APIs

¿Cuáles son los beneficios de una arquitectura de APIs & Microservicios?

  • Mejor escalabilidad. Los microservicios se pueden replicar con facilidad, lo cual permite que nuestra aplicación pueda crecer con mayor rapidez y que de un mejor servicio.
  • Mayor facilidad de implementación. Las aplicaciones basadas en microservicios son más modulares, por lo que su implementación es más ágil y sencilla que cuando se trataba de una aplicación monolítica.
  • Innovación rápida.  En lugar de tener que esperar los años que exige el desarrollo tradicional de software podrás adoptar continuamente la última y mejor tecnología a medida que evoluciona.
  • Agilidad en cambios. Cada microservicio puede estar desarrollado sobre una tecnología diferente, por lo que en cada momento podrás elegir la mejor tecnología para la aplicación.
  • Aplicación más independiente. Cada micro servicio es totalmente independiente, por lo que seguir el código es más fácil que si tratase de una aplicación integral.
  • Time to Market. Si comienza con una arquitectura flexible, extensible y basada en microservicios, lanzarás más rápido que si intentas implementar un gigante monolítico de software.
  • Menor riesgo.
    • Si los microservicios han sido bien desarrollados, no afectarán a los demás ante una falla.
    • Los elementos clave son la modularidad y la capacidad de reemplazo.

Rápidamente podemos identificar que el desarrollo basado en APIs y Microservicios tiene muchas ventajas, y si bien al comienzo demanda un esfuerzo repensar nuestras soluciones, es una arquitectura que puede implementarse de manera incremental y realizar su adopción en etapas.

Latest news

Check our latest articles to keep you posted!

Como les contamos en la primera parte, el primer webinar […]
El jueves pasado realizamos nuestro primer webinar, enfocado en herramientas […]
En Adviters fomentamos uno de nuestros valores principales a cualquier […]
?>