¿Qué es la arquitectura cliente-servidor?
La arquitectura cliente-servidor es un modelo de comunicación en el que uno o varios clientes solicitan servicios o recursos a un servidor, que los procesa y devuelve una respuesta a través de una red.
Este modelo constituye la base de la mayoría de aplicaciones actuales, como páginas web, correo electrónico, bases de datos o aplicaciones empresariales.
Conceptos fundamentales
Para comprender la arquitectura cliente-servidor es imprescindible conocer los siguientes conceptos:
- Cliente: dispositivo o aplicación que solicita un servicio.
- Servidor: equipo o aplicación que proporciona dicho servicio.
- Petición (Request): solicitud enviada por el cliente.
- Respuesta (Response): información devuelta por el servidor.
- Servicio: recurso ofrecido por el servidor (web, correo, archivos, bases de datos, etc.).
Funcionamiento
El funcionamiento básico sigue una secuencia sencilla:
Cliente
│
Petición (Request)
│
Servidor
│
Procesamiento
│
Respuesta (Response)
│
Cliente
El servidor permanece escuchando solicitudes de múltiples clientes simultáneamente.
Componentes principales
Cliente
El cliente es la aplicación o dispositivo que consume un servicio.
Ejemplos:
- Navegador web.
- Cliente de correo.
- Aplicación móvil.
- Programa de escritorio.
Servidor
El servidor proporciona recursos o servicios a los clientes.
Puede ofrecer:
- Páginas web.
- Bases de datos.
- Archivos.
- Correo electrónico.
- Autenticación.
- APIs.
Características
La arquitectura cliente-servidor presenta las siguientes características:
- Separación entre cliente y servidor.
- Centralización de los recursos.
- Comunicación mediante protocolos de red.
- Posibilidad de múltiples clientes simultáneos.
- Escalabilidad.
Tipos de arquitectura
Dos capas (2-Tier)
El cliente se comunica directamente con el servidor.
Cliente
│
Servidor
Es sencilla de implementar, pero escala peor cuando aumenta el número de usuarios.
Ejemplos:
- Aplicaciones conectadas directamente a una base de datos.
- Pequeñas aplicaciones internas.
Tres capas (3-Tier)
Se introduce una capa intermedia de lógica de negocio.
Cliente
│
Servidor de aplicaciones
│
Servidor de base de datos
Cada capa tiene una función específica:
- Presentación.
- Lógica de negocio.
- Datos.
Arquitectura multicapa (N-Tier)
La aplicación se divide en varias capas independientes.
Ejemplo:
Cliente
│
Balanceador
│
Servidor Web
│
Servidor de Aplicaciones
│
Servidor de Base de Datos
Permite mejorar:
- Escalabilidad.
- Seguridad.
- Disponibilidad.
- Rendimiento.
Protocolos habituales
La comunicación cliente-servidor suele realizarse mediante protocolos de red.
| Servicio | Protocolo |
|---|---|
| Web | HTTP / HTTPS |
| Transferencia de archivos | FTP / SFTP |
| Correo electrónico | SMTP, POP3, IMAP |
| Resolución de nombres | DNS |
| Acceso remoto | SSH, RDP |
Ventajas
- Administración centralizada.
- Mayor seguridad.
- Compartición de recursos.
- Escalabilidad.
- Mantenimiento simplificado.
- Copias de seguridad centralizadas.
Inconvenientes
- Dependencia del servidor.
- Posible punto único de fallo.
- Mayor coste del servidor.
- Posibles cuellos de botella.
- Necesidad de una red funcional.
Alta disponibilidad
Para evitar interrupciones del servicio suelen emplearse mecanismos como:
- Balanceadores de carga.
- Clústeres de servidores.
- Replicación.
- Servidores redundantes.
- Copias de seguridad.
Comparación cliente-servidor vs peer-to-peer (P2P)
| Cliente-Servidor | Peer-to-Peer |
|---|---|
| Recursos centralizados | Recursos distribuidos |
| Existe un servidor principal | No existe servidor central |
| Administración sencilla | Administración distribuida |
| Mayor control | Mayor autonomía de los nodos |
| Más fácil de proteger | Seguridad más compleja |
Caso práctico
Situación
Un usuario accede desde su navegador a una aplicación web corporativa.
Navegador
│
Petición HTTPS
│
Servidor Web
│
Servidor de Aplicaciones
│
Base de Datos
│
Respuesta
│
Navegador
El navegador solicita una página, el servidor procesa la petición, consulta la base de datos y devuelve el resultado al cliente.
Ventajas e inconvenientes
Ventajas
- Centralización de los servicios.
- Administración sencilla.
- Mejor control de seguridad.
- Escalabilidad.
- Compartición eficiente de recursos.
Inconvenientes
- Dependencia del servidor.
- Posibles cuellos de botella.
- Coste de infraestructura.
- Necesidad de alta disponibilidad.
Errores habituales
- Confundir cliente con usuario.
- Pensar que un servidor siempre es un equipo físico.
- Creer que un cliente procesa toda la información.
- Confundir cliente-servidor con redes P2P.
- Pensar que solo puede existir un servidor.
Cómo evitarlos
- Diferenciar claramente los roles de cliente y servidor.
- Recordar que un servidor puede ser físico o virtual.
- Comprender el flujo petición–respuesta.
- Identificar cuándo existe una arquitectura multicapa.
- Relacionar los servicios con sus protocolos habituales.
Relaciones con otros temas
La arquitectura cliente-servidor está estrechamente relacionada con:
- Modelo OSI.
- TCP/IP.
- HTTP y HTTPS.
- DNS.
- APIs REST.
- Bases de datos.
- Virtualización.
- Cloud Computing.
- Balanceadores de carga.
- Alta disponibilidad.
Conceptos clave para recordar
[!NOTE]
- La arquitectura cliente-servidor separa los roles de cliente y servidor.
- El cliente inicia la comunicación mediante una petición.
- El servidor procesa la solicitud y devuelve una respuesta.
- La comunicación se realiza mediante protocolos como HTTP, HTTPS, FTP o SMTP.
- Las arquitecturas pueden ser de dos capas (2-Tier), tres capas (3-Tier) o multicapa (N-Tier).
- La arquitectura de tres capas separa presentación, lógica de negocio y datos.
- La centralización facilita la administración, la seguridad y las copias de seguridad.
- Para mejorar la disponibilidad se emplean balanceadores de carga, clústeres y servidores redundantes.
- No debe confundirse con las redes Peer-to-Peer (P2P), donde no existe un servidor central.