TECNOLOGÍA CLIENTE SERVIDOR
Presentación del facilitador
Ing. David Benavides, MAE Msc. (resumen)
Preparación formal:
Ingeniero en Sistemas Computacionales
Magister en Administración de Empresas con mención en Sistemas de Información Gerencial
Magister en Docencia y Gerencia en Educación Superior
Diplomado en Pedagogías Innovadoras
Cursos y seminarios técnicos de especialización nacionales e internacionales Experiencia docente y académica:
Docente en las carreras de Ingeniería en Sistemas e Ingeniería en Networking desde 2003 hasta el 2016 en la UG
Subdirector, tutor de tesis, miembro de la Comisión Académica, miembro del Consejo Consultivo, Coordinador de Seguimiento a Graduados
Docente de cursos especiales en la UPS en 2008
Cursos de educación continua en empresas de capacitación
Docente en Ecotec desde 2017 en la Facultad de Ingeniería en Sistemas y Telecomunicaciones Experiencia profesional:
Gerente de Sistemas en una empresa multinacional de servicios basados en telefonía y telecomunicaciones, desde el 2005 hasta la actualidad.
Políticas del curso
Ing. David Benavides, MAE Msc.
Asistencia a clases (1 o 0). Tolerancia máxima 10 minutos.
Uso de celulares
Uso de computador en laboratorios
Métodos de comunicación: Facebook y correo electrónico. Mención de whatsapp personal.
Registro de actividades: ATRIUM
Desglose de notas:
Primer examen 20
Segundo examen 20
Tercer examen 30
Actividades académicas 30
Los exámenes se llevarán a cabo según lo disponga la Universidad. No hay cambio de fecha
Descripción de actividades académicas: lecciones, aportes, trabajos de investigación, exposiciones y talleres
No hay opción de recuperación en notas de actividades académicas
Clase participativa. Respuestas incorrectas
Material de apoyo en clases: casos prácticos y videos, según aplique
Reflexión
Desarrollo de Contenido
Objetivo General
La asignatura de tecnología cliente servidor está enfocada en diseñar y aplicar planes
adecuados de las funciones que llevan a cabo los procesos de cliente/servidor.
Unidades
• Unidad I. Sistemas abiertos y tecnologías Cliente Servidor.
• Unidad II. Arquitectura y principales componentes de los modelos Cliente Servidor.
• Unidad III. Groupware.
• Unidad IV. Bases de datos.
• Unidad V. Almacenes de datos.
• Unidad VI. Herramientas Cliente Servidor.
• Unidad VII. Downsizing, upsizing, rightsizing.
• Unidad VIII. Tecnologías Cliente Servidor desde una
perspectiva empresarial.
Unidad I. Sistemas abiertos y
tecnologías Cliente Servidor
Conceptos generales
Cliente:
Programa ejecutable que participa activamente en el establecimiento de las conexiones. Envía una petición al servidor y se queda esperando por una respuesta. Su tiempo de vida es finito una vez que son servidas sus solicitudes, termina el trabajo.
Las principales funciones del proceso cliente son:
• 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
Conceptos generales
Servidor:
Es un programa que ofrece un servicio que se puede obtener en una red. Acepta la petición desde la red, realiza el servicio y devuelve el resultado al solicitante. Al ser posible implantarlo como aplicaciones de programas, puede ejecutarse en cualquier sistema donde exista TCP/IP y junto con otros programas de aplicación. El servidor comienza su ejecución antes de comenzar la interacción con el cliente. Su tiempo de vida o de interacción es “interminable”.
Las principales funciones del proceso servidor son:
• Aceptar los requerimientos de bases de datos que hacen los clientes
• Procesar requerimientos de bases de datos
• Formatear datos para transmitirlos a los clientes
• Procesar la lógica de la aplicación y realizar validaciones a nivel de bases de datos
Arquitectura Cliente Servidor
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.
Características (I)
• 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.
• Código reutilizable: La implementación de un servicio puede utilizarse en varios servidores.
Características (II)
• Transparencia de localización: El servidor es un proceso que puede residir en la misma máquina que el cliente o otra una máquina diferente de la red. El software cliente/servidor (midleware) 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.
• 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.
Ventajas
• Centralización del control: Los accesos, recursos y la integridad de los datos son controlados por el servidor de forma que un programa cliente defectuoso o no autorizado no pueda dañar el sistema. Esta centralización también facilita la tarea de poner al día datos u otros recursos (mejor que en las redes P2P).
• Escalabilidad: Se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, o se pueden añadir nuevos nodos a la red (clientes y/o servidores).
• Fácil mantenimiento: Al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se verán afectados por ese cambio (o se afectarán mínimamente). Esta independencia de los cambios también se conoce como encapsulamiento.
• Existen tecnologías, suficientemente desarrolladas, diseñadas para el paradigma de C/S que aseguran la seguridad en las transacciones, la amigabilidad del interfaz, y la facilidad de empleo.
Desventajas
• La congestión del tráfico ha sido siempre un problema en el paradigma de Cliente Servidor. Cuando una gran cantidad de clientes envían peticiones simultaneas al mismo servidor, puede ser que cause muchos problemas para éste (a mayor número de clientes, más problemas para el servidor).
• Cuando un servidor está caído, las peticiones de los clientes no pueden ser satisfechas.
• El software y el hardware de un servidor son generalmente muy determinantes. Un hardware regular de un computador personal puede no poder servir a cierta cantidad de clientes. Normalmente se necesita software y hardware específico, sobre todo en el lado del servidor, para satisfacer el trabajo. Por supuesto, esto aumentará el costo.
• 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
Unidad II. Arquitectura y principales componentes de los modelos
Cliente Servidor
Procesamiento distribuido.
Procesamiento distribuido significa dividir una aplicación en tareas y poner cada tarea en la plataforma donde pueda ser manejada mas eficazmente.
El procesamiento distribuido permite dispersar los procesadores, datos y otros elementos de una aplicación.
La dispersión ofrece un sistema mas sensible a las necesidades de los usuarios, capaz de ofrecer tiempos de respuesta mejores y minimizar los costes de comunicación.
Procesamiento distribuido – Características
• Servicio:
Los procesos servidores son proveedores de servicios y los clientes son consumidor de esos servicios. El procesamiento distribuido aporta una clara distinción de funciones con base en la idea de servicio.
• Recursos compartidos:
Un servicio puede atender a muchos clientes al mismo tiempo y regular su acceso a recursos compartidos.
• Protocolos asimétricos:
Entre clientes y servidores se establece una relación de “muchos a uno”. Son siempre los clientes los que inician el diálogo al solicitar un servicio. Los servidores aguardan pasivamente las solicitudes de los clientes.
• Integridad:
El código del servidor y los datos del servidor se encuentran centralizados, lo que resulta en un mantenimiento de menor costo y en la protección de la integridad de los datos compartidos.
Procesamiento distribuido – Características
• Mezcla e igualdad:
El software ideal de procesamiento distribuido es independiente del hardware o de las plataformas de software del sistema operativo. Normalmente se puede mezclar e igualar plataformas de clientes y de servidores (Sistema Abierto).
• Intercambios basados en mensajes:
Clientes y servidores interactúan a través de un mecanismo de transmisión de mensajes. El mensaje es el mecanismo de entrega para las solicitudes y respuestas del servicio.
• Encapsulamiento de servicios:
El servidor es un “especialista”. Un mensaje le indica al servidor el servicio que se solicita; éste se le envía luego al servidor para determinar el cumplimiento de la tarea. Los servidores pueden ser sustituidos sin afectar a los clientes, siempre y cuando la interfaz del servicio no cambie.
Modelo “Igual – a – igual”
Además del modelo cliente/servidor para redes, existe también un modelo punto a punto (igual a igual). El concepto punto a punto (peer to peer, P2P) hace referencia a una arquitectura distribuida, en que los recursos son compartidos entre peers, los que actúan tanto como clientes y servidores a la vez. Un peer corresponde a un nodo en una red P2P. En una arquitectura P2P pura, estos nodos tienen la misma responsabilidad, en donde no existe una entidad central que controle y coordine el acceso a los recursos en la red. En el caso que un nodo sea removido de la red, esta ultima no debe perder funcionalidad ni consistencia de la información.
A diferencia del modelo cliente/servidor, que utiliza servidores dedicados, las redes punto a punto descentralizan los recursos en una red. En lugar de ubicar información para compartir en los servidores dedicados, la información puede colocarse en cualquier parte de un dispositivo conectado.
Modelo “Igual – a – igual”
Modelo “Igual – a – igual”
Características.
• Capacidad: Se aprovechan recursos tales como el ancho de banda, almacenamiento y poder de procesamiento de cada nodo de la red.
• Independencia: Se puede implementar una arquitectura distribuida independiente de los recursos centralizados.
• Descentralización: La funcionalidad y los servicios están ubicados en cualquier lugar de la red, lo que evita que se produzcan cuellos de botella, que son característicos en la clásica arquitectura cliente-servidor.
• Extensibilidad: Un nodo puede ingresar a una red P2P, e inmediatamente proveer nuevos servicios o recursos a los demás nodos.
• Tolerancia a fallas: Ante la falla de un nodo, es posible implementar un esquema de replicación.
• Escalabilidad: Dado que se evita la centralización, esto permite que la red pueda crecer con mayor facilidad
Componentes principales de un modelo cliente/servidor.
Un modelo es una vista abstracta que establece las definiciones, reglas y relaciones entre la estructuras relacionadas con la aplicación. Sirve de base para el intercambio de ideas durante el desarrollo lógico de la aplicación y determina cómo será la aplicación resultante.
El modelo de servicios establece 3 grandes conjuntos de funcionalidades, en cada uno de los cuales se encuadran las distintas tareas en las que se ve involucrado cualquier tipo de proyecto. Dicho modelo establece los siguientes conjuntos que comúnmente denominamos lógicas.
• Lógica de presentación.
• Lógica de negocio.
• Lógica de datos.
Lógica de Presentación
Es la responsable del control de todos los aspectos relacionados con la interacción entre el usuario y la aplicación. Para llevar a cabo esta tarea de control, es necesario conocer qué tipos de usuarios utilizarán la aplicación, qué actividades tienen q realizar y, teniendo en cuenta estos datos, cuáles son los mejores estilos de interfaz para que esos usuarios realicen sus tareas.
En esta lógica se engloban las tareas que den ser realizadas por la par del cliente del modelo general.
Lógica de negocio
Es la lógica del negocio que controla la secuencia de acciones y fuerza el cumplimiento de las reglas del negocio propias de cada empresa; además asegura la integridad de las transacciones de las operaciones necesaria que se deba realizar para que se cumplan dichas reglas. La lógica del negocio también transforma una serie de datos en información útil para el usuario mediante la aplicación de las regla apropiadas.
El objetivo que debe cumplir esta lógica es el de aislar las reglas del negocio, así como las transformaciones de datos de los consumidores (usuarios y otros componentes de eta misma capa) y de los sistemas de gestión de datos.
Lógica de datos
En este conjunto entran los procesos encargados de la gestión de los datos propiamente dicha, es decir, los procesos encargados del mantenimiento de los datos, de garantizar las reglas de integridad referencial establecidas, así como de la gestión de las transacciones. Estas tareas son realizadas, generalmente por un Sistema de Gestión de Bases de Datos Relacionales.
Front end
El cliente es el proceso que permite al usuario formular los requerimientos y pasarlos al servidor, se lo conoce con el término front-end. Normalmente maneja todas las funciones relacionadas con la manipulación y despliegue de datos, por lo que están desarrollados sobre plataformas que permiten construir interfaces gráficas de usuario (GUI), además de acceder a los servicios distribuidos en cualquier parte de una red.
Los productos de front end o de usuario final se pueden clasificar en:
• Aplicaciones: Sistemas de tipo “llave en mano” o paquetes cerrados. Incorporan características de acceso a servidores de bases de datos.
• Herramientas: incluyen generalmente compiladores, lenguajes de programación, generadores de reporte y otros.
Back end
Un proceso servidor es conocido con back end que proporciona los servicios e información al cliente (front end).
Los servidores pueden ser de naturaleza muy variada: de archivos, correo electrónico, impresión, entre otros. El software de los procesos back end consiste en un proceso lógico que proporciona servicios a procesos solicitantes. El hardware utilizado para los procesos back end debe tener suficiente poder de procesamiento y espacio de almacenamiento para satisfacer las necesidades de las aplicaciones que van a soportar.
Interfaces gráficas
Contribuye de manera significativa a la popularidad de los ambientes clientes/servidor porque facilitan el uso y mejoran la productividad de los sistemas que lo componen.
Se caracterizan por ofrecer capacidades como la multi-tarea (multitasking), la conmutación entre tareas (task-switching) y el intercambio de datos entre aplicaciones.
Consisten además de una programación por eventos donde el código responde a acciones tomadas por los usuarios.
Middleware
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ó.
Se estructura en 3 niveles:
• Protocolo de transporte
• Network Operating System (NOS)
• Protocolo específico del servicio
Middleware
Middleware
Características.
• Simplifica el proceso de desarrollo de aplicaciones al independizar los entornos propietarios
• Permite la conectividad de los sistemas de información del organismo
• Proporciona mayor control del negocio al poder contar con información procedente de distintas plataformas sobre el mismo soporte.
• Facilita el desarrollo de sistemas complejos con diferentes tecnologías y arquitecturas.
Middleware
Tipos de Middleware
• API: Por sus siglas en inglés Application Programming Interface (Interfaz de Programación de Aplicaciones). Permiten construir software de aplicaciones mediante herramientas y protocolos específicos para este fin.
• Aplication Server: Son plataformas para desarrollar aplicaciones. Permite crear servidores en los que ejecutar las propias apps.
• Aplication Integration: Combinan datos de distintas apps a través de un framework o marco de trabajo integrador.
• Data Integration: Basado en la combinación de datos de fuentes distintas en un solo conjunto que los usuarios pueden manipular y visualizar.
Middleware
Tipos de Middleware.
• TP: Controla las apps de transacción, centrándose en modelos de negocio y sus normas.
• RPC: Remote Procedure Call o Llamada a Procedimiento Remoto. Es la interacción entre cliente y servidor que permite a una app ser distribuida a través de distintas plataformas.
• MOM: Message-Oriented Middleware o Middleware Orientado al Mensaje. Es la mejora directa de RPC.
Este recurso permite que la interacción entre cliente y servidor suceda de forma asíncrona en situaciones donde el nodo objetivo es lento o está ocupado.
• ORB: Object Request Broker o Agente de Solicitud de Objetos. Este tipo de Middleware facilita la el acceso a servicios remotos como si fueran locales. El servidor registra los registros con el ORB y los clientes contactan con el ORB para localizar los servicios.
Modelos de referencia.
Con el objetivo de definir y delimitar el modelo de referencia de una arquitectura Cliente/Servidor, se identifica 5 componentes que permitan articular dicha arquitectura, considerando que toda aplicación de un sistema de información está caracterizada por los siguientes componentes:
• Presentación/Captación de la información.
• Procesos.
• Almacenamiento de la información.
• Puestos de trabajo
• Comunicaciones.
Sistemas operativos de red.
Al igual que un equipo no puede trabajar sin un sistema operativo, una red de ordenadores no puede funcionar sin un sistema operativo de red que permita compartir los recursos, la información y las funciones de los equipos de la red. Según el tipo de sistema operativo de red, éste puede añadirse al propio sistema operativo del equipo (por ejemplo, Netware de Novell) o integrarse con él (por ejemplo, Windows Server). La configuración más adecuada será la que mejor se adapte a las necesidades y funciones de la red.
El sistema operativo de red determina estos recursos, así como la forma de compartirlos y acceder a ellos.
Para determinar el sistema operativo de red más adecuado, es necesario establecer en primer lugar la arquitectura de la red, es decir, si va a ser cliente/servidor o trabajo en grupo.
Esta decisión suele estar condicionada por el tipo de seguridad que se requiere. Después de identificar las necesidades de seguridad de la red, hay que determinar los tipos de interoperabilidad necesaria en la red.
Sistemas operativos de red.
Los principales tipos de servicios que brindan los sistemas operativos de red son:
• Ejecución de programas: El sistema tiene que ser capaz de cargar un programa en memoria y ejecutarlo.
• Operaciones de entrada/salida: Como un programa no puede acceder directamente a un dispositivo de E/S el sistema operativo debe facilitarle algunos medios para realizarlo.
• Comunicaciones: Se refiere a todo lo que se envía a través del cable. La comunicación se realiza cuando por ejemplo, alguien entra a la red, copia un archivo, envía correo electrónico, o imprime.
• Manipulación del sistema de archivo: El sistema operativo debe facilitar las herramientas necesarias para que los programas puedan leer, escribir y eliminar archivos.
• Detección de errores: El sistema operativo necesita constantemente detectar posibles errores. Los errores pueden producirse en la CPU y en el hardware de la memoria, en los dispositivos de E/S o bien en el programa de usuario. Para cada tipo de error, el sistema operativo debe adoptar la iniciativa apropiada que garantice una computación correcta y consistente.
Sistemas operativos de red.
Servidores de red.
Un servidor de red es un ordenador que ofrece el acceso a los recursos compartidos entre las estaciones de trabajo u otros servidores conectados en una red informática. Los recursos compartidos pueden incluir acceso a hardware, como discos duros, impresoras, etc, sofware, servicios de email o acceso a internet. Lo que diferencia al servidor de la estación de trabajo no es el hardware sino como se comporta el ordenador y las funciones que desempeña. Por tanto, cualquier ordenador puede configurarse como servidor. En general, la estación de trabajo es un ordenador utilizado por una persona para desempeñar sus tareas mientras que el servidor de red es el ordenador que ofrece el acceso a los recursos compartidos entre todos los integrantes de la red.
Servidores de red.
Tipos de servidores de red.
• Servidor de impresiones: Controla una o más impresoras y acepta trabajos de impresión de otros clientes de la red, poniendo en cola los trabajos de impresión.
• Servidor de correo: Almacena, envía, recibe, enruta y realiza otras operaciones relacionadas con email para los clientes de la red.
• Servidor de fax: almacena, envía, recibe, enruta y realiza otras funciones necesarias para la transmisión, la recepción y la distribución apropiadas de los fax.
• Servidor de la telefonía: Realiza funciones relacionadas con la telefonía, como es la de contestador automático, almacenando los mensajes de voz, encaminando las llamadas y controlando también la red o el Internet.
• Servidor proxy: Realiza un cierto tipo de funciones a nombre de otros clientes en la red para aumentar el funcionamiento de ciertas operaciones (p. ej., prefetching y depositar documentos u otros datos que se soliciten muy frecuentemente), también proporciona servicios de seguridad utilizando un cortafuegos.
Servidores de red.
Tipos de servidores de red.
• Servidor de acceso remoto (RAS): Controla las líneas de módem de los monitores u otros canales de comunicación de la red para que las peticiones conecten con la red de una posición remota, responde llamadas telefónicas entrantes y reconoce la petición de la red.
• Servidor web: Almacena documentos HTML, imágenes, archivos de texto, escrituras, y demás material web compuesto por datos (conocidos colectivamente como contenido), y distribuye este contenido a clientes que la piden en la red.
• Servidor de base de datos: Provee servicios de base de datos a otros programas u otras computadoras, como es definido por el modelo cliente-servidor. También puede hacer referencia a aquellas computadoras (servidores) dedicadas a ejecutar esos programas, prestando el servicio.
• Servidor de Seguridad: Tiene software especializado para detener intrusiones maliciosas, normalmente tienen antivirus, antispyware, antiadware, además de contar con cortafuegos redundantes de diversos niveles y/o capas para evitar ataques, los servidores de seguridad varían dependiendo de su utilización e importancia.
Mensajería y llamadas a procedimientos remotos (RPC’s)
RPC es un protocolo que permite a un programa de ordenador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambos. El protocolo es un gran avance sobre los sockets usados hasta el momento. De esta manera el programador no tenía que estar pendiente de las comunicaciones, estando éstas encapsuladas dentro de las RPC.
Mensajería y llamadas a procedimientos remotos (RPC’s)
Objetivos de RPC.
• Proporcionar un middelware que simplifique el desarrollo de aplicaciones distribuidas
• Evitar que programador tenga que interactuar directamente con el interfaz de Sockets
• Abstraer (ocultar) los detalles relativos a la red
• El Servidor ofrece procedimientos que el cliente llama como si fueran procedimientos locales
• Se busca ofrecer un entorno de programación lo mas similar posible a un entorno no distribuido.
• El sistema RPC oculta los detalles de implementación de esas llamadas remotas Implementa la llamada remota mediante un dialogo petición respuesta -- Mensaje de petición: identifica procedimiento llamado, contiene parámetros de la llamada -- Mensaje de respuesta: contiene valor/es devuelto/s se encarga de enviar/recibir mensajes para comunicar ambas partes se encarga de gestionar los contenidos de esos mensajes (empaquetado y formateado de datos)
Mensajería y llamadas a procedimientos remotos (RPC’s)
Mecanismo RPC
• El stub del cliente: Se encarga de empaquetar los parámetros y la solicitud, enviarlos al intermediario en el servidor, y luego esperar la respuesta, desempaquetarla y entregarla a la aplicación.
• El programa principal del servidor: Que incluye el stub y el dispatcher, se encarga de recibir peticiones, desempaquetar los parámetros, invocar la función solicitada, pasarle los parámetros, luego obtener el resultado, empaquetarlo y enviarlo al cliente.
• Las rutinas de serialización de datos: Se debe tomar en cuenta que las máquinas cliente y servidor puedan ser de arquitectura diferente (y no compatible).
• Servicio de binding: Responsable de la transparencia de localización, gestiona la asociación entre el nombre del procedimiento remoto (y su versión) con su localización en la maquina servidor (dirección, puertos, skeleton, etc). Realiza la búsqueda del skeleton de la implementación concreta del procedimiento remoto llamado por un cliente.
Mensajería y llamadas a procedimientos remotos (RPC’s)
Mecanismo de la llamada a un RPC.