El principal motivo detrs de la evolucin del procesamiento de datos es la necesidad que tienen las organizaciones (empresas o instituciones pblicas o privadas), de realizar sus operaciones ms gil y eficientemente, debido a la creciente presin competitiva a la que estn sometidas, lo cual se traduce en la necesidad de que su personal sea ms productivo, que se reduzcan los costos y gastos de operacin, al mismo tiempo que se generan productos y servicios ms rpidamente y con mejor calidad. En este contexto, es necesario establecer una infraestructura de procesamiento de informacin, que cuente con los elementos requeridos para proveer informacin adecuada, exacta y oportuna en la toma de decisiones y para proporcionar un mejor servicio a los clientes. El modelo Cliente/Servidor rene las caractersticas necesarias para proveer esta infraestructura, independientemente del tamao y complejidad de las operaciones de las organizaciones pblicas o privadas y, consecuentemente desempea un papel importante en este proceso de evolucin.
Antecedentes
En el mundo de las comunicaciones entre computadoras se rigen bsicamente por lo que se llama modelo Cliente-Servidor, ste es un modelo que intenta proveer usabilidad, flexibilidad, interoperabilidad y escalabilidad en las comunicaciones. El trmino Cliente/Servidor fue usado por primera vez en 1980 para referirse a PCs en red. Este modelo Cliente/Servidor empez a ser aceptado a finales de los 80s. En general, la tecnologa de los servidores de base de datos ha evolucionado mucho en los ltimos aos y todos los fabricantes trabajan con tecnologa sensiblemente equivalente. Parecen, mucho ms importantes para la eleccin, elementos que estn fuera de la tecnologa: la confianza que nos despierta el fabricante, su compromiso con el producto, su tendencia a mantenerse siempre actualizado, su situacin econmico/financiera, las garantas que nos brinde el soporte local y, en menor medida, el precio. Aunque inicialmente fueron los propios usuarios quienes impulsaron esta nueva tecnologa, la situacin ha cambiado drsticamente. Hoy en da, el modelo Cliente/Servidor se considera clave para abordar las necesidades de las empresas. El proceso distribuido se reconoce actualmente como el nuevo paradigma de sistemas de informacin, en contraste con los sistemas independientes. Este cambio fundamental ha surgido como consecuencia de importantes factores (negocio, tecnologa, proveedores), y se apoya en la existencia de una gran variedad de aplicaciones estndar y herramientas de desarrollo, fciles de usar que soportan un entorno informtico distribuido. Concepto La arquitectura cliente/servidor es un modelo para el desarrollo de sistemas de informacin, en el que las transacciones se dividen en procesos independientes que cooperan entre s para intercambiar informacin, servicios o recursos. Se denomina cliente al proceso que inicia el dilogo o solicita los recursos y servidor, al proceso que responde a las solicitudes. Es el modelo de interaccin ms comn entre aplicaciones en una red. (Instituto Tecnolgico de Colima) Caractersticas
Las caractersticas bsicas de una arquitectura Cliente/Servidor son:
Combinacin de un cliente que interacta con el usuario, y un servidor que interacta con los recursos compartidos. Las tareas del cliente y del servidor tienen diferentes requerimientos en cuanto a recursos de cmputo como velocidad del procesador, memoria, velocidad y capacidades del disco y dispositivos de entrada/salida. Se establece una relacin entre procesos distintos, los cuales pueden ser ejecutados en la misma mquina o en mquinas diferentes distribuidas a lo largo de la red. Existe una clara distincin de funciones basada en el concepto de "servicio", que se establece entre clientes y servidores. La relacin establecida puede ser de muchos 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. No existe otra relacin entre clientes y servidores que no sea la que se establece a travs del intercambio de mensajes entre ambos. El ambiente es heterogneo. La plataforma de hardware y el sistema operativo del cliente y del servidor no son siempre la misma. El concepto de escalabilidad tanto horizontal como vertical es aplicable a cualquier sistema Cliente/Servidor. Diagrama Un sistema cliente/servidor funciona tal como se detalla en el siguiente diagrama:
El cliente enva una solicitud al servidor mediante su direccin IP y el puerto, que est reservado para un servicio en particular que se ejecuta en el servidor. El servidor recibe la solicitud y responde con la direccin IP del equipo cliente y su puerto.
La idea es tratar a una computadora como un instrumento, que por s sola pueda realizar muchas tareas, pero con la consideracin de que realice aquellas que son ms adecuadas a sus caractersticas. Si esto se aplica tanto a clientes como servidores se entiende que la forma ms estndar de aplicacin y uso de sistemas Cliente/Servidor es mediante la explotacin de las PCs a travs de interfaces grficas de usuario; mientras que la administracin de datos y su seguridad e integridad se deja a cargo de computadoras centrales tipo mainframe. Usualmente la mayora del trabajo pesado se hace en el proceso llamado servidor y el o los procesos cliente slo se ocupan de la interaccin con el usuario (aunque esto puede variar). En otras palabras la arquitectura Cliente/Servidor es una extensin de programacin modular en la que la base fundamental es separar una gran pieza de software en mdulos con el fin de hacer ms fcil el desarrollo y mejorar su mantenimiento.
Elementos
Cliente Conjunto de Software y Hardware que invoca los servicios de uno o varios servidores. Los Clientes interactan con el usuario, usualmente en forma grfica. Frecuentemente se comunican con procesos auxiliares que se encargan de establecer conexin con el servidor, enviar el pedido, recibir la respuesta, manejar las fallas y realizar actividades de sincronizacin y de seguridad. Caractersticas:
El Cliente oculta al Servidor y la Red. Detecta e intercepta peticiones de otras aplicaciones y puede re direccionarlas. Dedicado a la sesin del usuario (Inicia...Termina). El mtodo ms comn por el que se solicitan los servicios es a travs de RPC (Remote Procedure Calls). Funciones Comunes del Cliente: Mantener y procesar todo el dialogo con el usuario. Manejo de pantallas. Mens e interpretacin de comandos. Entrada de datos y validacin. Procesamiento de ayudas. Recuperacin de errores. Generacin de consultas e informes sobre las bases de datos.
Servidor Conjunto de Hardware y Software que responde a los requerimientos de un cliente. Los Servidores proporcionan un servicio al cliente y devuelven los resultados. En algunos casos existen procesos auxiliares que se encargan de recibir las solicitudes del cliente, verificar la proteccin, activar un proceso servidor para satisfacer el pedido, recibir su respuesta y enviarla al cliente. Adems, deben manejar los interbloqueos, la recuperacin ante fallas, y otros aspectos afines. Caractersticas Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempean entonces un papel pasivo en la comunicacin (dispositivo esclavo). Tras la recepcin de la solicitud, la procesan y luego envan la respuesta al cliente. Por lo general, aceptan conexiones desde un gran nmero de clientes. No es frecuente que interacten directamente con los usuarios. Funciones Comunes del Servidor: Acceso, almacenamiento y organizacin de datos. Actualizacin de datos almacenados. Administracin de recursos compartidos. Ejecucin de toda la lgica para procesar una transaccin. Procesamiento comn de elementos del servidor (Datos, capacidad de CPU, almacenamiento en disco, capacidad de impresin, manejo de memoria y comunicacin). Gestin de perifricos compartidos. Control de accesos concurrentes a bases de datos compartidas. Enlaces de comunicaciones con otras redes de rea local o extensa
Red
Se encarga de transmitir la informacin entre clientes y servidores. Fsicamente consiste en un cableado (coaxial, par trenzado, fibra ptica, etc.) o en conexiones mediante seales de radio o infrarrojas, dependiendo de que la red sea local (LAN o RAL), metropolitana (MAN) o de rea extensa (WAN). Toda comunicacin, ya sea cara a cara o por una red, est regida por reglas predeterminadas denominadas protocolos. Un ejemplo del uso de protocolos en comunicaciones de red es la interaccin entre un servidor Web y un explorador Web. Esta interaccin utiliza una cantidad de protocolos y estndares en el proceso de intercambio de informacin entre ellos. Los distintos protocolos trabajan en conjunto para asegurar que ambas partes reciben y entienden los mensajes. Algunos ejemplos de estos protocolos son: Protocolo de aplicacin: Protocolo de transferencia de hipertexto (HTTP) es un protocolo comn que regula la forma en que interactan un servidor Web y un cliente Web. Protocolo de transporte: Protocolo de control de transmisin (TCP) es el protocolo de transporte que administra las conversaciones individuales entre servidores Web y clientes Web. Protocolo de internetwork: El protocolo internetwork ms comn es el Protocolo de Internet (IP). Protocolos de acceso a la red: Estos protocolos describen dos funciones principales: administracin de enlace de datos y transmisin fsica de datos en los medios Protocolo TCP/IP: Especifica los detalles y mecanismos para la transmisin de datos entre dos aplicaciones comunicantes, pero no dictamina cuando ni porque deben interactuar ambas aplicaciones.
Una infraestructura Cliente/Servidor consta de tres componentes esenciales, todos ellos de igual importancia y estrechamente ligados:
Plataforma Operativa. Entorno de Desarrollo de Aplicaciones. Gestin de Sistemas.
Plataforma Operativa.- La plataforma deber soportar todos los modelos de distribucin Cliente/Servidor, todos los servicios de comunicacin, y deber utilizar, preferentemente, componentes estndar de la industria para los servicios de distribucin. Los desarrollos propios deben coexistir con las aplicaciones estndar y su integracin deber ser imperceptible para el usuario. Igualmente, podrn acomodarse programas escritos utilizando diferentes tecnologas y herramientas. Entorno de Desarrollo de Aplicaciones. - Debe elegirse despus de la plataforma operativa. Un entorno de aplicacin incremental, debe posibilitar la coexistencia de procesos cliente y servidor desarrollados con distintos lenguajes de programacin y/o herramientas, as como utilizar distintas tecnologas (por ejemplo, lenguaje procedural, lenguaje orientado a objetos, multimedia), y que han sido puestas en explotacin en distintos momentos del tiempo. Gestin de Sistemas. - Estas funciones aumentan considerablemente el costo de una solucin, pero no se pueden evitar. Siempre deben adaptarse a las necesidades de la organizacin, y al decidir la plataforma operativa y el entorno de desarrollo, es decir, en las primeras fases de la definicin de la solucin, merece la pena considerar los aspectos siguientes:
Qu necesitamos gestionar? Dnde estarn situados los procesadores y estaciones de trabajo? Cuntos tipos distintos se soportarn? Qu tipo de soporte es necesario y quin lo proporciona?
Una metodologa que permita definir una infraestructura para el sistema Cliente/Servidor y evale la puesta en marcha del proyecto sobre una base racional.
El enfoque de dicha metodologa comprende los pasos siguientes: Captacin de las necesidades. Definir, analizar y evaluar, aunando los requerimientos del negocio con las aportaciones tecnolgicas. Diseo conceptual en el que se sitan los principales bloques funcionales y de datos del sistema, mostrando la relacin y comunicacin entre ambos. Detalle de los principales componentes funcionales, seleccin de procesos, determinando los principios que deben aplicarse a la seleccin de software o diseo de los mdulos. Al final de los tres pasos anteriores, se definen los conceptos del sistema y la infraestructura tecnolgica, sin concretar, todava, en productos o plataformas especficos. Por ltimo, se llega a la seleccin de plataformas y principales productos y componentes para la implantacin. El resultado es la descripcin de una solucin que incluye infraestructura tecnolgica, plataformas y productos.
Ventajas
Uno de los aspectos que ms ha promovido el uso de sistemas Cliente/Servidor, es la existencia de plataformas de hardware cada vez ms baratas. El esquema Cliente/Servidor facilita la integracin entre sistemas diferentes y comparte informacin permitiendo, por ejemplo que las mquinas ya existentes puedan ser utilizadas pero utilizando interfaces ms amigables al usuario. Al favorecer el uso de interfaces grficas interactivas, los sistemas construidos bajo este esquema tienen mayor interaccin y ms intuitiva con el usuario. Una ventaja adicional del uso del esquema Cliente/Servidor es que es ms rpido el mantenimiento y el desarrollo de aplicaciones. La estructura inherentemente modular facilita adems la integracin de nuevas tecnologas y el crecimiento de la infraestructura computacional, favoreciendo as la escalabilidad de las soluciones. El esquema Cliente/Servidor contribuye adems, a proporcionar, a los diferentes departamentos de una organizacin, soluciones locales, pero permitiendo la integracin de la informacin relevante a nivel global. Desventajas
El mantenimiento de los sistemas es ms difcil pues implica la interaccin de diferentes partes de hardware y de software, distribuidas por distintos proveedores, lo cual dificulta el diagnstico de fallas. Se cuenta con muy escasas herramientas para la administracin y ajuste del desempeo de los sistemas. Es importante que los clientes y los servidores utilicen el mismo mecanismo (por ejemplo sockets o RPC), lo cual implica que se deben tener mecanismos generales que existan en diferentes plataformas. Adems, hay que tener estrategias para el manejo de errores y para mantener la consistencia de los datos. La seguridad de un esquema Cliente/Servidor es otra preocupacin importante. El desempeo es otro de los aspectos que se deben tener en cuenta en el esquema Cliente/Servidor.
Cundo implantar Cliente/Servidor Que en el proyecto a desarrollar existan aplicaciones que necesiten comunicarse. La aplicacin a desarrollar necesita unir entre s un gran nmero de usuarios. El proyecto necesita compartir recursos. El proyecto a desarrollar necesita conseguir un rendimiento considerablemente superior con un aumento moderado del precio. El proyecto necesita tener su informacin centralizada. El proyecto requiere independencia de la plataforma hardware y software que se emplee. El proyecto requiere de escalabilidad horizontal (aadir clientes) y vertical (ampliar potencia de los servidores). Conclusin
En conclusin, Cliente/Servidor puede incluir mltiples plataformas, bases de datos, redes y sistemas operativos. Estos pueden ser de distintos proveedores, en arquitecturas propietarias y no propietarias y funcionando todos al mismo tiempo. Por lo tanto, su implantacin involucra diferentes tipos de estndares: APPC, TCP/IP, OSI, NFS, DRDA corriendo sobre DOS, OS/2, Windows o PC UNIX, en TokenRing, Ethernet, FDDI o medio coaxial, slo por mencionar algunas de las posibilidades.