De Monolítico a Microservicios

Abstracto

La sincronización de procesos, datos y llamadas entre microservicios es el pilar de esta nueva tendencia, sin embargo, son temas tan nuevos para la industria y más para las startups que necesitan este poder en un equipo pequeño. Es por eso que esta platica es ese pequeño empujón para este gran viaje.

Descripción

La definición de un sistema monolítico, según wikipedia es: Son aquellos sistemas en los que su centro es un grupo de estructuras fijas, las cuales funcionan entre sí.

Esto quiere decir, en un lenguaje más técnico, que todas las reglas de negocio, validaciones, transacciones y demás componentes del negocio están dentro del mismo servidor y utilizando la misma base de datos para eficientar la generación de reportes.

El problema de un sistema monolítico es que su crecimiento esta optimizado por el recurso más costoso, por ejemplo:

Tienes una empresa que se dedica a crear montajes de tu cara en imagenes graciosas.

Tu sistema tiene una API la cual solo posee 1 servicio para enviar tu imagen,después se procesa para extraer tu rostro y al final se adiere ese rostro a otra imagen de stock.

Este proceso corre sobre 1 hilo y además el proceso es lineal, esto quiere decir que, para poder realizar otro proceso, primero tienes que esperar a que el proceso anterior haya terminado (una conexión en serie)

Con este ejemplo en mente, además de tener un error de diseño de software el servidor depende de más poder computacional para poder procesar las imagenes y el crecimiento de los servidores dependerá de ese poder y aunque tengas otras 100 apis que no consuman tantos recurso, todas dependeran del servicio con mas necesidad computacional.

En los sistemas de microservicios es completamente distinto, cada microservicio esta diseñado para operar como si fuera una sola aplicación, esto quiere decir que puedes tener la siguiente arquitectura:

Docker 1

Web service

Docker 2

Queue system

Docker 3

Redis server

Docker 4

Facial recognition

De esta forma el Docker 4 puede tener más capacidad computacional y mas replicas que el Docker 1 ya que las necesidades son distintas.

Objetivo de la charla

En Urbvan estamos realizando la migración de nuestro sistema monolítico a uno de microservicios, sin embargo, el aprendizaje que hemos tenido que adquirir y los recursos que tuvimos que contratar para lograr hacer una migración limpia y sin tantos errores en la implementación ha sido algo que nos gustaría compartir para que todas las empresas que están en el mismo proceso puedan entender la necesidad de su negocio y si quieren escalar no preguntar "¿Por donde comienzo?".