← Volver al blog

De un servidor a una arquitectura escalable en AWS

· 27 sep 2026 · 9 min de lectura
Contenido de este artículo
  1. 1. Todo en un servidor
  2. 2. Separar la base de datos
  3. 3-4. Escalado vertical y horizontal
  4. 5-6. Load balancer y autoescalado
  5. 7. Caché con Redis
  6. 8. Cola de mensajes
  7. 9. CDN y réplica de lectura
  8. 10. Observabilidad y resiliencia
  9. Qué paso dar primero
  10. Preguntas habituales

Ninguna aplicación nace con balanceadores, colas y caché: nace en un único servidor, y así debería ser. La infraestructura madura poco a poco, y cada pieza nueva resuelve un síntoma concreto (lentitud, caídas, un pico de tráfico, una factura que no cuadra), no una moda. Este artículo recorre esa evolución en 10 pasos, con un dibujo del esquema completo después de cada apartado, para ver claramente cómo va quedando la arquitectura en cada uno.

1. Todo en un servidor

Toda infraestructura empieza igual: un servidor, la aplicación y la base de datos conviviendo en la misma máquina. Es la opción más barata y la más simple de entender, y es la correcta mientras el tráfico es bajo y el proyecto está validando si tiene sentido. El error habitual no es empezar así: es quedarse ahí por miedo a tocarlo cuando ya no basta.

Diagrama: los usuarios conectan directamente con un único servidor que contiene la app y la base de datos juntas.
Todo en un servidor: la app y la base de datos juntas.

2. Separar la base de datos

El primer síntoma suele ser este: la base de datos y la aplicación compiten por la misma CPU y la misma memoria, y un pico de una afecta a la otra. La solución es mover la base de datos a su propio servidor (en AWS, normalmente una instancia RDS gestionada). A partir de aquí cada pieza escala, se actualiza y falla de forma independiente, y puedes dar copias de seguridad y parches a la base de datos sin tocar la aplicación.

Diagrama: usuarios conectan con el servidor de aplicación, que ahora habla con una base de datos en su propio servidor separado.
La base de datos ya vive en su propio servidor.

3-4. Escalado vertical y horizontal

Cuando un servidor empieza a ir justo, hay dos formas de darle más capacidad. La primera y más simple es el escalado vertical: subir de tipo de instancia, con más CPU y RAM en la misma máquina. No añade nada al diagrama de arquitectura, solo cambia el tamaño de una caja que ya existía, y tiene un límite: llega un punto en el que no hay una instancia más grande, o deja de compensar el coste.

El escalado horizontal es distinto: en vez de una máquina más grande, se añaden más máquinas iguales ejecutando la misma aplicación. Cuesta un poco más de disciplina (la aplicación no puede guardar estado solo en memoria local, por ejemplo), pero no tiene techo y de paso gana tolerancia a fallos: si una réplica cae, las demás siguen respondiendo.

Con dos réplicas y sin nada más, alguien tiene que decidir a cuál de las dos llega cada petición. Ahí es donde entra el siguiente paso.

Diagrama: usuarios conectan con dos réplicas de la aplicación, ambas conectadas a la base de datos, todavía sin balanceador.
Dos réplicas de la aplicación, todavía sin nada que reparta el tráfico entre ellas.

5-6. Load balancer y autoescalado

El load balancer (en AWS, un Application Load Balancer) recibe todo el tráfico y lo reparte entre las réplicas sanas de la aplicación. A partir de aquí los usuarios ya no hablan con un servidor concreto, hablan con el balanceador, y eso también permite sacar una réplica de la circulación para actualizarla sin que nadie note un corte.

El autoescalado añade la pieza que faltaba: en vez de decidir a mano cuántas réplicas hay detrás del balanceador, un grupo de autoescalado las añade o las quita según métricas reales (CPU, número de peticiones, hora del día). Se paga por lo que se usa, y el sistema aguanta un pico sin que nadie tenga que levantarse a las 3 de la madrugada a lanzar un servidor más.

Diagrama: usuarios conectan con un Load Balancer que reparte tráfico entre tres réplicas de aplicación (autoescalado) conectadas a la base de datos.
Load balancer y autoescalado: el sistema ya no depende de un único servidor.

7. Caché con Redis

Con más tráfico, muchas consultas a la base de datos son siempre las mismas (un listado de productos, la configuración de la cuenta, un contador de visitas). Guardarlas en una caché en memoria como Redis evita repetir esa consulta cada vez: la aplicación pregunta primero a la caché, y solo si no está ahí va a la base de datos. Es una de las mejoras de rendimiento más baratas de implementar y de las que más se nota, sobre todo bajo carga.

Diagrama: igual que el load balancer con autoescalado, con Redis como caché conectada a la aplicación junto a la base de datos.
Redis absorbe las consultas repetidas antes de que lleguen a la base de datos.

8. Cola de mensajes

No todo lo que hace una aplicación tiene que pasar mientras el usuario espera la respuesta. Enviar un correo de confirmación, generar un PDF, llamar a una API externa lenta: son tareas que se pueden encolar y procesar aparte, con una cola de mensajes (en AWS, SQS) y un proceso (worker) que la va vaciando. El usuario recibe respuesta al instante, y si la tarea falla se puede reintentar sin que nadie se entere.

Diagrama: se añade una cola de mensajes junto a Redis, conectada a la aplicación, además de la base de datos.
Las tareas lentas se procesan aparte, en una cola, sin bloquear la respuesta.

9. CDN y réplica de lectura

Dos mejoras que suelen llegar juntas cuando el tráfico ya es serio. Una CDN (CloudFront) sirve imágenes, CSS y JS desde un punto cercano al usuario, en vez de desde tu servidor cada vez, lo que además le quita carga al load balancer y a la aplicación. Y una réplica de lectura de la base de datos absorbe las consultas de solo lectura (listados, búsquedas, informes), dejando a la instancia primaria libre para las escrituras, que son las que de verdad no se pueden repartir.

Diagrama: se añaden una CDN conectada a los usuarios y una réplica de lectura de la base de datos conectada a la aplicación y a la base de datos primaria.
Una CDN para lo estático y una réplica de lectura para la base de datos.

10. Observabilidad y resiliencia

Un sistema con todas las piezas anteriores puede seguir fallando en silencio si nadie lo vigila. La observabilidad (métricas, registros y alarmas, en AWS con CloudWatch) avisa antes de que un problema llegue al usuario: CPU al límite, cola creciendo, tasa de errores subiendo. Y las copias de seguridad automatizadas, probadas de verdad restaurándolas alguna vez, son lo que convierte un fallo grave en un incidente controlado en vez de una pérdida de datos. Con esto, el sistema ya se puede llamar maduro: cada pieza tiene un motivo, y hay alguien (o algo) vigilando cada una.

Diagrama completo: usuarios, CDN y observabilidad conectados al load balancer, que reparte tráfico a tres réplicas de aplicación; estas usan Redis, una cola de mensajes y una base de datos con réplica de lectura y copias de seguridad automatizadas.
El sistema completo: 13 piezas, cada una añadida porque un síntoma real lo pidió.

Qué paso dar primero

No hay una respuesta única, pero sí un criterio: da el paso que resuelve el síntoma que ya tienes, no el que crees que vas a tener. Antes de añadir una pieza, hazte estas preguntas:

Esta es la parte que menos se ve en un diagrama de arquitectura y la que más dinero ahorra: decidir bien cuándo dar cada paso, no solo saber cómo darlo.

Preguntas habituales

¿Quieres verlo aplicado a tu caso?Cuéntame tu proyecto; respuesta en menos de 24 horas.

Cuéntame tu caso

¿Lo aplicamos en tu caso?Consulta el servicio de despliegue e infraestructura en AWS o el de consultoría y Tech Lead para decidir cuándo dar cada paso, y escríbeme si quieres hablar de tu proyecto.

Sigue leyendo

Desplegar una aplicación PHP en AWS: opciones y guía paso a paso

Cómo desplegar una aplicación PHP (Symfony o Laravel) en AWS: comparativa de Lightsail, EC2, Elastic Beanstalk y contenedores, y guía paso a paso con EC2, Nginx, RDS y HTTPS.

Leer artículo →

n8n, MCP y agentes de IA: guía de automatización

Cómo combinar n8n, agentes de IA y MCP: MCP Client, MCP Server, herramientas, memoria y buenas prácticas de fiabilidad y seguridad.

Leer artículo →
David Otero Mato

David Otero Mato

Desarrollador fullstack freelance en Donostia — PHP, Vue.js, AWS e IA generativa aplicada a proyectos reales.

¿Hablamos de tu proyecto? →