29 de agosto 2003
Arquitectura Cliente - Servidor
Situaciones que apoyaron el modelo
En muchas situaciones es más eficiente que el procesamiento centralizado, dado que éste experimenta una "des-economía" de escala cuando aumenta mucho la cantidad de usuarios.
Existían ya en ese momento servidores
razonablemente eficientes y confiables.
Se había establecido un estándar de hecho para una
interface Cliente/Servidor (el ODBC SQL, adoptado por todos los fabricantes
importantes de servidores).
Era imprescindible, para apoyar con información a
la creciente cantidad de ejecutivos de nivel medio que necesitan tomar
decisiones ante el computador, ayudándose con las herramientas "front
office", que utilizan con toda naturalidad (planillas electrónicas,
procesadores de texto, graficadores, correos electrónicos, etc.
Conceptos
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.
Es el modelo de interacción más común entre
aplicaciones en una red. No forma parte de los conceptos de la Internet como
los protocolos IP, TCP o UDP, sin embargo todos los servicios estándares de
alto nivel propuestos en Internet funcionan según este modelo.
Los principales componentes del esquema cliente /
servidor son entonces los Clientes, los Servidores y la infraestructura de
comunicaciones.
Funciones del cliente
Manejo de la interface del usuario.
Captura y validación de los datos de entrada.
Generación de consultas e informes sobre las bases
de datos.
Funciones del Servidor
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.
Principales características
El servidor presenta a todos sus clientes una
interface única y bien definida.
El cliente no necesita conocer la lógica del
servidor, sólo su interface 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.
Componentes esenciales
Plataforma Operativa. La
plataforma deberá soportar todos los modelos de distribución Cliente/Servidor,
todos los servicios de comunicación, y deberá utilizar, preferentemente,
componentes estándar de la industria para los servicios de distribución. Los
desarrollos propios deben coexistir con las aplicaciones estándar y su
integración deberá ser imperceptible para el usuario. Igualmente, podrán
acomodarse programas escritos utilizando diferentes tecnologías y herramientas.
Entorno de Desarrollo de Aplicaciones. Debe
elegirse después de la plataforma operativa. Aunque es conveniente evitar la
proliferación de herramientas de desarrollo, se garantizará que el enlace entre
éstas y el middleware no sea excesivamente rígido. Será posible utilizar
diferentes herramientas para desarrollar partes de una aplicación. Un entorno
de aplicación incremental, debe posibilitar la coexistencia de procesos cliente
y servidor desarrollados con distintos lenguajes de programación y/o
herramientas, así como utilizar distintas tecnologías (por ejemplo, lenguaje
procedural, lenguaje orientado a objetos, multimedia), y que han sido puestas
en explotación en distintos momentos del tiempo.
Componentes esenciales de la infraestructura
Gestión de Sistemas. Estas funciones aumentan
considerablemente el costo de una solución, pero no se pueden evitar. Siempre
deben adaptarse a las necesidades de la organización, y al decidir la
plataforma operativa y el entorno de desarrollo, es decir, en las primeras
fases de la definición de la solución, merece la pena considerar los aspectos
siguientes:
¿Qué necesitamos gestionar?
¿Dónde estarán situados los procesadores y
estaciones de trabajo?
¿Cuántos tipos distintos se soportarán?
¿Qué tipo de soporte es necesario y quién lo proporciona?
30 de Agosto del 2003
Clasificación según las funciones
Presentación distribuida
el cliente asume parte de las funciones de
presentación de la aplicación, mediante el uso de productos para el
"maquillaje" de las pantallas del mainframe siguen existiendo
programas en el servidor, dedicados a esta tarea.
Esta técnica no exige el cambio en las
aplicaciones orientadas a terminales, pero dificulta su mantenimiento. El
servidor ejecuta todos los procesos y almacena la totalidad de los datos.
Presentacion remota 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
Proceso distribuido o
cooperativo 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, pero el
control de los datos, que es responsabilidad exclusiva del servidor
Gestión de datos remota el cliente realiza tanto las funciones de presentación como los procesos.
El servidor almacena y gestiona
los datos que permanecen en una base de datos centralizada.
Bases de datos
distribuidas. 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
Características físicas
Servidores
Existe una plataforma de
servidores que sustituye al ordenador central tradicional y que da servicio a
los clientes autorizados.
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.)
Almacenamiento
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.).
Comunicación
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
Puede Red Local (LAN),
metropolitana (MAN) o de área extensa (WAN).
Características físicas
Comunicación de procesos
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 interface que presenta es la
estándar de los servicios de red, hace que los procesos "piensen" en
todo momento que se están comunicando con una red.
Middleware
Es un módulo intermedio que actúa como conductor
entre dos módulos de software. Para compartir datos, los dos módulos de
software no necesitan saber cómo comunicarse entre ellos, sino cómo comunicarse
con el módulo de middleware
Debe ser capaz de traducir la información de una
aplicación y pasarla a la otra. Permite la comunicación entre objetos y
servicios de gestión básicos para aplicaciones de objetos distribuidos.
En una aplicación cliente / servidor el middleware
reside entre la aplicación cliente y la aplicación del sistema host que actúa
como servidor.
Puede definirse en términos de programación
orientada a objetos. El módulo identifica diferentes objetos y conoce qué
propiedades tienen asociadas, por lo que puede responder a peticiones
referentes a los mismos.
6 de septiembre del 2003
Introducción
Es un hecho que la información es el capital más
importante que las empresas poseen. Las nuevas tecnologías permiten digitalizar
la mayoría de los servicios y seguramente esta tendencia seguirá en aumento.
Las tareas deben de ser controladas por la
aplicación cliente / servidor y deben ser consideradas como parte del
desarrollo, no resulta fácil dado el rápido cambio de estas tecnologías y la
gran cantidad de conceptos involucrados.
Entre las primeras cosas que hay que decir de la
arquitectura cliente /servidor, es que estamos frente a la plataforma abierta
por excelencia.
Esta arquitectura permite distribuir físicamente los
procesos y los datos en forma más eficiente lo que en computación distribuida
afecta directamente el tráfico de la red, reduciéndolo grandemente.
Se requieren conocimientos de varias áreas y que las
decisiones tomadas respecto del diseño deben ser las adecuadas.
La tecnología cliente / servidor es el procesamiento
cooperativo de la información por medio de un conjunto de procesadores, en el
cual múltiples clientes, distribuidos geográficamente, solicitan requerimientos
a uno o más servidores centrales.
En un modelo cliente / servidor el cliente envía un
mensaje solicitando un determinado servicio a un servidor y este envía uno o
varios mensajes con la respuesta. Tanto clientes como servidores son entidades
independientes que operan conjuntamente a través de una red para realizar una
tarea.
- 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 basada en
el concepto de “servicio”, que se establece entre clientes y servidores.
- La relación establecida pude ser de mucho a a uno,
en la que un servidor puede dar servicio a muchos clientes, regulando su acceso
a recursos compartidos.
- Los clientes corresponden a procesos activos en
cuanto a que son éstos los que hacen peticiones de servicios a los servidores.
Estos últimos tienen un carácter pasivo ya que esperan las 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 servicio.
- Las plataformas de software y hardware entre
clientes y servidores son independientes. Una de las principales ventajas de
ésta 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 el rendimiento. La
escalabilidad vertical permite mejorar las características del servidor o
agregar múltiples servidores.
Componentes del modelo
Cliente/Servidor
Cliente
•
Administrar
la interfaz de usuario.
•
Interactuar
con el usuario.
•
Procesar la
lógica de la aplicación y hacer validaciones locales.
•
Generar
requerimientos de bases de datos.
•
Recibir
resultados del servidor.
•
Formatear
resultados.
Servidor
•
Aceptar los
requerimientos de bases de datos que hacen los clientes.
•
Procesar
requerimientos de bases de datos.
•
Formatear
datos para trasmitirlos a los clientes.
•
Procesar la
lógica de la aplicación y realizar validaciones a nivel de bases de datos.
Middleware .- Modelo intermedio que actúa como
conductor entre 2 módulos de software.
» Por tamaño de componentes
Este tipo de clasificación se basa en los grados de
libertad que brinda el modelo cliente/servidor para balancear la carga de
proceso entre los niveles de presentación, aplicación y base de datos.
Dependiendo de que segmento de las capas de software tenga que soportar la
mayor o menor carga de procesamiento, se habla de Fat Cliente (Thin Server) o
Fat server (Thin Client).
» Por planos o capas (Tier)
Una de las más comunes y discutidas distinciones
entre las diferentes arquitecturas cliente/servidor se basan en la idea de
planos (tier), la cual es una variación sobre la división o clasificación por
tamaño de componentes (clientes grandes y servidores amplios). Esto se debe a
que se trata de definir el modo en que las prestaciones funcionales de la
aplicación serán asignadas, y en que proporción, tanto al cliente como al
servidor. Dichas prestaciones se deben agrupar entre los tres componentes
clásicos para cliente/servidor: interfaz de usuario, lógica de negocios y los
datos compartidos, cada uno de los cuales corresponde a un plano.
» Por tamaño de componentes
* Fat Client (Thin Server)
En este esquema de arquitectura el grueso de la
aplicación es ejecutada en el cliente, es decir, el nivel de presentación y el
nivel de aplicación corren en un único proceso cliente, y el servidor es
relegado a realizar las funciones que provee un administrador de base de datos.

*Fat Server (Thin Client)
Este es el caso opuesto al anterior, el proceso
cliente es restringido a la presentación de la interfaz de usuario, mientras
que el grueso de la aplicación corre por el lado del servidor de aplicación.

En general este tipo de arquitectura presenta una
flexibilidad mayor como para desarrollar un gran espectro de aplicaciones,
incluyendo los sistemas de misión crítica a través de servidores de
transacciones.
» Por planos o capas (Tier)
-Planos a niveles de software
Este enfoque o clasificación es el más generalizado
y el que más se ajusta a los enfoques modernos, dado que se fundamenta en los
componentes lógicos de la estructura cliente/servidor y en la madurez y
popularidad de la computación distribuida. Por ejemplo, esto permite hablar de
servidores de aplicación distribuidos a lo largo de una red, y no tiene mucho
sentido identificar a un equipo de hardware como servidor, si no más bien
entenderlo como una plataforma física sobre la cual pueden operar uno o más
servidores de aplicaciones.
1. Implementado con SQL Remoto
En este esquema el cliente envía mensajes con
solicitudes SQL al servidor de bases de datos y el resultado de cada
instrucción SQL es devuelto por la red, no importando si son uno, diez, cien o
mil registros. Es el mismo cliente quien debe procesar todos los registros que
le fueron devueltos por el servidor de base de datos, según el requerimiento
que él mismo hizo.
*Ventajas:
- Presenta una estructura de desarrollo bastante
simple por cuanto el programador típicamente maneja un único ambiente de
desarrollo.
*Desventajas:
- La gran cantidad de información que viaja al
cliente congestiona demasiado el tráfico de red, lo que se traduce en bajo
rendimiento.

2. Implementado con Procedimientos
Almacenados
En este esquema el cliente envía llamadas a
funciones que residen en la base de datos, y es ésta quien resuelve y procesa
la totalidad de las instrucciones SQL agrupadas en la mencionada función.
*Ventajas:
- Presenta las mismas ventajas de una arquitectura
dos planos con procedimientos almacenados, pero mejora considerablemente el
rendimiento sobre ésta, dado que reduce el tráfico por la red al procesar los datos
en la misma base de datos, haciendo viajar sólo el resultado final de un
conjunto de instrucciones SQL.
*Desventajas:
- Se pierde flexibilidad y escalabilidad en las
soluciones implantadas
- No existen dos implementaciones de proveedores
iguales.
- Se pierde la independencia entre el código de la
aplicación (conocimiento y reglas del negocio) y los datos.
Cliente/Servidor Tres Planos.
Esta
estructura se caracteriza por elaborar la aplicación en base a dos capas
principales de software, más la capa correspondiente al servidor de base de
datos. Al igual que en la arquitectura dos capas, y según las decisiones de
diseño que se tomen, se puede balancear la carga de trabajo entre el proceso
cliente y el nuevo proceso correspondiente al servidor de aplicación.

En
este esquema el cliente envía mensajes directamente al servidor de aplicación
el cual debe administrar y responder todas las solicitudes. Es el servidor,
dependiendo del tipo de solicitud, quien accede y se conecta con la base de
datos.
Ventajas:
-
Reduce el tráfico de información en la red por lo que mejora el rendimiento de
los sistemas (especialmente respecto de la estructura en dos planos).
-
Provee escalabilidad horizontal y vertical.
- Se
mantiene la independencia entre el código de la aplicación (reglas y
conocimiento del negocio) y los datos, mejorando la portabilidad de las
aplicaciones.
-
Dado que mejora el rendimiento al optimizar el flujo de información entre
componentes, permite construir sistemas críticos de alta confiabilidad.
- El
mismo hecho de localizar las reglas del negocio en su propio ambiente, en vez
de distribuirlos en la capa de interfaz de usuario, permite reducir el impacto de
hacer mantenimiento, cambios urgentes de última hora o mejoras al sistema.
-
Disminuye el número de usuarios (licencias) conectados a la base de datos.
Desventajas:
- Dependiendo de la elección de los lennguajes de
desarrollo, puede presentar mayor complejidad en comparación con
cliente/servidor dos planos.
-
Existen pocos proveedores de herramientas integradas de desarrollo con relación
al modelo cliente/servidor dos planos, y normalmente son de alto costo.
Planos
a niveles de hardware.
Cliente/Servidor Dos Planos.
Como
se ve en la figura, los clientes son conectados vía LAN a un servidor de
aplicaciones local, el cual, dependiendo de la aplicación puede dar acceso a
los datos administrados por él.
Cliente/Servidor Tres Planos.

Como
se ve en la figura, los clientes son conectados vía LAN a un servidor de aplicaciones
local, el cual a su vez se comunica con un servidor central de bases de datos.
El servidor local tiene un comportamiento dual, dado que actúa como cliente o
servidor en función de la dirección de la comunicación.
Cliente/Servidor Múltiples Planos.

Este
esquema permite que las PCs clientes puedan conectarse directamente a un
servidor de bases de datos, pasando por alto a los servidores locales, los
cuales son utilizados como simples servidores de archivos.
Servidores de Bases de Datos
Esta
relacionado con la arquitectura en dos planos, descrita anteriormente.
Obviamente la creación de aplicaciones cliente/servidor está asociada a la
utilización de servidores de bases de datos relacionales SQL, y dependiendo de
los requerimientos y restricciones se debe elegir entre una arquitectura dos o
tres planos. Pero una arquitectura centrada en un servidor de bases de datos, cualquiera
de las modalidades dos planos, permite que un proceso cliente solicite datos y
servicios directamente a un servidor de bases de datos. El servidor debe
proveer un acceso compartido a los datos con los mecanismos de protección
necesarios, así como proveer mecanismos para seleccionar resultados dentro de
un conjunto de datos, posibilitando un ahorro en procesos de comunicación. El
servidor debe también proveer mecanismos de concurrencia, seguridad y
consistencia de datos, basado principalmente en el concepto de transacción en
el que todo se realiza, y por lo tanto se hace permanente, o todo falla,
anulándose la transacción en tal caso.
Los
servidores de bases de datos actuales son una mezcla de SQL estándar más otras
extensiones propias de cada proveedor. Por ejemplo casi todas las bases de
datos están provistas con procedimientos almacenados (stored procedures),
desencadenantes (triggers) y restricciones (constraints) pero presentan
diferencias importantes en su implementación. Es claro que esto obedece a
presiones comerciales para tratar de extender los mecanismos de bases de datos
para que realicen más funciones de las que corresponden a un servidor SQL
relacional, con el objeto de tener una mayor participación en el espectro de
los sistemas cliente/servidor por parte de los proveedores de bases de datos y
como una manera de diferenciar sus productos.
Procedimientos
Almacenados
Una
de las posibilidades de implementar de mejor forma un sistema cliente/servidor
en dos planos (two-tier), sin olvidar todas sus restricciones y limitaciones,
es a través de procedimientos almacenados, que son funciones que agrupan un
conjunto de instrucciones y lógica de procedimientos SQL, los cuales son
compilados y almacenados en la misma base.
El
rol principal de los procedimientos almacenados es proveer la parte servidora
de la lógica de una aplicación cliente/servidor, es decir vendría a reemplazar
al servidor de aplicaciones en una arquitectura tres planos (three-tier). Con
todo, si bien los procedimientos almacenados permiten a un servidor brindar
servicios aptos para OLTP (On Line Transaction Proccesing), no se compara con
los rendimientos alcanzados por una arquitectura en tres planos con TP pesado.
Desencadenantes : Son mecanismos que permiten realizar acciones automáticamente
sobre los datos, las cuales están asociadas a algún evento definido.
Normalmente son implementados a través de procedimientos almacenados. Los
eventos a los cuales se hace referencia están asociados a las actualizaciones
de tablas mediante sentencias delete, insert o update, y son llamados
implícitamente al suceder cualquiera de estos eventos, a diferencia de los
procedimientos almacenados que son llamados explícitamente por un proceso
cliente.
Restricciones
: Al igual que los desencadenantes, son acciones que se
realizan asociadas a algún evento determinado y están orientadas a llevar a
cabo validaciones más simples de datos. Los tipos de eventos son los mismos que
para los desencadenantes como son sentencias delete, insert o update.
Servidores de transacciones
Estos
tipos de sistemas se pueden implementar con cualquiera de las modalidades
cliente/servidor en dos o tres planos, pero incorporan un elemento principal
sobre el cual se elabora y basa toda la fortaleza de este modelo, el concepto de
transacción.
Tal
cual se explica mediante los conceptos de planos, tamaños de componentes y
servidores de bases de datos, con un servidor de transacciones el proceso
cliente llama a funciones, procedimientos o métodos que residen en el servidor,
ya sea que se trate de un servidor de bases de datos o un servidor de
aplicaciones. Lo importante es que el intercambio a través de la red se realiza
mediante un único mensaje de solicitud/respuesta, es decir, independientemente
de que se necesite ejecutar una o más funciones, una o más instrucciones o
sentencias SQL, éstas son agrupadas en una unidad lógica llamada transacción;
evitando así el intercambio a través de la red de un mensaje
solicitud/respuesta por cada sentencia SQL, el cual es el caso de los sistemas
cliente/servidor dos planos, implementados a través de SQL remoto. Estas
aplicaciones denominadas OLTP (On Line Transaction Proccesing) están orientadas
a dar soporte a los procedimientos y reglas de los sistemas de misión crítica.