Cliente-servidor

La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten entre los servidores o proveedores de servicios, y los clientes, quienes realizan peticiones al servidor. La separación lógica entre cliente y servidor es muy ventajosa desde el punto de vista organizativo, ya que facilita el diseño del sistema y centraliza la gestión.

Cliente-servidor

Qué es la arquitectura cliente-servidor

La arquitectura cliente-servidor es un paradigma de aplicación distribuida en el que un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta. Cliente y servidor suelen estar en computadoras diferentes, aunque también pueden ejecutarse ambos programas sobre una sola computadora.

Veamos las diferentes características del cliente y el servidor:

  • Servidor: es el receptor de la solicitud enviada por el cliente. Al iniciarse quedan a la espera de que lleguen solicitudes de los clientes. Tras recibir una solicitud, la procesan y luego envían la respuesta al cliente. Generalmente aceptan conexiones de un gran número de clientes, aunque el número máximo de peticiones simultáneas puede estar limitado.
  • Cliente: es el remitente de una solicitud al servidor, quien inicia la comunicación. Una vez enviada la petición, queda a la espera hasta recibir la respuesta del servidor. Generalmente puede conectarse a múltiples servidores a la vez.

En la arquitectura cliente-servidor los roles de cliente y servidor están bien diferenciados y no son intercambiables, a diferencia de otros modelos como el peer to peer (P2P) en el que los roles no están definidos y se puede ser tanto cliente como servidor, incluso simultáneamente.

Respecto a las ventajas del modelo cliente-servidor, las principales son las siguientes:

  • Recursos centralizados: en el servidor se centraliza el control del sistema, los accesos, recursos, actualizaciones y la integridad de los datos, de tal manera que un programa cliente defectuoso no pueda dañar el sistema.
  • Seguridad mejorada: las tecnologías diseñadas para el paradigma cliente-servidor aseguran la seguridad en las transacciones, una interfaz amigable y la sencillez de empleo.
  • Fácil administración: gracias a la encapsulación de funciones en los servidores, generalmente es posible reemplazar, reparar, actualizar o incluso trasladar un servidor, sin que los clientes se vean afectados por el cambio, o sean afectados mínimamente.
  • Escalabilidad: en cualquier momento puede ser mejorado cualquier elemento o se pueden añadir nuevos nodos a la red, tanto clientes como servidores, sin que esto afecte al funcionamiento de la red.

En cuanto a las desventajas de la arquitectura cliente-servidor, podemos citar:

  • Costo elevado: dada la complejidad técnica del servidor, tanto a nivel de software como de hardware, el coste se ve incrementado.
  • Debilidad: el paradigma cliente-servidor presenta la desventaja de que cuando un servidor está caído, las peticiones de los clientes no pueden ser satisfechas. Para evitar esta situación, se implementan sistemas de servidores redundantes balanceados que puedan asumir la falla de alguno de ellos manteniendo la integridad del sistema.
  • Tráfico excesivo: la demanda excesiva por parte de clientes al mismo servidor puede congestionar la red y causar problemas al servidor.

El modelo cliente-servidor es recomendado para redes que necesiten fiabilidad, seguridad, escalabilidad y fácil administración, por lo que se utiliza habitualmente en servidores web, servidores de archivos y servidores de correo electrónico, ya que todos ellos básicamente recepcionan solicitudes de información y envían los datos requeridos a múltiples clientes.