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.
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.
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.
// 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>
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.