Arquitecturas cliente/servidor

La arquitectura cliente/servidor es un modelo para el desarrollo de redes de computadores en el que cualquier intercambio de información (que se suelen denominar transacciones) se divide en elementos independientes que cooperan entre sí para intercambiar información, servicios o recursos.

En esta arquitectura el computador de cada uno de los usuarios, llamado cliente, inicia un proceso de diálogo: produce una demanda de información o solicita recursos. El computador que responde a la demanda del cliente, se conoce como servidor. Bajo este modelo cada usuario tiene la libertad de dirigirse a cualquier servidor que le ofrezca sus servicios y los distintos servidores también pueden intercambiar información entre sí.

Los clientes y los servidores pueden estar conectados a una LAN o a una WAN. Este tipo de arquitectura no forma parte de los protocolos de Internet como IP, TCP o UDP, sin embargo todos los estándares propuestos en Internet funcionan según este modelo.

Entre las principales características de la arquitectura cliente/servidor, se pueden destacar las siguientes:

  • El servidor presenta a todos sus clientes una interfaz única y bien definida.
  • El cliente no necesita conocer la lógica del servidor, sólo su interfaz externa.
  • El cliente no depende de la ubicación física del servidor, ni del tipo de equipo físico en el que se encuentra, ni de su sistema operativo.
  • Los cambios en el servidor implican pocos o ningún cambio en el cliente.

Los componentes básicos en una arquitectura cliente/servidor son el cliente, el servidor y la infraestructura de comunicaciones (middleware).

El cliente permite al usuario solicitar servicios, realizar peticiones de información o demandar el uso de recursos. Se encarga básicamente de la presentación de la información al usuario. Por lo tanto es necesario que se encargue de establecer conexión con el servidor, enviar la petición, recibir la respuesta, detectar y corregir los posibles errores y realizar actividades de sincronización y seguridad. Y todo esto con uno o varios servidores.

Los clientes se suelen situar en PC's o en estaciones de trabajo y se encargan de realizar el ‘front end’, que es la parte de la aplicación que interactúa con el usuario.

Por otro lado tenemos al servidor, la entidad física que provee servicios, devuelve resultados, ejecuta el procesamiento de datos o aplicaciones o gestiona la información y los recursos compartidos.

En el servidor se realiza el ‘back end’, que es la parte destinada a recibir las solicitudes de los clientes. Entonces tiene que encargarse de recibir las solicitudes del cliente, verificar su identidad, realizar las tareas solicitadas, generar una respuesta y enviarla al cliente. Además, debe detectar y solucionar los interbloqueos, los fallos y otros aspectos relacionados con la seguridad. Por todas estas razones la plataforma hardware de los servidores suele ser mucho más potente que la de los clientes. Se utilizan PC’s o estaciones de trabajo muy modernos o sistemas más complejos.

Existen diversos servidores que se clasifican basándose en sus funciones. Son denominados servidores dedicados ya que administran el uso de algún recurso en particular, por ejemplo:

  • Servidor de archivos.
  • Servidor de bases de datos.
  • Servidor de transacciones.
  • Servidor de Web.
  • Servidor de correo electrónico.
  • Servidor de impresoras.

En todos los casos el trabajo del servidor es reactivo, es decir, realiza una acción siempre basándose en una petición previa.

Para que los clientes y servidores puedan comunicarse es imprescindible una infraestructura lógica que proporcione los mecanismos básicos de direccionamiento y transporte. Esta infraestructura es el middleware, y es un módulo intermedio que no pertenece ni al servidor, ni a la red, ni al cliente. El middleware es un interfaz lógico para los servicios de red. Sus funciones son:

  • Independizar las dos entidades: El cliente y el servidor no necesitan saber comunicarse entre ellos, sino cómo comunicarse con el middleware.
  • Traducir la información de una aplicación y pasarla a la otra: Acepta consultas y datos recuperándolos de la aplicación cliente, los transmite y envía la respuesta desde el servidor regreso. También se encarga de la detección de errores.
  • Controlar las comunicaciones: Proporciona fiabilidad, transparencia y administración.

En resumen, todos los sistemas desarrollados en arquitectura cliente/servidor poseen las siguientes características:

  • El servidor es un proveedor de servicios y el cliente, por el contrario, es un consumidor.
  • Un servidor puede atender a muchos clientes al mismo tiempo y regular su acceso a recursos compartidos.
  • La relación entre cliente y servidor es de muchos a uno. Además los clientes solicitan servicios, mientras que la actitud de los servidores suele ser pasiva: esperan las solicitudes de los clientes.
  • El software cliente/servidor siempre oculta a los clientes la ubicación el servidor.
  • El software es independiente del hardware y se pueden tener las mismas o diferentes plataformas en los clientes y los servidores.
  • Los servidores pueden ser sustituidos sin afectar a los clientes, siempre y cuando la interfaz para recibir peticiones y ofrecer servicios no cambie.
  • Los sistemas cliente/servidor pueden escalarse horizontal o verticalmente. Es decir, se pueden añadir o eliminar clientes (con apenas un ligero impacto en el rendimiento del sistema) o bien, se puede cambiar a un servidor más grande o a servidores múltiples.
  • El código y los datos del servidor se conservan centralmente, esto implica menor costo de mantenimiento y además facilita la protección de la integridad de los datos compartidos. Además, los clientes mantienen su individualidad e independencia.

Según todo esto la arquitectura cliente/servidor es versátil, modular, flexible, y escalable. Además fomenta la variedad de plataformas, hardware y software dentro de las redes, y esto es muy importante hoy en día. Este tipo de arquitecturas mejora el aprovechamiento de los sistemas gracias a la compartición de todo tipo de recursos y también mejora el rendimiento de la red porque se elimina la necesidad de mover grandes bloques de información por la red hacia los nodos: los servidores controlan los datos, procesan peticiones y después transfieren sólo los datos requeridos a la máquina cliente.

En cuanto a las desventajas, son sistemas de gran complejidad puesto que es necesario integrar una gran variedad de productos y tecnologías diferentes. Además el mantenimiento puede hacerse complicado y es más difícil asegurar un alto grado de seguridad en la red. Por último, los problemas de congestión en la red pueden resultar críticos, puesto que un servidor puede dejar de atender por estos problemas a un gran número de peticiones de diferentes clientes.


No hay comentarios: