Componentes de las Aplicaciones Web Modernas

Las aplicaciones web modernas no son ya estructuras monolíticas. Están compuestas por diferentes componente que trabajan unos con otros. Debajo hay algunos de los componentes que forman las aplicaciones modernas:

  1. Servidor Front-End: Suele ser el reverse proxy o balanceador de carga que reenvía el tráfico al backend.
  2. Servidor Back-End: Procesa peticiones de usuarios, interactúa con la base de datos y sirve la información al front-end.
  3. Bases de Datos: Sistemas de almacenamiento persistentes donde la información de la aplicación es guardada.
  4. APIs (Application Programming Interfaces): Las interfaces permiten que el front y el back se comuniquen e integren con otros servicios.
  5. Microservicios: En lugar de un sólo back-end monolítico, muchas aplicaciones modernas usan microservicios, que son servicios pequeños e independientes que se comunican por red, normalmente usando HTTP/REST o gRPC.

Balanceadores de Carga y Reverse Proxies

  1. Balanceadores de Carga: Estos dispositivos distribuyen el tráfico entrante entre múltiples servidores para asegurar que ningún servidor esté sobrepasado por demasiado tráfico. Esto asegura disponibilidad y confiabilidad redireccionando las peticiones sólo a servidores vivos que puedan manejarlas. Suele hacerse con reverse proxies. Algunos ejemplos son AWS Elastic Load Balancing, HAProxy o F5 BIG-IP.
  2. Reverse Proxies: Un proxy inverso se encuentra antes de uno o más servidores web y redirecciona las peticiones al servidor apropiado. Aunque también pueden realizar balanceo de carga, su propósito principal es ofrecer un sólo punto de acceso y control a los servidores de backend. Algunos ejemplos son NGINX, Apache con mod_proxy o Varnish.

Modern Infrastructure


Rol de los Mecanismos de Cacheado

El cacheo es una técnica usada para guardar información previamente accedida o resultados computados para acelerar las siguientes peticiones y cálculos. En el contexto de infraestructura web:

  1. Content Caching: Guardando contenido estático como imágenes, CSS y JS, se reduce el tiempo de carga en los servidores y se acelera el reparto de contenido a los usuarios.
  2. Database Query Caching: Las bases de datos pueden cachear los resultados de queries frecuentes, reduciendo el tiempo y recursos necesarios para obtener la misma información repetidamente.
  3. Full-page Caching: La página web entera puede ser cacheada, para que no tengan que ser recargadas para cada usuario. Especialmente útil para páginas con alto tráfico.
  4. Edge Caching/CDNs: Las Content Delivery Networks cachean contenido cerca de los usuarios (edge/borde de la red) reduciendo latencia y acelerando acceso a usuarios.
  5. API Caching: Cacheo de respuestas que reducen significativamente el procesado del backend para las APIs que sirven peticiones similares frecuentemente.