Capítulo 1: Introducción a los sistemas operativos en red



1.3. Tipos de arquitecturas cliente/servidor

Ahora que conocemos los fundamentos de la tecnología cliente/servidor, debemos analizar la interacción entre sus componentes para poder establecer cómo implementarla de la forma más adecuada.

En este sentido, deberemos realizar un análisis previo de los requerimientos en cuanto a los eventos que pueden producirse y las restricciones a las que se verá sometida la instalación, el tipo y volumen de información que va a procesarse, el tipo de bases de datos a utilizar y su tamaño (si son necesarias), la estimación sobre el tráfico de la red y el tiempo de respuesta, la ubicación física tanto de los datos que se van a manejar como de los procesos que la van a procesar, etc.

Para dar respuesta a estas situaciones, estableceremos dos tipos de clasificación diferentes: El primero atenderá al tamaño del lado servidor comparado con el tamaño del lado cliente. El segundo hará referencia al tipo de servicio que se ofrece.

Clasificación según el tamaño del lado cliente y del lado servidor

Una de las características del modelo cliente/servidor es que permite balancear la potencia de cálculo aplicada hacia el lado servidor o hacia el lado cliente, según convenga.

Por ejemplo, si el número de clientes fuese elevado, y la mayoría del proceso se realizara en el lado servidor, no necesitaríamos clientes muy potentes, pero probablemente necesitaríamos ampliar la potencia de cálculo del lado servidor y, como situación complementaria, tendríamos que valorar el aumento de tráfico en la red.

Por otro lado, con clientes más potentes, buena parte del cálculo puede realizarse en el lado cliente, accediendo al servidor de forma esporádica. Esto derivaría en un servidor con menos necesidades de recursos, un menor tráfico en la red y un mayor coste de los equipos en el lado cliente.

Por lo tanto, como puede deducirse, disponemos de dos alternativas:

  • Cliente pesado, servidor ligero (en inglés, Thick Client, Thin Server): Aquí, tanto el nivel de presentación como el nivel de aplicación se ejecutan en el lado cliente. Incluso podrían procesarse contenidos multimedia con un alto consumo de recursos. El servidor se utiliza para tareas como el hospedaje del SGBD (Sistema Gestor de Bases de Datos) o incluso para otras tareas menores, como administrar las tareas de impresión. En este tipo de esquemas, podría llegar a interrumpirse de forma momentánea el servicio de red sin perjudicar de forma significativa a los clientes.

  • Servidor pesado, cliente ligero (en inglés, Thick Server, Thin Client): El lado cliente se emplea sólo para el nivel de presentación (muchas veces utilizando simplemente un navegador web) y el lado servidor se encarga de ejecutar la aplicación. En este tipo de esquemas podríamos disponer, incluso, de clientes sin disco duro. Otra de las ventajas de esta opción es que ofrecen una mayor seguridad frente a intentos de acceso indebido.

Normalmente, la segunda alternativa presenta una mayor flexibilidad y un menor coste, siempre que se hayan resuelto los posibles problemas que mencionábamos antes.

Clasificación según el tipo de servicio que se ofrece

Obviamente, son muchos los servicios que se pueden ofrecer en una arquitectura cliente/servidor y sería muy extenso realizar una clasificación detallada de los tipos de servidor atendiendo a todos los servicios que pueden ofrecer. Por ese motivo, aquí nos limitaremos a incluir sólo los más importantes:

  • Servidores de archivos: Se suelen utilizar para crear almacenes de documentos en un lugar centralizado de la red (Copias de seguridad, imágenes, plantillas de documentos, etc.)
  • En una transacción, una serie de operaciones que están relacionadas entre sí se efectúan como un todo (por ejemplo, la actualización de los datos de diferentes tablas en la base de datos).

    Si una parte de la operación fracasa, fracasa la transacción completa.

    Esto asegura la integridad de los datos almacenados.

    Servidores de bases de datos: Normalmente están asociados a la utilización de aplicaciones cliente/servidor donde un proceso cliente requiera datos al servidor de bases de datos.

    Lógicamente, el acceso a los datos será compartido por diferentes clientes de forma simultánea (aplicándose los mecanismos de protección necesarios sobre los datos ante la concurrencia de diferentes clientes y la existencia de distintos niveles de privilegio).

    Este tipo de estructuras suelen basarse en el concepto de transacción.

  • Servidores de impresión (Print Server): Facilitan la compartición de impresoras y administran los trabajos de impresión en la red. De esta forma se permite a los clientes que utilicen una impresora sin importar su ubicación física. Un servidor de impresión utiliza una cola para almacenar, de forma ordenada, los trabajos que recibe. Esta cola puede ser administrada con diferentes privilegios en función del cliente que realice la solicitud. Es común que un servidor de impresión englobe también a un servidor de fax, ya que se gestionan de forma similar.

  • En la programación orientada a objetos (OOP, Object Oriented Programming), las aplicaciones están formadas por objetos que interactúan entre ellos a través de sus métodos.

    Se basa en técnicas como la encapsulación, la herencia y el polimorfismo.

    En la actualidad es la forma más extendida de programar aplicaciones.

    Servidores de transacciones: Aplican el concepto de transacción mencionado en las bases de datos a la llamada de funciones o métodos almacenados en el servidor, de modo que el intercambio a través de la red se limita a un solo mensaje de solicitud o respuesta. De esta forma, se agrupan una o más acciones en una unidad lógica que se ejecuta como un todo, garantizándose la integridad del proceso. Estas aplicaciones pretenden dar soporte a procedimientos y reglas en sistemas de misión crítica y se denominan OLTP (Online transaction processing, Procesamiento de transacciones en línea).

    Por ejemplo, un cajero automático es un buen ejemplo de aplicación de procesamiento de transacciones.

  • Servidores de objetos: Dan soporte al procesamiento distribuido. Una determinada aplicación puede estar construida por diferentes objetos que pueden estar hospedados en diferentes puntos de la red. De esta forma, un objeto puede hacer uso de los métodos de otros objetos sin importar dónde estén almacenados. La comunicación entre objetos se realiza mediante un componente llamado Object Request Broker (ORB), que sirve de intermediario entre las solicitudes y los resultados obtenidos.

  • Servidores web: Su función consiste en devolver un determinado documento cuando un cliente lo solicita. La comunicación utiliza el protocolo HTTP (que está basado en RPC).

HTTP