Arquitectura Monolítica vs Arquitectura Serverless

Vamos a ilustrar la diferencia entre una arquitectura monolítica y una arquitectura serverless utilizando AWS Lambda, tomando como ejemplo una aplicación simple de gestión de tareas (To-Do List) que permite a los usuarios crear, leer, actualizar y eliminar (CRUD) tareas.

Arquitectura Monolítica

En una arquitectura monolítica, toda la lógica de la aplicación (interfaz de usuario, lógica de negocio, acceso a datos) se implementa como un único código base desplegado en uno o más servidores. Para el ejemplo de la aplicación To-Do List:

  • Frontend y Backend: Una aplicación web única alojada en un servidor (o grupo de servidores) maneja tanto la interfaz de usuario como las operaciones de backend. La interfaz de usuario podría estar construida con HTML, CSS, y JavaScript, mientras que el backend podría utilizar un framework como Express en Node.js, Django en Python, o Spring en Java.

  • Base de Datos: Una base de datos relacional como MySQL o PostgreSQL se ejecuta en otro servidor o instancia, gestionando todas las tareas CRUD para las tareas de los usuarios.

  • Operaciones CRUD: Las operaciones CRUD se realizan a través de llamadas a la API interna del backend, que luego interactúa con la base de datos para crear, leer, actualizar o eliminar tareas.

  • Escalabilidad: Escalar una aplicación monolítica implica aumentar la capacidad del servidor (escalado vertical) o replicar el servidor completo (escalado horizontal), lo cual puede volverse complejo y costoso.

Arquitectura Serverless usando AWS Lambda

En una arquitectura serverless, los servicios gestionados ejecutan la lógica de la aplicación y la base de datos, escalando automáticamente según sea necesario. Para el mismo ejemplo:

  • Frontend: Se hospeda estáticamente en Amazon S3 y se distribuye a través de Amazon CloudFront. La interfaz de usuario interactúa con el backend a través de llamadas a la API RESTful o GraphQL.

  • Backend: Implementado como funciones separadas de AWS Lambda para cada operación CRUD. Por ejemplo, una función Lambda para crear tareas, otra para leer tareas, y así sucesivamente. Cada función se ejecuta en respuesta a solicitudes HTTP invocadas a través de Amazon API Gateway.

  • Base de Datos: Amazon DynamoDB, una base de datos NoSQL gestionada, almacena las tareas. Cada función Lambda interactúa con DynamoDB para realizar las operaciones CRUD correspondientes.

  • Operaciones CRUD: Las operaciones se invocan a través de endpoints de API específicos en API Gateway, que luego desencadenan las funciones Lambda correspondientes para interactuar con DynamoDB.

  • Escalabilidad: AWS Lambda y DynamoDB escalan automáticamente para manejar las solicitudes, sin necesidad de gestionar la infraestructura. Solo se paga por el cómputo consumido y el almacenamiento utilizado.

Comparación y Ventajas

  • Gestión de Infraestructura: La arquitectura serverless elimina la necesidad de aprovisionar, escalar y mantener servidores, reduciendo el costo y la complejidad operativa.

  • Escalabilidad: Serverless escala automáticamente y de forma más granular, lo que puede ser más eficiente que escalar una aplicación monolítica.

  • Costo: Con serverless, el costo se basa en el uso real, lo que puede resultar en ahorros significativos para aplicaciones con tráfico variable.

  • Desarrollo y Mantenimiento: Mientras que las aplicaciones monolíticas pueden ser más simples de desarrollar inicialmente, las arquitecturas serverless ofrecen mayor flexibilidad y agilidad para actualizar y escalar componentes específicos de la aplicación sin afectar al sistema en su conjunto.

Última actualización