Jesus Henriquez
Jesus Henriquez

Jesus Henriquez

Arquitectura Monolítica vs Arquitectura de Microservicios

Arquitectura Monolítica vs Arquitectura de Microservicios

Jesus Henriquez's photo
Jesus Henriquez
·Jun 5, 2022·

3 min read

Table of contents

  • Arquitectura Monolítica
  • Arquitectura basada en Microservicios

Seguramente has escuchado hablar sobre la arquitectura monolítica, esta era una de las más comunes y populares hace unos cuantos años. Sin embargo, en esta arquitectura se presentan diversas problemáticas que son complejas o muy costosas de resolver y es aquí donde entra en acción la arquitectura de microservicios.

Arquitectura Monolítica

Consiste en agrupar todas las funcionalidades y módulos tanto de tu frontend como de tu backend dentro de un mismo proyecto. Es decir, que al finalizar tu desarrollo bajo esta arquitectura tendrás como resultado un ejecutable que podrás desplegar fácilmente en un servidor tradicional.

Desventajas

Al tener todos tus componentes dentro de un mismo proyecto puedes llegar a tener ciertos problemas como:

  • Escalabilidad (Crecimiento vertical): Si tu aplicación va a crecer cada año en cuanto a volumetría, usuarios u operaciones, lo más probable es que vas a tener que ir aumentando los recursos de tu infraestructura dando pie a un crecimiento vertical. Es decir, va a ser necesario aumentar los recursos (cpu, storage, ram, etc) de tu servidor y por ende este crecimiento vertical saldría muy costoso a través del tiempo.

  • Dificultad para añadir nuevas funcionalidades: Resulta que dentro de una arquitectura monolítica se tiene un alto acoplamiento entre cada componente, esto genera un problema a largo plazo ya que el desarrollador deberá conocer la aplicación en su totalidad para poder añadir nuevas funcionalidades sin dañar las ya existentes.

Ventajas

Sin embargo, no todo es malo ya que en la arquitectura monolítica puedes encontrar ciertas ventajas como:

  • Facilidad al desarrollar: Al estar todos los componente altamente acoplados vas a encontrar cierta facilidad para desarrollar desde los inicios de tu proyecto.
  • Despliegue y ejecución: Como te mencione anteriormente al final tu aplicación estará en un solo ejecutable (esto puede variar dependiendo el lenguaje de programación) el cual podrás desplegar fácilmente en un servidor tradicional (virtual o físico) mediante un contenedor de aplicaciones.

Arquitectura basada en Microservicios

Esta arquitectura está orientada a construir aplicaciones distribuidas, es decir que los componentes sean descentralizados, independientes y autónomos. A estos componentes se le llaman microservicios, y por lo general deben proporcionar una funcionalidad de negocio completa.

Cada microservicio puede estar desarrollado en un lenguaje diferente si se desea, esto principalmente porque se comunican entre sí a través de APIs. Ademas poseen su propio almacenamiento y recursos lo que evita sobrecargas y caídas del servicio.

Ventajas

  • Modularidad: Cada uno de tus microservicios se ejecuta por separado y es autónomo, al estar aislados indica que si uno de estos falla no afecta a los demás. De esta forma se logra un nivel de disponibilidad del servicio adecuado

  • Escalabilidad (Crecimiento horizontal): Al tratarse de una aplicación distribuida, permite crecer horizontalmente según sea necesario. Por ejemplo, en un momento determinado si tu aplicación tiene un alto volumen de peticiones puedes desplegar más instancias de tu microservicio permitiendo así una respuesta óptima a estas peticiones.

Desventajas

  • Consumo elevado de recursos: Como cada microservicio está aislado y se ejecuta independientemente, consumen muchos más recursos (memoria y CPU).
  • Tiempo inicial: Esta arquitectura requiere de más tiempo ya que se tiene que realizar un análisis para fragmentar las diferentes funcionalidades en microservicios y posteriormente implementar la comunicación entre ellos.

Estas son solo algunas ventajas y desventajas de ambas arquitecturas, sin embargo existen más característica que son realmente interesantes. Te invito a que sigas leyendo un poco sobre las diferentes arquitecturas que existen en el mundo tecnológico.

Al final todo dependerá de la necesidad del negocio y a partir de ahí debes definir qué arquitectura se ajusta más a las necesidades de tu solución.

 
Share this