Cliente-servidor
En informática, cliente-servidor es un modelo de arquitectura de software que consta de dos partes, sistemas cliente y sistemas servidor, ambos comunicados a través de una red informática o en el mismo ordenador. Una aplicación cliente-servidor es un sistema distribuido compuesto por software cliente y servidor. La aplicación cliente-servidor proporciona una mejor manera de compartir la carga de trabajo. El proceso cliente siempre inicia una conexión con el servidor, mientras que el proceso servidor siempre espera las peticiones de cualquier cliente.
Cuando el proceso cliente y el proceso servidor se ejecutan en el mismo ordenador, se denomina configuración de asiento único.
Otro tipo de arquitectura de software relacionada se conoce como peer-to-peer, porque cada instancia de host o aplicación puede actuar simultáneamente como cliente y servidor (a diferencia de los servidores centralizados del modelo cliente-servidor) y porque cada uno tiene responsabilidades y estatus equivalentes. Las arquitecturas peer-to-peer se suelen abreviar con el acrónimo P2P.
La relación cliente-servidor describe la relación entre el cliente y cómo realiza una solicitud de servicio al servidor, y cómo el servidor puede aceptar estas solicitudes, procesarlas y devolver la información solicitada al cliente. La interacción entre el cliente y el servidor suele describirse mediante diagramas de secuencia. Los diagramas de secuencia están estandarizados en el Lenguaje Unificado de Modelado.
Tanto las arquitecturas cliente-servidor como las P2P son muy utilizadas hoy en día.
El tipo básico de arquitectura de software cliente-servidor emplea sólo dos tipos de hosts: clientes y servidores. Este tipo de arquitectura se denomina a veces de dos niveles. La arquitectura de dos niveles significa que el cliente actúa como un nivel y el proceso del servidor actúa como el otro nivel.
La arquitectura de software cliente-servidor se ha convertido en uno de los modelos básicos de la informática en red. Muchos tipos de aplicaciones se han escrito utilizando el modelo cliente-servidor. Las funciones estándar de la red, como el intercambio de correo electrónico, el acceso a la web y el acceso a las bases de datos, se basan en el modelo cliente-servidor. Por ejemplo, un navegador web es un programa cliente en el ordenador del usuario que puede acceder a la información en cualquier servidor web del mundo.
Una red basada en un servidor.
Una red basada en los pares.
Características de los clientes
- Siempre inicia las peticiones a los servidores.
- Espera las respuestas.
- Recibe respuestas.
- Suele conectarse a un pequeño número de servidores a la vez.
- Suele interactuar directamente con los usuarios finales utilizando cualquier interfaz de usuario, como la interfaz gráfica de usuario.
Características del servidor
- Siempre hay que esperar la solicitud de uno de los clientes.
- Sirve las solicitudes de los clientes y luego responde a los clientes con los datos solicitados.
- Un servidor puede comunicarse con otros servidores para atender la solicitud de un cliente.
- Si se requiere información adicional para procesar una solicitud (o se implementa la seguridad), un servidor puede solicitar datos adicionales (contraseñas) a un cliente antes de procesar una solicitud.
- Los usuarios finales no suelen interactuar directamente con un servidor, sino que utilizan un cliente.
Ventajas
- En la mayoría de los casos, una arquitectura cliente-servidor permite distribuir las funciones y responsabilidades de un sistema informático entre varios ordenadores independientes que sólo se conocen entre sí a través de una red, por lo que una de las ventajas de este modelo es la mayor facilidad de mantenimiento. Por ejemplo, es posible sustituir, reparar, actualizar o incluso reubicar un servidor mientras sus clientes permanecen ajenos y no se ven afectados por ese cambio. Esta independencia del cambio también se denomina encapsulación.
- Todos los datos se almacenan en los servidores, que suelen tener mejores controles de seguridad que la mayoría de los clientes. Los servidores pueden controlar mejor el acceso y los recursos, para garantizar que sólo los clientes con los permisos adecuados puedan acceder a los datos y modificarlos.
- Como el almacenamiento de datos está centralizado, las actualizaciones de esos datos son mucho más fáciles de administrar que lo que sería posible bajo una arquitectura P2P. En una arquitectura P2P, las actualizaciones de los datos deben distribuirse y aplicarse a cada "peer" de la red, lo que lleva mucho tiempo y es propenso a errores, ya que puede haber miles o incluso millones de peers.
- Ya existen muchas tecnologías avanzadas de cliente-servidor diseñadas para garantizar la seguridad, las interfaces fáciles de usar y la facilidad de uso.
- Funciona con múltiples clientes de diferentes especificaciones.
Desventajas
- El bloqueo del tráfico en la red es uno de los problemas relacionados con el modelo cliente-servidor. A medida que aumenta el número de peticiones simultáneas de los clientes a un determinado servidor, éste puede verse sobrecargado. En cambio, en una red P2P el ancho de banda aumenta a medida que se añaden más nodos, ya que el ancho de banda global de la red P2P puede calcularse aproximadamente como la suma de los anchos de banda de cada nodo de la red.
- Comparando el modelo cliente-servidor con el modelo Peer to Peer, si un servidor falla, las peticiones de los clientes no pueden ser atendidas, pero en el caso de las redes P2P, los servidores suelen estar distribuidos entre muchos nodos. Incluso si uno o más nodos fallan, por ejemplo si un nodo no puede descargar un archivo, los nodos restantes deberían seguir teniendo los datos necesarios para completar la descarga.
Ejemplos
- Los tipos específicos de clientes incluyen: navegadores web, clientes de correo electrónico y clientes de chat en línea.
- Los tipos específicos de servidores incluyen: servidores web, servidores FTP, servidores de bases de datos, servidores de correo electrónico, servidores de archivos, servidores de impresión. La mayoría de los servicios web también son tipos de servidores.
Preguntas y respuestas
P: ¿Qué es la arquitectura de software cliente-servidor?
R: La arquitectura de software cliente-servidor es un modelo que consta de dos partes, sistemas cliente y sistemas servidor, ambos comunicándose a través de una red informática o en el mismo ordenador.
P: ¿Cómo funciona una aplicación cliente-servidor?
R: Una aplicación cliente-servidor es un sistema distribuido formado por software cliente y servidor. El proceso cliente siempre inicia una conexión con el servidor, mientras que el proceso servidor siempre espera las peticiones de cualquier cliente.
P: ¿Qué ocurre cuando tanto el proceso cliente como el proceso servidor se ejecutan en el mismo ordenador?
R: Cuando tanto el proceso cliente como el proceso servidor se ejecutan en el mismo ordenador, esto se denomina configuración de puesto único.
P: ¿Qué ventajas ofrece el uso de una aplicación cliente-servidor?
R: El uso de una Aplicación Cliente Servidor proporciona una mejor forma de compartir cargas de trabajo entre varios ordenadores o usuarios.
P: ¿Quién inicia las conexiones en las Aplicaciones Cliente Servidor?
R: El Proceso Cliente siempre inicia las conexiones en las Aplicaciones Cliente Servidor.
P: ¿Quién espera las solicitudes en las Aplicaciones Cliente Servidor?
R: El proceso servidor siempre espera las solicitudes en las aplicaciones cliente servidor.
P: ¿Cómo pueden varios ordenadores o usuarios compartir cargas de trabajo entre sí?
R: Varios ordenadores o usuarios pueden compartir cargas de trabajo utilizando un sistema distribuido como una Aplicación Cliente Servidor.