Arquitectura Cliente-Servidor

| 2013-07-19 | No hay comentarios »

Introducción
Los últimos 20 años han sido testigos de avances masivos en las áreas de computación, el hardware se ha ido abaratando cada vez más y a su vez se ha ido haciendo más potente a tal punto que las computadoras de escritorio de hoy, tienen la potencia que tenían mainframes de años anteriores. Además del hardware la segunda área de avances masivos es la de las comunicaciones, avances tales como los sistemas de comunicación vía satélite y sistemas de telefonía digital entre otros que hacen posible conectar económicamente y eficientemente con otros sistemas informáticos separados físicamente, esto ha llevado al concepto de modelo cliente/servidor donde el funcionamiento consiste en un número de computadoras que están conectadas y que llevan a cabo diferentes funciones. El término Cliente/Servidor fue usado por primera vez en 1980 para referirse a PC’s en red, desde ese entonces hasta nuestros días la definición se ha extendido. El modelo cliente/servidor una forma de equilibrar el proceso de una red hasta que se comparta la potencia de procesamiento entre computadoras que llevan a cabo servicios, y aquellos que llevan a cabo tareas tales como la visualización Interfaces Gráficas de Usuario que es más adecuado para el punto final dentro de la red. Por ejemplo, permite que las computadoras se ajusten a tareas especializadas tales como el procesamiento de bases de datos en donde se utilizan hardware y software de propósito especial para proporcionar un procesamiento rápido de la base de datos comparado con el hardware que se encuentra en las mainframes que tienen que enfrentarse con una gran gama de aplicaciones. En el presente trabajo escrito se expone acerca del modelo masivamente utilizado en la actualidad como es el modelo cliente servidor, desde los conceptos básicos de: cliente, servidor, protocolos entre otros. Hasta sus utilidades actuales en las diferentes ciencias.
Reseña histórica
El término se usó inicialmente para los llamados terminales tontos, dispositivos que no eran capaces de ejecutar programas por sí mismos, pero podían conectarse e interactuar con computadores remotos por medio de una red y dejar que éste realizase todas las operaciones requeridas, mostrando luego los resultados al usuario. Se utilizaban sobre todo porque su costo en esos momentos era muchomenor que el de un computador. Estos terminales tontos eran clientes de un computador mainframe por medio del tiempo compartido.
Evolución de la arquitectura cliente servidor
– La era de la computadora central
Desde sus inicios el modelo de administración de datos a través de computadoras se basaba en el uso de terminales remotas, que se conectaban de manera directa a una computadora central. Dicha computadora central se encargaba de prestar servicios caracterizados por que cada servicio se prestaba solo a un grupo exclusivo de usuarios.
– La era de las computadoras dedicadas
Esta es la era en la que cada servicio empleaba su propia computadora que permitía que los usuarios de ese servicio se conectaran directamente. Esto es consecuencia de la aparición de computadoras pequeñas, de fácil uso, más baratas y más poderosas de las convencionales.
– La era de la conexión libre
Hace más de 10 años que la computadoras escritorio aparecieron de manera masiva. Esto permitió que parte apreciable de la carga de trabajo de cómputo tanto en el ámbito de cálculo como en el ámbito de la presentación se lleven a cabo desde el escritorio del usuario. En muchos de los casos el usuario obtiene la información que necesita de alguna computadora de servicio. Estas computadoras de escritorio se conectan a las computadoras de servicio empleando software que permite la emulación de algún tipo de terminal. En otros de los casos se les transfiere la información haciendo uso de recursos magnéticos o por trascripción.
– La era del cómputo a través de redes
Esta es la era que está basada en el concepto de redes de computadoras, en la que la información reside en una o varias computadoras, los usuarios de esta información hacen uso de computadoras para laborar y todas ellas se encuentran conectadas entre sí. Esto brinda la posibilidad de que todos los usuarios puedan acceder a la información de todas las computadoras y a la vez que los diversos sistemas intercambien información.
– La era de la arquitectura cliente servidor
En esta arquitectura la computadora de cada uno de los usuarios, llamada cliente, produce una demanda de información a cualquiera de las computadoras que proporcionan información, conocidas como «servidores»estos últimos responden a la demanda del cliente que la produjo. Los clientes y los servidores pueden estar conectados a una red local o una red amplia, como la que se puede implementar en una empresa o a una red mundial como lo es la Internet. Bajo este modelo cada usuario tiene la libertad de obtener la información que requiera en un momento dado proveniente de una o varias fuentes locales o distantes y de procesarla como según le convenga. Los distintos servidores también pueden intercambiar información dentro de esta arquitectura.
Conceptos:
Cliente
El cliente es una aplicación informática o uncomputador que consume un servicioremoto en otro computador, conocido comoservidor, normalmente a través de unaredde telecomunicaciones. Actualmente se suele utilizar para referirse aprogramas que requieren específicamenteuna conexión a otro programa, al que sedenominaservidory que suele estar en otramáquina. Ya no se utilizan por criterios decosto como en un principio, sino para obtener datos externos (por ejemplo páginas web, información bursátil o bases de datos), interactuarcon otros usuarios a través de un gestor central compartirinformación con otros usuarios (servidores de archivos y otras aplicaciones Groupware) o utilizar recursos de los queno se dispone en la máquina local (por ejemplo impresión)Uno de los clientes más utilizados, sobre todo por su versatilidad, es el navegador web. Muchos servidores soncapaces de ofrecer sus servicios a través de un navegador web en lugar de requerir la instalación de un programaespecífico.
Se puede resumir que un cliente es una computadora que solicita los servicios que proporciona uno o más servidores y que también lleva a cabo algún tipo de procesamiento por sí mismo.
Servidor
En informática, un servidor forma parte de una red, provee servicios a otros nodos denominados clientes. También se suele denominar con la palabra servidor a:
 Una aplicación informática o programa que realiza algunas tareas en beneficio de otras aplicaciones llamadas clientes.
 Algunos servicios habituales son los servicios de archivos, que permiten a los usuarios almacenar y acceder a los archivos de una computadora y los servicios de aplicaciones, que realizan tareas en beneficio directo del usuario final. Este es el significado original del término. Es posible que un ordenador cumpla simultáneamente las funciones de cliente y de servidor.
 Una computadora en la que se ejecuta un programa que realiza alguna tarea en beneficio de otras aplicaciones llamadas clientes, tanto si se trata de un ordenador central (mainframe), un miniordenador, una computadora personal, una PDA o un sistema embebido; sin embargo, hay computadoras destinadas únicamente a proveer los servicios de estos programas: estos son los servidores por antonomasia.
 Un servidor no es necesariamente una máquina de última generación de grandes proporciones, no es necesariamente un superordenador; un servidor puede ser desde una computadora vieja, hasta una máquina sumamente potente (ej.: servidores web, bases de datos grandes, etc. Procesadores especiales y hasta varios terabytes de memoria). Todo esto depende del uso que se le dé al servidor. Si usted lo desea, puede convertir al equipo desde el cual usted está leyendo esto en un servidor instalando un programa que trabaje por la red y a la que los usuarios de su red ingresen a través de un programa de servidor web como Apache.
El modelo Cliente-servidor no necesariamente implica tener dos ordenadores, ya que un proceso cliente puede solicitar algo como una impresión a un proceso servidor en un mismo ordenador. Por lo tanto podemos concluir que un servidor es una computadora que lleva a cabo un servicio que normalmente requiere mucha potencia de procesamiento.

Sistemas Distribuidos
Un sistema distribuido es aquel en el que dos o más máquinas colaboran para la obtención de un resultado. En todo sistema distribuido se establecen una o varias comunicaciones siguiendo un protocolo prefijado mediante un esquema cliente-servidor. Un sistema distribuido se define como una colección de computadoras separadas físicamente y conectadas entre sí por una red de comunicaciones distribuida; cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistema. El usuario accede a los recursos remotos de la misma manera en que accede a recursos locales, o un grupo de computadoras que usan un software para conseguir un objetivo en común.
La arquitectura cliente/servidor
Es un patrón arquitectónico para el desarrollo de sistemas distribuidos. ƒ Los clientes o programas que representan entidades que necesitan servicios y los servidores o programas que proporcionan servicios son objetos separados desde un punto de vista lógico y que se comunican a través de una red de comunicaciones para realizar una o varias tareas de forma conjunta. ƒ Un cliente hace una petición de un servicio y recibe la respuesta a dicha petición; un servidor recibe y procesa la petición, y devuelve la respuesta solicitada. Los servicios pueden ser:
Ejecución de un determinado programa.
Acceso a un determinado banco de información(base de datos). Acceso a un dispositivo de hardware.
Características de la arquitectura cliente/servidor
ƒ Protocolos asimétricos: hay una relación muchos a uno entre los clientes y un servidor. Los Clientes siempre inician un diálogo mediante la solicitud de un servicio. Los Servidores esperan pasivamente por las solicitudes de los clientes.

ƒEncapsulación de servicios: El servidor es un especialista, cuando se le entrega un mensaje solicitando un servicio, él determina cómo conseguir hacer el trabajo. Los servidores se pueden actualizar sin afectar a los clientes en tanto que la interfaz pública de mensajes que se utilice por ambos lados, permanezca sin cambiar.

ƒIntegridad: el código y los datos de un servidor se mantienen centralizados, lo que origina que el mantenimiento sea más barato y la protección de la integridad de datos compartidos. Al mismo tiempo, los clientes mantienen su independencia y “personalidad”. Transparencia de localización: el servidor es un proceso que puede residir en la misma máquina que el cliente o enotra máquina diferente de la red. El software cliente/servidor (middleware) habitualmente oculta la localización de un servidor a los clientes mediante la redirección de servicios. Un programa puede actuar tanto como cliente, como servidor o como cliente y servidor simultáneamente

ƒIntercambios basados en mensajes: Los clientes y servidores son procesos débilmente acoplados que pueden intercambiar solicitudes de servicios y respuestas utilizando mensajes ƒModularidad, diseño extensible: el diseño modular de una aplicación cliente/servidor permite que la aplicación sea tolerante a fallos.

• En sistemas tolerantes a fallos, los fallos pueden ocurrir sin causar la caída de la aplicación completa

• En una aplicación cliente/servidor tolerante a fallos, uno o más servidores pueden fallar sin parar el sistema total mientras que los servicios proporcionados por los servidores caídos estén disponibles en otros servidores activos

• Otra ventaja de la modularidad es que una aplicación cliente/servidor puede responder automáticamente al incremento o decremento de la carga del sistema mediante la incorporación o eliminación de uno o más servicios o servidores Independencia de la plataforma: el software cliente/servidor “ideal” es independiente del hardware o sistemas operativos, permitiendo al programador mezclar plataformas de clientes y servidores • El entorno de explotación de clientes y servidores puede ser sobre diferentes plataformas, con el fin de optimizar el tipo de trabajo que cada uno desempeña Código reutilizable: La implementación de un servicio puede utilizarse en varios servidores Escalabilidad: Los sistemas cliente/servidor pueden ser escalados horizontal o verticalmente

• El escalado horizontal significa añadir o eliminar estaciones clientes con un ligero impacto en el rendimiento

• El escalado vertical significa la migración a una máquina servidora más grande y rápida o la incorporación de nuevas máquinas servidoras

ƒSeparación de la funcionalidad del cliente/servidor: El modelo cliente/servidor es una relación entre procesos que se ejecutan en la misma o en máquinas separadas. Un proceso servidor es un proveedor de servicios. Un cliente es un consumidor de servicios. El modelo cliente servidor proporciona una clara separación de funciones.

ƒRecursos compartidos: un servidor puede proporcionar servicios a muchos clientes al mismo tiempo, y regular el acceso de éstos a un conjunto de recursos compartidos.
Tipos de Servidores
Servidores de archivos: Proporciona archivos para clientes. Si los archivos no fueran tan grandes y los usuarios que comparten esos archivos no fueran muchos, esto sería una gran opción de almacenamiento y procesamiento de archivos. El cliente solicita los archivos y el servidor los ubica y se los envía.
Servidores de Base de Datos: Son los que almacenan gran cantidad de datos estructurados, se diferencian de los de archivos pues la información que se envía está ya resumida en la base de datos. Ejemplo: El Cliente hace una consulta, el servidor recibe esa consulta (SQL) y extrae solo la información pertinente y envía esa respuesta al cliente. Servidores de Software de Grupo: El software de grupo es aquel, que permite organizar el trabajo de un grupo. El servidor gestiona los datos que dan soporte a estas tareas. Por ejemplo: almacenar las listas de correo electrónico. El Cliente puede indicarle, que se ha terminado una tarea y el servidor se lo envía al resto del grupo.

Servidores WEB Son los que guardan y proporcionan Páginas HTML. El cliente desde un browser o link hace un llamado de la página y el servidor recibe el mensaje y envía la página correspondiente. Servidores de correo Gestiona el envío y recepción de correo de un grupo de usuarios (el servidor no necesita ser muy potente). El servidor solo debe utilizar un protocolo de correo. Servidor de objetos Permite almacenar objetos que pueden ser activados a distancia. Los clientes pueden ser capaces de activar los objetos que se encuentran en el servidor.
Servidores de impresión Gestionan las solicitudes de impresión de los clientes. El cliente envía la solicitud de impresión, el servidor recibe la solicitud y la ubica en la cola de impresión, ordena a la impresora que lleve a cabo las operaciones y luego avisa a la computadora cliente que ya acabo su respectiva impresión. Servidores de aplicación Se dedica a una única aplicación. Es básicamente una aplicación a la que pueden acceder los clientes.

Tipos de Clientes
Cliente liviano Un cliente liviano no tiene capacidad de procesamiento y su única función es recoger los datos del usuario, dárselos al servidor, y mostrar su respuesta. Los primeros navegadores web eran clientes livianos, simplemente mostraban las páginas web que solicitaba el usuario. Actualmente, el uso de lenguajes de script, programas Java y otras funciones de DHTML dan una capacidad de procesamiento a los navegadores, por lo que se consideran clientes Híbridos. Cliente pesado Un cliente pesado suele tener una mayor capacidad de procesamiento y es posible que tenga una interfaz gráfica sofisticada. Sin embargo, esto conlleva un desarrollo adicional y suele ser una mezcla de la lógica de presentación (interfaz gráfica) con la lógica de la aplicación (potencia de procesamiento). Cliente híbrido
Un cliente híbrido no tiene almacenados los datos con los que trabaja, pero sí es capaz de procesar datos que le envía el servidor. Muchos programas de colaboración almacenan remotamente los datos para que todos los usuarios trabajen con la misma información, y utilizan clientes híbridos para acceder a esa información.

Arquitecturas Cliente / Servidor
– Arquitectura Cliente-Servidor de Dos Capas.
Consiste en una capa de presentación y lógica de la aplicación; y la otra de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:
Cuando se requiera poco procesamiento de datos en la organización. Cuando se tiene una base de datos centralizada en un solo servidor.
Cuando la base de datos es relativamente estática.
Cuando se requiere un mantenimiento mínimo.

– Arquitectura Cliente-Servidor de Tres Capas.
Consiste en una capa de la Presentación, otra capa de la lógica de la aplicación y otra capa de la base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones: Cuando se requiera mucho procesamiento de datos en la aplicación.
En aplicaciones donde la funcionalidad este en constante cambio.
Cuando los procesos no están relativamente muy relacionados con los datos.
Cuando se requiera aislar la tecnología de la base de datos para que sea fácil de cambiar.
Cuando se requiera separar el código del cliente para que se facilite el mantenimiento. Está muy adecuada para utilizarla con la tecnología orientada a objetos.
Clasificación de la arquitectura cliente-servidor
Representación distribuida. La interacción con el usuario se realiza básicamente en el servidor. El cliente hace de pasarela, de sistema de acceso a los elementos hardware pantalla y teclado. Representación remota. Los datos se envían sin formatear, y es el cliente el responsable de formatear los datos y realizar las acciones de interacción con el usuario. En este caso, la aplicación y la base de datos se encuentran en el servidor. Lógica distribuida. En el cliente se llevan a cabo la interacción con el usuario y la parte más trivial de la lógica de la aplicación. En este caso, se llevan a cabo controles básicos de rango de campos, campos obligatorios, etc., mientras que el grueso de la lógica permanece en el servidor. Gestión remota de datos. Tanto la interacción con el usuario como la aplicación residen en el cliente, siendo el servidor el depositario de los datos. B.D. Distribuidas. El cliente debe conocer la topología de la red, así como la disposición y ubicación de los datos. En este caso, se delega parte de la gestión de base de datos a los clientes.
Ventajas del esquema Cliente/Servidor
Entre las principales ventajas del esquema Cliente/Servidor están:

• Uno de los aspectos que más ha promovido el uso de sistemas Cliente/Servidor, es la existencia de plataformas de hardware cada vez más baratas. Esta constituye a su vez una de las más palpables ventajas de este esquema, la posibilidad de utilizar máquinas considerablemente más baratas que las requeridas por una solución centralizada, basada en sistemas grandes. Además, se pueden utilizar componentes, tanto de hardware como de software, de varios fabricantes, lo cual contribuye considerablemente a la reducción de costos y favorece la flexibilidad en la implantación y actualización de soluciones.

• El esquema Cliente/Servidor facilita la integración entre sistemas diferentes y comparte información permitiendo, por ejemplo que las máquinas ya existentes puedan ser utilizadas pero utilizando interfaces más amigables al usuario. De esta manera, podemos integrar PCs con sistemas medianos y grandes, sin necesidad de que todos tengan que utilizar el mismo sistema operacional.

• Al favorecer el uso de interfaces gráficas interactivas, los sistemas construidos bajo este esquema tienen mayor interacción y es más intuitiva para con el usuario. En el uso de interfaces gráficas para el usuario, el esquema Cliente/Servidor presenta la ventaja, con respecto a uno centralizado, de que no es siempre necesario transmitir información gráfica por la red pues esta puede residir en el cliente, lo cual permite aprovechar mejor el ancho de banda de la red. • Una ventaja adicional del uso del esquema Cliente/Servidor es que es más rápido el mantenimiento y el desarrollo de aplicaciones, pues se pueden emplear las 7 herramientas existentes (por ejemplo los servidores de SQL o las herramientas de más bajo nivel como los sockets o el RPC ). • La estructura inherentemente modular facilita además la integración de nuevas tecnologías y el crecimiento de la infraestructura computacional, favoreciendo así la escalabilidad de las soluciones.

• El esquema Cliente/Servidor contribuye además, a proporcionar, a los diferentes departamentos de una organización, soluciones locales, pero permitiendo la integración de la información relevante a nivel global.

Desventajas del esquema Cliente/Servidor
Entre las principales desventajas del esquema Cliente/Servidor están:

• El mantenimiento de los sistemas es más difícil pues implica la interacción de diferentes partes de hardware y de software, distribuidas por distintos proveedores, lo cual dificulta el diagnóstico de fallas.

• Se cuenta con muy escasas herramientaspara la administración y ajuste del desempeño 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. • Además, 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 preocupación importante. Por ejemplo, se deben hacer verificacionesen el cliente y en el servidor.

• El desempeño es otro de los aspectos que se deben tener en cuenta en el esquema Cliente/Servidor. Problemas de este estilo pueden presentarse por congestión en la red, dificultad de tráfico de datos, etc.

Protocolo: Es un conjunto bien conocido de reglas y formatos que se utilizan para la comunicación entre procesos que realizan una determinada tarea.

Se requieren dos partes:

 Especificación de la secuencia de mensajes que se han de intercambiar.

 Especificación del formato de los datos en los mensajes. Un protocolo permite que componentes heterogéneos de sistemas distribuidos puedan desarrollarse independientemente, y por medio de módulos de software que componen el protocolo, haya una comunicación transparente entre ambos componentes. Es conveniente mencionar que estos componentes del protocolo deben estar tanto en el receptor como en el emisor. Ejemplos de protocolos usados en los sistemas distribuidos:

 IP: Protocolo de Internet.- Protocolo de la capa de Red, que permite definir la unidad básica de transferencia de datos y se encarga del direccionamiento de la información, para que llegue a su destino en la red.

 TCP: Protocolo de Control de Transmisión.- Protocolo de la capa de Transporte, que permite dividir y ordenar la información a transportar en paquetes de menor tamaño para su transporte y recepción.

 HTTP: Protocolo de Transferencia de Hipertexto.- Protocolo de la capa de aplicación, que permite el servicio de transferencia de páginas de hipertexto entre el cliente WEB y los servidores

 SMTP: Protocolo de Transferencia de Correo Simple.- Protocolo de la capa de aplicación, que permite el envío de correo electrónico por la red.

 POP3: Protocolo de Oficina de Correo.- Protocolo de la capa de aplicación, que permite la gestión de correos en Internet, es decir, le permite a una estación de trabajo recuperar los correos que están almacenados en el servidor.
MIDDLEWARE(Software Intermedio)
Definición: Capa de software intermedio entre el cliente y el servidor. Es la capa de software que nos permiten gestionar los mecanismos de comunicaciones. Ejemplo si se hace la petición de una página web desde un browser en el cliente, el middleware determina la ubicación y envía una petición para dicha página. El servidor Web, interpreta la petición y envía la página al software intermedio, quien la dirige al navegador de la máquina cliente que la solicitó.
Existen dos tipos:

 Software intermedio general. Servicios generales que requieren todos los clientes y servidores, por ejemplo: software para las comunicaciones usando el TCP/IP, software parte del sistema operativo que, por ejemplo, almacena los archivos distribuidos, software de autenticación, el software intermedio de mensajes de clientes a servidores y viceversa.  Software intermedio de servicios. Software asociado a un servicio en particular, por ejemplo: software que permite a dos BD conectarse a una red cliente/servidor (ODBC: Conectividad abierta de BD), software de objetos distribuidos, por ejemplo la tecnología CORBA permite que objetos distribuidos creados en distintos lenguajes coexistan en una misma red (intercambien mensajes), software intermedio para software de grupo, software intermedio asociado a productos de seguridad específicas (Conexiones Seguras: Sockets), etc.
Características:

 Independiza el servicio de su implantación, del sistema operativo y de los protocolos de comunicaciones.

 Permite la convivencia de distintos servicios en un mismo sistema.

 Permite la transparencia en el sistema.

 Modelo tradicional: Monitor de teleproceso o CICS, Tuxedo, Encina.

 Modelo OO: CORBA.

Conclusión
Con la exposición de este trabajo se concluye que el modelo cliente servidor es un modelo actualmente utilizado en sistemas informáticos especialmente en los sistemas basados en la web y en sistemas funcionales en redes locales. Esto se surgió debido a la existencia de plataformas de hardware cada vez más baratas y eficientes, como también los avances en rendimiento de las telecomunicaciones. Hoy se sigue utilizando porque facilita la integración entre sistemas diferentes y permite compartir y centralizar información entre máquinas existentes, lo que se denomina como escalabilidad. La escalabilidad permite aumentar la cantidad o capacidad de clientes y también la cantidad o capacidad de los servidores por separado por lo tanto se puede decir que un sistema informático funcionando con el modelo / servidor puede crecer horizontal o verticalmente sin grandes dificultades. Las tecnologías actuales, se encuentran suficientemente desarrolladas y diseñadas para seguir el modelo cliente / servidor y aseguran la seguridad en las transacciones, la amigabilidad de interfaces y por sobre todo la facilidad de empleo de ésta modelo. La red más grande existente en tecnología y aún en continuo crecimiento es internet y la mayoría de los servicios de Internet son del tipo de cliente-servidor. La acción de visitar un sitio web requiere una arquitectura C/S y las acciones realizadas en una página web requieren de un modelo C/S. Lo que demuestra que el correcto uso aprovechando sus ventajas y llevando en cuenta sus desventajas puede conseguir óptimos resultados con posibilidad de crecimiento en el caso de que se necesite.

BIBLIOGRAFIA
Libros:

 Roger S. Presman. Ingeniería de Software. Quinta Edición. McGraw-Hill Interamericana. Madrid. 2002.

 George Coulouris. Sistemas Distribuidos. Tercera Edición. Addison Wesley. Madrid. 2001.

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.




SEGUÍNOS EN FACEBOOK


GITHUB