Aprende en casa Ir a KODOTI
Aprende en casa KODOTI

¿Qué son los microservicios?

La arquitectura de microservicios es una propuesta para dividir el software en pequeños desarrollos haciéndolas más fácil de escalar e implementar.

Rodríguez Patiño, Eduardo
Rodríguez Patiño, Eduardo
2020-07-09 | 2,794 lecturas

Los microservicios es una arquitectura que busca separar el software en pequeños desarrollos o servicios independientes entre si para dar solución en conjunto a un proyecto de software.

ARQUITECTURA MONOLÍTICA

A lo contrario que explicamos en un comienzo, una arquitectura o el enfoque monolítico es aquel que no separa sus desarrollos en piezas pequeñas, sino más bien, todo funciona como una pieza única dándole vida a nuestro proyecto.

Analicemos la siguiente imagen donde vemos como la web KODOTI interactua con el API para solicitar y/o procesar la información.

¿SE DIERON CUENTA QUE PASA?

Todo el desarrollo esta enfocado en una misma API y base de datos. Por ende, se convierte en un proyecto monolítico al centralizar toda la lógica en la misma aplicación y el cual no quiere decir que sea malo.

ARQUITECTURA MICROSERVICIOS

Ahora veremos como sería una propuesta de una arquitectura orientada a microservicios.

VENTAJAS Y DESVENTAJAS

PERFORMANCE

Supongamos que estamos trabajando en un proyecto de e-commerce y contiene los módulos de usuarios, catálogo productos y órdenes de compra. Asimismo, vamos a entrar a una fecha clave de campaña donde se sabe que el tráfico va aumentar 5 veces más de lo normal y el módulo más afectado es el catálogo de productos.

La solución es replicar nuestro proyecto en diferentes servidores para que los balanceadores de carga puedan distribuir el tráfico.

  • En el enfoque monolítico nos obliga a replicar todo nuestro proyecto principal en distintos servidores.
  • El enfoque de microservicios solo deberíamos replicar el módulo o API del catálogo de productos en distintos servidores.

El enfoque de microservicios nos da un mejor panorama de que módulos del sistema demandan mayor consumo de recursos al estar en piezas separadas. Por lo cual, mejoramos la escalabilidad, despliegue y costos.

DESARROLLO

  • El enfoque monolítico en un comienzo se hace más sencillo y ágil de implementar, y si el proyecto no es muy grande una persona o un pequeño grupo puede dar soporte a este.
  • El enfoque a microservicios en un comienzo tiene un alto costo de implementación pero luego esta curva se reduce porque cada servicio debe ser tan pequeño que cualquiera pueda mantenerlo de lo contrario se volverían pequeñas piezas monolíticas. Asimismo, al tener pequeños proyectos o servicios agiliza la implementación de pruebas y despliegue.
  • El enfoque a microservicios dificulta el debug al tener más proyectos. Lo ideal sería tener todo centralizado en un log para encontrar el servicio que esta fallando.
  • El enfoque a microservicios genera una mayor curva de aprendizaje al tener que aprender a usar e integrar los servicios, como también los conceptos que este conlleva por detrás.

TECNOLOGÍA

  • El enfoque monolítico esta amarrado a la tecnología que predomina el proyecto. Ejemplo, si se inició el proyecton Java, morirá con Java.
  • El enfoque monolítico facilita la actualicación de dependencias, librerías, etc de terceros.
  • El enfoque a microservicios al tener pequeños proyectos independientes se puede hacer uso de diferentes tecnologías porque la comunicación entre ellos es usualmente entre APIs.

FALLAS & ERRORES

  • El enfoque monolítico si llegara a fallar algunos de los módulos, fallaría para todo el proyecto evitando el acceso a este.
  • El enfoque a microservicios al ser independientes si falla algún módulo solo se vería afectado este. Por ejemplo, en KODOTI si fallará el módulo de compras no se podrían adquirir nuevos cursos pero si podrían continuar estudiando los cursos adquiridos previamente ya que ese módulo se encuentra en otro servicio.
  • El enfoque a microservicios permite tener un mejor control de los errores al tener todo separado en diferentes servicios.
  • El enfoque a microservicios nos permite solucionar errores sin tener que detener todo el proyecto ya que, solo deberemos publicar el servicio que tenía el bug.

ESCALABILIDAD

  • El enfoque monolítico puede escalar bien hasta cierto punto, luego de esto comenzará los problemas de escalabilidad al tener todo centralizado.
  • El enfoque a microservicios facilita los cambios y la escalabilidad al estar todo en proyectos separados ya que un servicio puede escalar sin afectar a otro servicio.

COSTOS

  • El enfoque monolítico asumaría un menor gasto al correr en una sola instancia.
  • El enfoque a microservicios asume un mayor costo al correr en instancias diferentes ya que gestiona sus propios recursos.

CONCLUSIONES

  • El enfoque monolítico no es malo, es más, KODOTI lo usa por un tema de que contamos con un equipo y presupuesto pequeño, y hasta la fecha no hemos tenido problemas de performance. Lo que si hemos preparado el proyecto para en un futuro comenzar a migrarlo a microservicios.
  • El enfoque microservicios busca que cada proyecto sea independiente y sea lo más simples posibles para que cualquiera pueda mantenerlo y hacer uso de este. Cada microservicio debe tener una única responsabilidad, lo ideal es no mezclar por ejemplo el módulo de cursos con el módulo de órdenes de compra.

En futuras entradas a nuestro blog veremos publicaciones introduciendo código para entender su implementación.

CURSO DE MICROSERVICIOS

Ya esta disponible nuestro curso de Microservicios con .NET Core 3 a través de KODOTI.


Estudia con nosotros

🚀 Mejora tus oportunidades laborales