Arquitectura de Microservicios

Cuando empezamos a realizar nuestra aplicación del lado del servidor, es muy normal que se inicie como una Arquitectura Monolítica. ¿Y que significa Arquitectura Monolítica? Pues es aquel proyecto que trabaja con un solo lenguaje de programación y una única base de datos. Esta arquitectura es ideal cuando se trabaja un proyecto pequeño, pero ¿Que pasa cuando nuestro proyecto esta creciendo a gran escala? Bueno es debido decir, que una arquitectura monolítica se vuelve una limitante cuando acceden a la aplicación muchos usuarios, pues la aplicación debe ser capaz de soportar a esa gran cantidad de usuarios que acceden, así como la consulta rápida y respuesta inmediata del servidor, y es ahí donde entra el concepto de Microservicios.

¿Qué es Microservicios?

Es una arquitectura de microservicios que unifica a una aplicación como un conjunto de pequeños servicios. Lo que admite esta arquitectura es la variedad de clientes (navegadores de escritorio, móviles y aplicaciones móviles y nativas). La aplicación es capaz de manejar las solicitudes y mensajes HTTP durante la ejecución de la lógica y retorna una respuesta HTML/JSON/XML.

Algunas de sus características son

  • Los servicios se despliegan de manera independiente.
  • Cada servicio se enfoca en realizar una tarea en específico.
    • Cada servicio es soportado por un equipo y el equipo puede evolucionar su servicio, independientemente de los demás microservicios.
  • Código entendible.
    • Los servicios son pequeños, lo que vuelve su código entendible para los desarrolladores.
  • Puede utilizar varios lenguajes de programación y cada servicio cuenta con su propia base de datos.
  • Cuando un servicio se cae, la aplicación no se derriba sino que continua trabajando recibiendo y enviando solicitudes, con la diferencia de que tiene un servicio menos.

Los microservicios permiten a una empresa poder evolucionar su tecnología. La imagen muestra un ejemplo de Aplicación de comercio electrónico ficticia.

Entonces ... ¿Cuando debemos utilizar los microservicios?

En primera instancia cuando apenas hemos desarrollado la primera versión de nuestra aplicación, es poco probable que tenga problemas que puedan ser resueltas con microservicios, pues las nuevas empresas lo que buscan es iniciar con su lógica de negocios, sin embargo, cuando se a trabajado durante un tiempo considerable con el código, y la evolución de este es enorme, puede que empiecen los problemas, ya que, mantener una aplicación de gran tamaño y utilizando una arquitectura monolítica se vuelve complicado.

A pesar de ellos es importante tener en cuenta que no podemos migrar de una arquitectura monolítica a microservicios de un solo jalón, la transcisión a una nueva arquitectura se empieza de poco en poco. Y lo verdaderamente desafiante es ¿Cómo descomponer la aplicación en microservios?. Las siguientes estrategias pueden ser de mucha ayuda:

La siguiente imagen muestra la variedad de patrones que podemos toparnos al implementar una arquitectura de microservicios.

Conclusión

Algunas empresas de gran escala como lo son Netflix, Amazon, eBay han evolucionado, pues pasaron de tener una arquitectura monolítica a microservicios.

Netflix responsable de un 30% del tráficos de internet, recibe más de mil millones de llamadas a su API por día desde diferentes tipos de dispositivos.

Usar microservicios es una ópción que quizás debamos considerar cuando contamos con una aplicación gigantesca que reciba muchas peticiones al día, pues los microservicios nos brindan una arquitectura estructurada y ordenada, aunque no debemos de olvidar que la transición a microservicios no es nada fácil, lo que si es seguro que los servicios nos permitirán escalar y evolucionar nuestra aplicación conforme nuestra lógica de negocios así lo requiera.