La arquitectura
cliente-servidor es un modelo de aplicación distribuida en el que las tareas se
reparten entre los proveedores de recursos o servicios, llamados servidores, y
los demandantes, llamados clientes. Un cliente realiza peticiones a otro
programa, el servidor, que le da respuesta. Esta idea también se puede aplicar
a programas que se ejecutan sobre una sola computadora, aunque es más ventajosa
en un sistema operativo multiusuario distribuido a través de una red de
computadoras.
En esta
arquitectura la capacidad de proceso está repartida entre los clientes y los
servidores, aunque son más importantes las ventajas de tipo organizativo
debidas a la centralización de la gestión de la información y la separación de
responsabilidades, lo que facilita y clarifica el diseño del sistema.
La separación
entre cliente y servidor es una separación de tipo lógico, donde el servidor no
se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo
programa. Los tipos específicos de servidores incluyen los servidores web, los
servidores de archivo, los servidores del correo, etc. Mientras que sus
propósitos varían de unos servicios a otros, la arquitectura básica seguirá
siendo la misma.
Características
En la
arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus
características son:
Es quien inicia
solicitudes o peticiones, tienen por tanto un papel activo en la comunicación
(dispositivo maestro o amo).
Espera y recibe
las respuestas del servidor.
Por lo general,
puede conectarse a varios servidores a la vez.
Normalmente
interactúa directamente con los usuarios finales mediante una interfaz gráfica
de usuario.
Al contratar un
servicio de redes, se debe tener en cuenta la velocidad de conexión que le
otorga al cliente y el tipo de cable que utiliza , por ejemplo : cable de cobre
ronda entre 1 ms y 50 ms.
Al receptor de
la solicitud enviada por el cliente se conoce como servidor. Sus
características son:
Al iniciarse
esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un
papel pasivo en la comunicación (dispositivo esclavo).
Tras la
recepción de una solicitud, la procesan y luego envían la respuesta al cliente.
Por lo general,
aceptan conexiones desde un gran número de clientes (en ciertos casos el número
máximo de peticiones puede estar limitado).
No es frecuente
que interactúen directamente con los usuarios finales.
Ventajas
Centralización
del control: los accesos, recursos y la integridad de los datos son controlados
por el servidor de forma que un programa cliente defectuoso o no autorizado no
pueda dañar el sistema. Esta centralización también facilita la tarea de poner
al día datos u otros recursos (mejor que en las redes P2P)..
Escalabilidad:
se puede aumentar la capacidad de clientes y servidores por separado. Cualquier
elemento puede ser aumentado (o mejorado) en cualquier momento, o se pueden
añadir nuevos nodos a la red (clientes y/o servidores).
Fácil
mantenimiento: al estar distribuidas las funciones y responsabilidades entre
varios ordenadores independientes, es posible reemplazar, reparar, actualizar,
o incluso trasladar un servidor, mientras que sus clientes no se verán
afectados por ese cambio (o se afectarán mínimamente). Esta independencia de
los cambios también se conoce como encapsulación.
Existen
tecnologías, suficientemente desarrolladas, diseñadas para el paradigma de C/S
que aseguran la seguridad en las transacciones, la amigabilidad de la interfaz,
y la facilidad de empleo.
Desventajas
La congestión
del tráfico ha sido siempre un problema en el paradigma de C/S. Cuando una gran
cantidad de clientes envían peticiones simultaneas al mismo servidor, puede ser
que cause muchos problemas para éste (a mayor número de clientes, más problemas
para el servidor). Al contrario, en las redes P2P como cada nodo en la red hace
también de servidor, cuanto más nodos hay, mejor es el ancho de banda que se
tiene.
El paradigma de
C/S clásico no tiene la robustez de una red P2P. Cuando un servidor está caído,
las peticiones de los clientes no pueden ser satisfechas. En la mayor parte de
redes P2P, los recursos están generalmente distribuidos en varios nodos de la
red. Aunque algunos salgan o abandonen la descarga; otros pueden todavía acabar
de descargar consiguiendo datos del resto de los nodos en la red.
El software y el
hardware de un servidor son generalmente muy determinantes. Un hardware regular
de un ordenador personal puede no poder servir a cierta cantidad de clientes.
Normalmente se necesita software y hardware específico, sobre todo en el lado
del servidor, para satisfacer el trabajo. Por supuesto, esto aumentará el
coste.
El cliente no
dispone de los recursos que puedan existir en el servidor. Por ejemplo, si la
aplicación es una Web, no podemos escribir en el disco duro del cliente o
imprimir directamente sobre las impresoras sin sacar antes la ventana previa de
impresión de los navegadores.