¿Microservicios?

Lucila Levit
Nov 5 · 4 min read

Si es la primera vez que lees sobre microservicios, te podrías estar preguntando que significa esto y porque en la industria de la informática es tan revolucionario.

Si este es el caso, vayamos a un caso conocido; la industria automotriz. En sus orígenes, al querer construir un auto, utilizando una línea de montaje se arrancaba por la base y sobre esta se iba poniendo parte por parte hasta conseguir el auto listo para vender. La principal desventaja de esta configuración productiva eran los tiempos, ya que si una parte de la línea se frenaba o si algo se paraba el resto del auto seguía el mismo destino. Hoy en día, muchas empresas sino todas, utilizan un método conocido como personalización masiva, el cual consiste en la construcción modular de los productos. Esto vino a resolver varios problemas pero el mas importante es que si una parte se ve fallada o requiere algún arreglo no hay que desarmar todo y el resto sigue siendo funcional, trabajando de esta forma únicamente con módulos.

Análogamente, la producción por partes en la línea de montaje podrían ser las aplicaciones monolíticas. En este caso el auto es un todo y si algo se ve afectado todo el auto lo esta. Lo mismo pasa con estas aplicaciones donde todas las partes de la aplicación están contenidas en la misma aplicación, por lo que a la hora de modificar una parte de la aplicación, es necesario trabajar sobre el todo. En el segundo caso, cuando hablamos de personalización masiva podríamos compararlo con el concepto de microservicios, donde las aplicaciones se dividen en múltiples partes que se comunican entre sí. Cada una de estas partes es un servicio, cada servicio puede ir evolucionando independientemente de los otros sin interrumpirse.

Microservicios

Tal como se mencionó, los microservicios son un enfoque nativo en la nube, donde una sola aplicación se compone de muchos servicios más pequeños (microservicios). Cada microservicio puede utilizar cualquier el lenguaje que quiera. Esto permite que se puedan desarrollar distintos modelos y tomar funcionalidades ya desarrolladas independientemente del lenguaje en que hayan sido escritos para los distintos servicios. Los microservicios son lo que hoy en día, en varios lugares, están reemplazando a las aplicaciones monolíticas, donde se desarrollaba todo en una misma aplicación con una única base de datos y un sistema operativo.

Agilidad y ahorro de costos

Desarrollar una aplicación con microservicios permite que cada uno pueda escalar independientemente del otro, lo que reduce el costo de tener que modificar aplicaciones completas. Cambiar una línea de texto termina siendo algo muy simple, no como lo era al usar aplicaciones monolíticas. Microservicios implica agilidad, que no se da solo en la modificación de código, sino también en las metodologías de trabajo. Tener microservicios permite trabajar de a pequeños equipos multifuncionales, lo que genera agilidad.

Cuando se habla de microservicios, usualmente se lo asume como establecido en la nube. Esto se da ya que al tener los beneficios de disponibilidad, de ahorro de costos de implementación y de escalabilidad, permite aprovechar el modelo de pago por uso de los servicios de la nube, lo que termina generando una alta disminución de los costos.

Y, ¿qué tengo que tener en cuenta?

Para poder tomar ventaja de las posibilidades que nos brindan los microservicios debemos tener en cuenta distintos factores. Va a ser necesario cambiar la manera de trabajar, cada equipo podrá tener sus tiempos, y será responsable de un servicio específico para los clientes.

Si bien los servicios se desarrollan por separado, hay determinadas dependencias entre sí que se deben tener en cuenta a la hora del diseño.

También se debe poner el foco en las pruebas, que deben desarrollarse para cada servicio.

Al trabajar con distintos sistemas para cada servicio, hay que asegurarse que las nuevas versiones de los sistemas sean compatibles con las anteriores.

Hay que enfocarse en la automatización para la hora de implementación, los microservicios suelen tornarse complejos y agobiantes para el desarrollo manual.

No dejar de centralizar los registros para llevar control de la expansión de los sistemas.

Y por último sistematizar el monitoreo para no perder de vista las causas de los problemas.

¿Resultados?

Empresas como Netlfix, Ebay o PayPal implementaron los microservicios al entender la necesidad de escalar y de forma ágil. Más allá de que estos sean simples ejemplos de casos de éxito de su utilidad, sirven para tener en cuenta la mirada amplia de estas empresas, que pensando la meta de escalabilidad decidieron aplicar estas arquitecturas.

Los microservicios se están usando cada vez más para crear aplicaciones empresariales. Las soluciones en la nube son los principales impulsores de la adopción más amplia de microservicios. Utilizando el enfoque de microservicios, los desarrolladores también pueden llevar su agilidad al siguiente nivel, ya que mantienen una alta disponibilidad y confiabilidad del sistema. El enfoque de desarrollo monolítico ya no es suficiente para enfrentar los desafíos actuales y el cambio a microservicios se ha visto como la única forma en que el proceso de desarrollo podría hacerse más eficiente.