El modelo cliente-servidor es una arquitectura clásica de sistemas distribuidos. Se basa en dividir responsabilidades entre un cliente (que solicita servicios) y un servidor (que responde a esas solicitudes). Este patrón está presente en casi toda la web moderna y en múltiples tipos de aplicaciones.
# Historia y evolución
En los 60s y 70s dominaban los mainframes: computadoras centrales con terminales tontas. A medida que surgieron las PC, se hizo viable dividir el procesamiento: los clientes podían interactuar con servidores centralizados. Con la llegada de Internet, este modelo explotó en popularidad y se convirtió en la base de la arquitectura web.
# Funcionamiento general
-
El cliente inicia una petición a través de una red.
-
El servidor la recibe, procesa y responde.
-
Todo ocurre bajo protocolos como HTTP, TCP/IP, etc.
# Analogía cotidiana
Imaginá un restaurante. Vos (cliente) pedís un plato. El mozo (servidor) toma la orden, la lleva a cocina, y luego vuelve con el plato. El cliente nunca se mete con cómo se cocina: sólo hace pedidos y recibe respuestas.
# Ventajas
-
verified
Simplicidad
Fácil de entender e implementar.
-
verified
Separación de Responsabilidades
Permite separar interfaz (cliente) y lógica de negocio (servidor).
-
verified
Escalabilidad Horizontal
Permite múltiples clientes para un mismo servidor.
# Desventajas
-
warning
Acoplamiento
Alto acoplamiento con el servidor.
-
warning
Punto único de fallo
Si el servidor cae, se pierde todo.
-
warning
Latencia
Problemas de latencia y rendimiento con muchos clientes.
# Ejemplo técnico (Node.js)
Servidor con Express
const express = require('express');
const app = express();
app.get('/api/hora', (req, res) => {
res.send(new Date().toLocaleTimeString());
});
app.listen(3000, () => console.log('Servidor escuchando en puerto 3000'));
Cliente (HTML + JS)
<button onclick="pedirHora()">¿Qué hora es?</button>
<script>
function pedirHora() {
fetch('http://localhost:3000/api/hora')
.then(response => response.text())
.then(alert);
}
</script>
# Conclusión
El modelo cliente-servidor no ha desaparecido: sigue vivo dentro de muchas otras arquitecturas modernas como REST, GraphQL, microservicios, y serverless. Aprender este modelo es esencial para entender cómo fluye la información entre capas de una aplicación, cómo diseñar APIs y cómo construir sistemas robustos.