ARQUITECTURA CLIENTE-SERVIDOR
Todas las
PC conectadas a una red que participan directamente en las comunicaciones de
red se clasifican como hosts o dispositivos finales. Los hosts pueden enviar y
recibir mensajes a través de la red. En las redes modernas, los dispositivos
finales pueden funcionar como clientes, servidores o ambos. El software
instalado en la computadora determina cuál es la función que cumple la
computadora.
En este
caso el servidor es una máquina
específica que usa un sistema operativo desarrollado especialmente para este
tipo de red. Las estaciones de trabajo comparten recursos disponibles a partir
de este servidor. La ejecución de las tareas está dividida entre el cliente (o estación) y el servidor.
Este tipo de red proporciona un mejor rendimiento y niveles de seguridad más
adecuados para el trabajo profesional en red.
Los
servidores son hosts con software instalado que les permite proporcionar
información, por ejemplo correo electrónico o páginas web, a otros de la red.
Cada servicio requiere un software de servidor diferente. Por ejemplo, para
proporcionar servicios web a la red, un host necesita un software de servidor
web.
Los
clientes son computadoras host que tienen instalado un software que les permite
solicitar información al servidor y mostrar la información obtenida. Un
explorador web, como internet Explorer, es un ejemplo de software cliente.
Una
computadora con software de servidor puede prestar servicios a uno o varios
clientes simultáneamente.
Además,
una sola computadora puede ejecutar varios tipos de software de servidor. En
una oficina pequeña u hogareña, puede ser necesario que una computadora actúe
como servidor de archivos, servidor web y servidor de correo electrónico.
Una sola
computadora también puede ejecutar varios tipos de software cliente. Debe haber
un software cliente por cada servicio requerido. Si un host tiene varios
clientes instalados, puede conectarse a varios servidores de manera simultánea.
Por ejemplo, un usuario puede leer su correo electrónico y ver una página Web
mientras utiliza el servicio de mensajería instantánea y escucha la radio a
través de internet.
La
interacción cliente-servidor es el soporte de la mayor parte de la comunicación por redes. Ayuda a comprender las bases sobre las que están
construidos los algoritmos distribuidos.
Partes
que componen el sistema
Cliente: Programa ejecutable que participa
activamente en el establecimiento de las conexiones. Envía una
petición al servidor y se queda esperando por una
respuesta. Su tiempo de vida es finito una vez que son servidas sus
solicitudes, termina el trabajo.
Servidor: Es un programa que ofrece un servicio
que se puede obtener en una red.
Acepta la petición desde la red, realiza el servicio y devuelve el resultado al
solicitante. Al ser posible implantarlo como aplicaciones de programas, puede
ejecutarse en cualquier sistema donde exista TCP/IP y junto con otros programas de aplicación. El servidor comienza su ejecución antes
de comenzar la interacción con el cliente. Su tiempo de vida o de interacción
es “interminable”.
Los servidores pueden ejecutar tareas
sencillas (caso del servidor hora día que devuelve una respuesta) o complejas
(caso del servidor ftp en el cual se deben realizar operaciones antes de devolver una respuesta). Los
servidores sencillos procesan una petición a la vez (son secuenciales o
interactivos), por lo que no revisan si ha llegado otra petición antes de
enviar la respuesta de la anterior.
Los más complejos trabajan con peticiones
concurrentes aún cuando una sola petición lleve mucho tiempo para ser servida
(caso del servidor ftp que debe copiar un archivo en otra máquina). Son
complejos pues tienen altos requerimientos de protección y autorización. Pueden
leer archivos del sistema, mantenerse en línea y acceder a datos protegidos y a
archivos de usuarios. No puede cumplir a ciegas las peticiones de los clientes,
deben reforzar el acceso al sistema y las políticas de protección.
Características
de la arquitectura Cliente-Servidor
- Combinación de un cliente que
interactúa con el usuario, y un servidor que interactúa con los recursos a
compartir. El proceso del cliente proporciona la interfaz entre el usuario y el
resto del sistema. El proceso del servidor actúa como un motor de software que maneja
recursos compartidos tales como bases de datos, impresoras, Módem, etc.
- Las tareas del cliente y del
servidor tienen diferentes requerimientos en cuanto a recursos de cómputo como
velocidad del procesador, memoria, velocidad y capacidades del disco e input-output devices.
- Se establece una relación entre
procesos distintos, los cuales pueden ser ejecutados en la misma máquina o en
máquinas diferentes distribuidas a lo largo de la red.
- Existe una clara distinción de
funciones basadas en el concepto de ”servicio”, que se establece entre clientes
y servidores.
- La relación establecida puede
ser de muchos a uno, en la que un servidor puede dar servicio a muchos
clientes, regulando su acceso a los recursos compartidos.
- Los clientes corresponden a
procesos activos en cuanto a que son estos los que hacen peticiones de
servicios. Estos últimos tienen un carácter pasivo, ya que esperan peticiones
de los clientes.
- No existe otra relación entre
clientes y servidores que no sea la que se establece a través del intercambio
de mensajes entre ambos. El mensaje es el mecanismo para la petición y entrega
de solicitudes de servicios.
- El ambiente es heterogéneo. La
plataforma de hardware y el sistema operativo del cliente y del servidor no son
siempre los mismos. Precisamente una de las principales ventajas de esta
arquitectura es la posibilidad de conectar clientes y servidores
independientemente de sus plataformas.
- El concepto de escalabilidad
tanto horizontal como vertical es aplicable a cualquier sistema
Cliente-Servidor. La escalabilidad horizontal permite agregar más estaciones de
trabajo activas sin afectar significativamente el rendimiento. La escalabilidad
vertical permite mejorar las características del servidor o agregar múltiples
servidores.
Ventajas
del esquema Cliente-Servidor
- Existencia de plataformas de hardware cada vez
más baratas. Esta constituye a su vez una de las más palpables ventajas de este
esquema, la posibilidad de utilizar máquinas mucho más baratas que las
requeridas por una solución centralizada, basada en sistemas grandes
(mainframes). Además, se pueden utilizar componentes, tanto de hardware como de
software, de varios fabricantes, lo cual contribuye considerablemente a la
reducción de costos y favorece la flexibilidad en la implantación y
actualización de soluciones.
- Facilita la integración entre sistemas diferentes
y comparte información, permitiendo por ejemplo que las máquinas ya existentes
puedan ser utilizadas pero utilizando interfaces más amigables el usuario. De
esta manera, se puede integrar PCs con sistemas medianos y grandes, sin
necesidad de que todos tengan que utilizar el mismo sistema operativo.
- Al favorecer el uso de interfaces gráficas
interactivas, los sistemas construidos bajo este esquema tienen una mayor y más
intuitiva con el usuario. En el uso de interfaces gráficas para el usuario,
presenta la ventaja, con respecto a uno centralizado, de que no siempre es
necesario transmitir información gráfica por la red pues esta puede residir en
el cliente, lo cual permite aprovechar mejor el ancho de banda de la red.
- La estructura inherentemente modular facilita
además la integración de nuevas tecnologías y el crecimiento de la
infraestructura computacional, favoreciendo así la escalabilidad de las
soluciones.
- Contribuye además a proporcionar a los diferentes
departamentos de una organización, soluciones locales, pero permitiendo la
integración de la información.
Desventajas
- El mantenimiento de los sistemas es más difícil
pues implica la interacción de diferentes partes de hardware y de software,
distribuidas por distintos proveedores, lo cual dificulta el diagnóstico de
fallas.
- Cuenta con muy escasas herramientas para la administración
y ajuste del desempeño de los sistemas.
- Es importante que los clientes y los servidores
utilicen el mismo mecanismo (por ejemplo sockets o RPC), lo cual implica que se
deben tener mecanismos generales que existan en diferentes plataformas.
- Hay que tener estrategias para el manejo de
errores y para mantener la consistencia de los datos.
- El desempeño (performance), problemas de este
estilo pueden presentarse por congestión en la red, dificultad de tráfico de
datos, etc.