domingo, 23 de noviembre de 2008

4.1 Modelo Cliente Servidor.

Arquitectura Cliente/Servidor

Con la proliferación de ordenadores personales de bajo coste en el mercado, los recursos de sistemas de información existentes en cualquier organización se pueden distribuir entre ordenadores de diferentes tipos: ordenadores personales de gama baja, media y alta, estaciones de trabajo, miniordenadores o incluso grandes ordenadores.

El concepto de cliente/servidor proporciona una forma eficiente de utilizar todos estos recursos de máquina de tal forma que la seguridad y fiabilidad que proporcionan los entornos mainframe se traspasa a la red de área local. A esto hay que añadir la ventaja de la potencia y simplicidad de los ordenadores personales.

La arquitectura cliente/servidor es un modelo para el desarrollo de sistemas de información en el que las transacciones se dividen en procesos independientes que cooperan entre sí para intercambiar información, servicios o recursos. Se denomina cliente al proceso que inicia el diálogo o solicita los recursos y servidor al proceso que responde a las solicitudes.

En este modelo las aplicaciones se dividen de forma que el servidor contiene la parte que debe ser compartida por varios usuarios, y en el cliente permanece sólo lo particular de cada usuario.

Los clientes realizan generalmente funciones como:

  • Manejo de la interfaz de usuario.
  • Captura y validación de los datos de entrada.
  • Generación de consultas e informes sobre las bases de datos.
  • Por su parte los servidores realizan, entre otras, las siguientes funciones:
  • Gestión de periféricos compartidos.
  • Control de accesos concurrentes a bases de datos compartidas.
  • Enlaces de comunicaciones con otras redes de área local o extensa.

Siempre que un cliente requiere un servicio lo solicita al servidor correspondiente y éste le responde proporcionándolo. Normalmente, pero no necesariamente, el cliente y el servidor están ubicados en distintos procesadores. Los clientes se suelen situar en ordenadores personales y/o estaciones de trabajo y los servidores en procesadores departamentales o de grupo.

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.

Características funcionales

  • Esta arquitectura se puede clasificar en cinco niveles, según las funciones que asumen el cliente y el servidor, tal y como se puede ver en el siguiente diagrama:
  • En el primer nivel el cliente asume parte de las funciones de presentación de la aplicación, ya que siguen existiendo programas en el servidor dedicados a esta tarea. Dicha distribución se realiza mediante el uso de productos para el "maquillaje" de las pantallas del mainframe. Esta técnica no exige el cambio en las aplicaciones orientadas a terminales, pero dificulta su mantenimiento. Además, el servidor ejecuta todos los procesos y almacena la totalidad de los datos. En este caso se dice que hay una presentación distribuida o embellecimiento.
  • En el segundo nivel la aplicación está soportada directamente por el servidor, excepto la presentación que es totalmente remota y reside en el cliente. Los terminales del cliente soportan la captura de datos, incluyendo una validación parcial de los mismos y una presentación de las consultas. En este caso se dice que hay una presentación remota.
  • En el tercer nivel la lógica de los procesos se divide entre los distintos componentes del cliente y del servidor. El diseñador de la aplicación debe definir los servicios y las interfaces del sistema de información de forma que los papeles de cliente y servidor sean intercambiables, excepto en el control de los datos que es responsabilidad exclusiva del servidor. En este tipo de situaciones se dice que hay un proceso distribuido o cooperativo.
  • En el cuarto nivel el cliente realiza tanto las funciones de presentación como los procesos. Por su parte, el servidor almacena y gestiona los datos que permanecen en una base de datos centralizada. En esta situación se dice que hay una gestión de datos remota.
  • En el quinto y último nivel, el reparto de tareas es como en el anterior y además el gestor de base de datos divide sus componentes entre el cliente y el servidor. Las interfaces entre ambos están dentro de las funciones del gestor de datos y, por lo tanto, no tienen impacto en el desarrollo de las aplicaciones. En este nivel se da lo que se conoce como bases de datos distribuidas.

Características físicas

El diagrama del punto anterior da una idea de la estructura física de conexión entre las distintas partes que componen una arquitectura cliente / servidor. La idea principal consiste en aprovechar la potencia de los ordenadores personales para realizar sobre todo los servicios de presentación y, según el nivel, algunos procesos o incluso algún acceso a datos locales. De esta forma se descarga al servidor de ciertas tareas para que pueda realizar otras más rápidamente.

También existe una plataforma de servidores que sustituye al ordenador central tradicional y que da servicio a los clientes autorizados. Incluso a veces el antiguo ordenador central se integra en dicha plataforma como un servidor más. Estos servidores suelen estar especializados por funciones (seguridad, cálculo, bases de datos, comunicaciones, etc.), aunque, dependiendo de las dimensiones de la instalación se pueden reunir en un servidor una o varias de estas funciones.

Las unidades de almacenamiento masivo en esta arquitectura se caracterizan por incorporar elementos de protección que evitan la pérdida de datos y permiten multitud de accesos simultáneos (alta velocidad, niveles RAID, etc.).

Para la comunicación de todos estos elementos se emplea un sistema de red que se encarga de transmitir la información entre clientes y servidores. Físicamente consiste en un cableado (coaxial, par trenzado, fibra óptica, etc.) o en conexiones mediante señales de radio o infrarrojas, dependiendo de que la red sea local (RAL), metropolitana (MAN) o de área extensa (WAN).

Para la comunicación de los procesos con la red se emplea un tipo de equipo lógico denominado middleware que controla las conversaciones. Su función es independizar ambos procesos (cliente y servidor). La interfaz que presenta es la estándar de los servicios de red que hace que los procesos "piensen" en todo momento que se están comunicando con un red.

Características lógicas

Una de las principales aportaciones de esta arquitectura a los sistemas de información es la interfaz gráfica de usuario. Gracias a ella se dispone de un manejo más fácil e intuitivo de las aplicaciones mediante el uso de un dispositivo tipo ratón. En esta arquitectura los datos se presentan, editan y validan en la parte de la aplicación cliente.

En cuanto a los datos, cabe señalar que en la arquitectura cliente/servidor se evitan las duplicidades (copias y comparaciones de datos), teniendo siempre una imagen única y correcta de los mismos disponible en línea para su uso inmediato.

Todo esto tiene como fin que el usuario de un sistema de información soportado por una arquitectura cliente/servidor trabaje desde su estación de trabajo con distintos datos y aplicaciones, sin importarle dónde están o dónde se ejecuta cada uno de ellos.

Ventajas e inconvenientes

Ventajas

  • Aumento de la productividad:

· Los usuarios pueden utilizar herramientas que le son familiares, como hojas de cálculo y herramientas de acceso a bases de datos.

· Mediante la integración de las aplicaciones cliente/servidor con las aplicaciones personales de uso habitual, los usuarios pueden construir soluciones particularizadas que se ajusten a sus necesidades cambiantes.

· Una interfaz gráfica de usuario consistente reduce el tiempo de aprendizaje de las aplicaciones.

  • Menores costes de operación:

· Permiten un mejor aprovechamiento de los sistemas existentes, protegiendo la inversión. Por ejemplo, la compartición de servidores (habitualmente caros) y dispositivos periféricos (como impresoras) entre máquinas clientes permite un mejor rendimiento del conjunto.

· Proporcionan un mejor acceso a los datos. La interfaz de usuario ofrece una forma homogénea de ver el sistema, independientemente de los cambios o actualizaciones que se produzcan en él y de la ubicación de la información.

· El movimiento de funciones desde un ordenador central hacia servidores o clientes locales origina el desplazamiento de los costes de ese proceso hacia máquinas más pequeñas y por tanto, más baratas.

  • Mejora en el rendimiento de la red:

· Las arquitecturas cliente/servidor eliminan la necesidad de mover grandes bloques de información por la red hacia los ordenadores personales o estaciones de trabajo para su proceso. Los servidores controlan los datos, procesan peticiones y después transfieren sólo los datos requeridos a la máquina cliente. Entonces, la máquina cliente presenta los datos al usuario mediante interfaces amigables. Todo esto reduce el tráfico de la red, lo que facilita que pueda soportar un mayor número de usuarios.

· Tanto el cliente como el servidor pueden escalarse para ajustarse a las necesidades de las aplicaciones. Las UCPs utilizadas en los respectivos equipos pueden dimensionarse a partir de las aplicaciones y el tiempo de respuesta que se requiera.

· La existencia de varias UCPs proporciona una red más fiable: un fallo en uno de los equipos no significa necesariamente que el sistema deje de funcionar.

· En una arquitectura como ésta, los clientes y los servidores son independientes los unos de los otros con lo que pueden renovarse para aumentar sus funciones y capacidad de forma independiente, sin afectar al resto del sistema.

· La arquitectura modular de los sistemas cliente/servidor permite el uso de ordenadores especializados (servidores de base de datos, servidores de ficheros, estaciones de trabajo para CAD, etc.).

· Permite centralizar el control de sistemas que estaban descentralizados, como por ejemplo la gestión de los ordenadores personales que antes estuvieran aislados.

Inconvenientes

  • Hay una alta complejidad tecnológica al tener que integrar una gran variedad de productos.
  • Requiere un fuerte rediseño de todos los elementos involucrados en los sistemas de información (modelos de datos, procesos, interfaces, comunicaciones, almacenamiento de datos, etc.). Además, en la actualidad existen pocas herramientas que ayuden a determinar la mejor forma de dividir las aplicaciones entre la parte cliente y la parte servidor.
  • Es más difícil asegurar un elevado grado de seguridad en una red de clientes y servidores que en un sistema con un único ordenador centralizado.
  • A veces, los problemas de congestión de la red pueden degradar el rendimiento del sistema por debajo de lo que se obtendría con una única máquina (arquitectura centralizada). También la interfaz gráfica de usuario puede a veces ralentizar el funcionamiento de la aplicación.
  • El quinto nivel de esta arquitectura (bases de datos distribuidas) es técnicamente muy complejo y en la actualidad hay muy pocas implantaciones que garanticen un funcionamiento totalmente eficiente.

Fases de implantación

Una arquitectura cliente/servidor debe mostrar los sistemas de información no como un cliente que accede a un servidor corporativo, sino como un entorno que ofrece acceso a una colección de servicios. Para llegar a este estado pueden distinguirse las siguientes fases de evolución del sistema:

  • Fase de Iniciación

Esta etapa se centra sobre todo en la distribución física de los componentes entre plataformas. Los dos tipos de plataforma son:

· Una plataforma cliente para la presentación (generalmente un ordenador personal de sobremesa).

· Una plataforma servidora (como por ejemplo el servidor de una base de datos relacional) para la ejecución de procesos y la gestión de los datos.

Un ejemplo sería el de una herramienta de consulta que reside en un ordenador personal a modo de cliente y que genera peticiones de datos que van a través de la red hasta el servidor de base de datos. Estas peticiones se procesan, dando como resultado un conjunto de datos que se devuelven al cliente.

En esta fase pueden surgir los siguientes problemas:

· Cómo repartir la lógica de la aplicación entre las plataformas cliente y servidor de la forma más conveniente.

· Cómo gestionar la arquitectura para que permita que cualquier cliente se conecte con cualquier servidor.

  • Fase de Proliferación

La segunda etapa de una arquitectura cliente/servidor se caracteriza por la proliferación de plataformas clientes y servidoras. Ahora, el entorno para la interacción entre clientes y servidores se hace mucho más complejo. Puede hacerse una distinción entre:

· Datos de servidores a los que se accede a través de una red de área extensa (WAN) y

· Datos a los que se accede a través de una red de área local (RAL).

Los mecanismos de conexión son muy variados y suelen ser incompatibles.

En esta fase los problemas que se pueden plantear son:

· La gestión de accesos se convierte en crítica y compleja debido a la estructura del organismo donde se está implantando la arquitectura. El mercado ofrece algunas soluciones que mejoran la interoperabilidad y que se basan en conexiones modulares que utilizan entre otros:

· Drivers en la parte cliente

· Pasarelas (gateways) a bases de datos

· Especificaciones de protocolos cliente/servidor, etc.

· Los requisitos de actualización de datos pasan a formar parte de los requisitos solicitados al sistema cliente/servidor. Ahora no sólo se consultan datos, sino que se envían peticiones para actualizar, insertar y borrar datos.

  • Fase de Control

En esta fase se consolidan los caminos de acceso desde una plataforma cliente particular a una plataforma servidora particular.

Los conceptos en los que se debe poner especial énfasis son los siguientes:

· Transparencia en la localización. Significa que la aplicación cliente no necesita saber nada acerca de la localización (física o lógica) de los datos o los procesos. La localización de los recursos debe estar gestionada por servidores y estar representada en las plataformas adecuadas de forma que se facilite su uso por parte de las plataformas cliente.

· Gestión de copias. El sistema se debe configurar de forma que se permita copiar la información (datos o procesos) de los servidores.

· Especialización de los equipos servidores en servidores de bases de datos o en servidores de aplicaciones. Los servidores de bases de datos continúan ofreciendo servicios orientados a datos a través de llamadas SQL o a través de procedimientos almacenados. En cualquier caso, los servicios se orientan a mantener la integridad de los datos. Por otro lado, los servidores de aplicaciones se centran en los procesos implementando partes de la lógica de la aplicación en la parte servidora.

  • Fase de Integración

Esta etapa se caracteriza por el papel conjunto que juegan la gestión de accesos, la gestión de copias y la gestión de recursos. La gestión de la información se debe realizar de forma que se pueda entregar la información controlada por los servidores que contienen los datos a las plataformas clientes que los requieran. El concepto en que se basa este tipo de gestión es la distinción entre dos tipos de datos: datos de operación y datos de información. Para ajustarse a los posibles cambios en los procesos, los datos de operación varían continuamente mientras que los datos de información son invariables porque son de naturaleza histórica y se obtienen tomando muestras en el tiempo de los datos de operación.

  • Fase de Madurez

Esta es la etapa final de una arquitectura cliente/servidor. Se caracteriza por una visión más flexible de las plataformas físicas del sistema que se contemplan como una única unidad lógica. Este estado también se caracteriza porque la tecnología cliente/servidor se ha generalizado en la empresa. Ya no es un problema saber qué componentes se distribuyen en qué plataformas, porque los recursos se pueden redistribuir para equilibrar la carga de trabajo y para compartir los recursos de información. Lo fundamental aquí es saber quién ofrece qué servicios. Para ello es necesario distinguir qué tipo de servicios y recursos se demandan y conocer las características de esta arquitectura basada en servicios.

En la fase de integración veíamos que se establecía una distinción entre datos de operación y datos de información histórica. Por contra, en un entorno de operación cliente/servidor que se encuentre en la fase de madurez, lo interesante es distinguir entre dos nuevos términos: organismo y grupo de trabajo. Esta distinción se establece basándose en sus diferencias organizativas. El grupo de trabajo es el entorno en el que grupos organizados de personas se centran en tareas específicas de la actividad del organismo al que pertenecen. Estos equipos de personas requieren una información propia y unas reglas de trabajo particulares, que pueden ser diferentes de las del organismo en su globalidad.

Una arquitectura basada en servicios es la que se contempla como una colección de consumidores de servicios poco relacionados entre sí y los productores de dichos servicios. La utilización de este tipo de arquitectura permite pensar en nuevos retos de diseño:

  • Desarrollo de componentes reutilizables entre distintas aplicaciones y distintos grupos de trabajo
  • Desarrollo de aplicaciones distribuidas
  • Gestión del desarrollo de aplicaciones entre distintos equipos, etc.

Criterios de utilización

El mercado de los sistemas cliente/servidor está marcando nuevos caminos porque:

  • La información puede ahora residir en redes de ordenadores personales.
  • Los usuarios pueden tener un mayor acceso a los datos y a la capacidad de proceso.

El marketing también juega un papel importante. Muchos sistemas que se denominan cliente/servidor en realidad distan bastante de serlo y muchas aplicaciones aseguran ser tan fiables como sus homólogas en el host.

En realidad, el cambio hacia tecnologías cliente/servidor está aún en sus comienzos, pero de ninguna manera debe ignorarse.

La forma de asegurar la futura utilización productiva de sistemas cliente/servidor, asumiendo un bajo riesgo, debe considerar:

  • Comenzar por el downsizing: utilizar redes de área local y familiarizar a los usuarios con el uso de ordenadores personales.
  • Estudiar las herramientas cliente/servidor que se encuentren disponibles y aquellas que se encuentren en fase de desarrollo; la mayoría están basadas en algún sistema de gestión de base de datos en red local.
  • Permitir el acceso de los usuarios a los datos de la organización conectando las redes locales entre sí.
  • Añadir interfaces de usuario amigables al equipo lógico del ordenador central y desarrollar prototipos.

Una organización tiene que decidir cuándo y cómo debe migrar en su caso, hacia un entorno cliente/servidor, teniendo en cuenta la evolución de las herramientas cliente/servidor y desarrollando una estrategia que se base en los estándares predominantes en el mercado.

Relación con otros conceptos

Arquitectura cliente/servidor y downsizing

Muchas organizaciones están transportando sus aplicaciones a plataformas más pequeñas (downsizing) para conseguir la ventaja que proporcionan las nuevas plataformas físicas más rentables y la arquitectura cliente/servidor. Este transporte siempre supone un coste, debido a la necesidad de rediseñar las aplicaciones y de re-entrenar a los usuarios en los nuevos entornos.

Independencia de Bases de Datos

Las arquitecturas cliente/servidor permiten aprovechar los conceptos de cliente y servidor para desarrollar aplicaciones que accedan a diversas bases de datos de forma transparente. Esto hace viable cambiar la aplicación en la parte servidora, sin que la aplicación cliente se modifique. Para que sea posible desarrollar estas aplicaciones es necesaria la existencia de un estándar de conectividad abierta que permita a los ordenadores personales y estaciones de trabajo acceder de forma transparente a bases de datos corporativas heterogéneas.

Relación con los Sistemas Abiertos

Las arquitecturas cliente/servidor se asocian a menudo con los sistemas abiertos, aunque muchas veces no hay una relación directa entre ellos. De hecho, muchos sistemas cliente/servidor se pueden aplicar en entornos propietarios.

En estos entornos, el equipo físico y el lógico están diseñados para trabajar conjuntamente, por lo que, en ocasiones se pueden realizar aplicaciones cliente/servidor de forma más sencilla y fiable que en los entornos que contienen plataformas heterogéneas.

El problema surge de que los entornos propietarios ligan al usuario con un suministrador en concreto, que puede ofrecer servicios caros y limitados. La independencia del suministrador que ofrecen los entornos de sistemas abiertos, crea una competencia que origina mayor calidad a un menor precio.

Pero, por otra parte, debido a la filosofía modular de los sistemas cliente/servidor, éstos se utilizan muchas veces en entornos de diferentes suministradores, adecuando cada máquina del sistema a las necesidades de las tareas que realizan. Esta tendencia está fomentando el crecimiento de las interfaces gráficas de usuario, de las bases de datos y del software de interconexión.

Debido a esto, se puede afirmar que los entornos cliente/servidor facilitan el movimiento hacia los sistemas abiertos. Utilizando este tipo de entornos, las organizaciones cambian sus viejos equipos por nuevas máquinas que pueden conectar a la red de clientes y servidores.

Los suministradores, por su parte, basan uno de los puntos clave de sus herramientas cliente/servidor en la interoperabilidad.

Relación con Orientación a Objetos

No hay una única forma de programar aplicaciones cliente/servidor; sin embargo, para un desarrollo rápido de aplicaciones cliente/servidor y para obtener una reducción importante de costes, la utilización de la tecnología cliente/servidor puede considerarse en conjunción con la de orientación a objetos.

No hay comentarios: