terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash — cat client-server.md
guest@codeandosimple: ~/blog/architecture $ cat client-server.md

Modelo Cliente-Servidor_

// "Toda comunicación necesita un emisor y un receptor"

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.

Modelo Cliente Servidor

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