PCSModulo1.pdf
Document Details
Uploaded by ITKnow
Universidad Siglo 21
Tags
Related
- Computer Networks Chapter 1 PDF
- ICT Concepts And Definitions PDF
- W7_U6_JO_BBA_S6_Information_Systems_for_Business PDF
- Information Systems for Business (BBA, Semester 6) PDF
- Business Information Systems 6th Edition Chapter 3 - Hardware and Software PDF
- Management Information Systems: Managing the Digital Firm PDF
Full Transcript
Arquitectura Las organizaciones se desempeñan en ambientes cada vez más competitivos y esto las obliga a evolucionar permanentemente en la búsqueda de nuevas formas de desarrollar sus actividades más eficientemente, adaptando sus procesos y funcionamiento, de manera tal que les permitan alcanzar sus...
Arquitectura Las organizaciones se desempeñan en ambientes cada vez más competitivos y esto las obliga a evolucionar permanentemente en la búsqueda de nuevas formas de desarrollar sus actividades más eficientemente, adaptando sus procesos y funcionamiento, de manera tal que les permitan alcanzar sus metas planteadas y mantenerse en un contexto cada vez más exigente. Para lograr un buen desempeño, es importante contar con una infraestructura de procesamiento de información adecuada, que soporte el proceso de negocio de la organización. Una infraestructura basada en la arquitectura cliente-servidor, como modelo fundamental para el desarrollo de sistemas de información, puede brindar un apoyo significativo en el desempeño de la organización. En este módulo estudiaremos los conceptos fundamentales de la arquitectura cliente-servidor, sus características y componentes, así como también las ventajas y las desventajas de este tipo de implementaciones. Para desarrollar los conceptos, analizaremos un caso de implementación a través del cual podremos identificar los componentes de este tipo de infraestructura y sus posibles configuraciones. Caso: Comercial Mayorista S. A. Historia y antecedentes Referencias Lección 1 de 3 Caso: Comercial Mayorista S. A. La empresa Comercial Mayorista S. A. es una organización dedicada a la comercialización de productos de consumo masivo. Cuenta con una única instalación de gran envergadura, donde se desempeñan las distintas actividades de la empresa. Las áreas que podemos encontrar son: Dirección Administración Recursos Humanos Servicios Generales Depósito Área de Ventas El Área de Ventas abarca el mayor espacio, y en ella se encuentran las góndolas donde se exhiben los productos y un área de línea de cajas, con un total de 15 terminales para realizar la facturación de las ventas que se efectúan en forma presencial. Actualmente, cuenta con un sistema de información que cubre, fundamentalmente, las actividades de facturación y otras tareas de soporte para la generación de informes. En los últimos períodos de trabajo, la organización presenta serias falencias en su funcionamiento. Problemas asociados a falta de controles adecuados, inconvenientes en la administración de inventarios, falta de información como soporte para la toma de decisiones de la empresa y escasa integración de las distintas áreas, entre otros problemas, motivaron a la empresa a llevar a cabo un plan de reformulación de sus procesos, con el objetivo de optimizar su funcionamiento. Uno de los puntos críticos detectados en el análisis de la organización es el sistema de información, que si bien cumple con la función principal de facturación, no cubre las necesidades de integración de las distintas áreas de la empresa, no provee datos e información adecuada para su funcionamiento y, por sus características de implementación, dificulta su expansión. Dentro del plan de mejora, se destaca la necesidad de mejorar sustancialmente las prestaciones del sistema de información, el cual se considera una herramienta fundamental para el desempeño eficiente de la organización. A través de esta lectura, incorporaremos conceptos que nos permitirán identificar las características del sistema actual y cómo este puede evolucionar para corregir los problemas existentes. C O NT I NU A R Lección 2 de 3 Historia y antecedentes Los sistemas evolucionan y adquieren nuevas características en el tiempo. En la década del 60, la infraestructura más utilizada en la conformación de sistemas de información se basaba en la utilización de mainframes. Estas implementaciones de sistemas se destacaban por la utilización de computadoras centrales, potentes y de gran tamaño, que debían ser compartidas por varios usuarios, los cuales accedían a través de terminales. El siguiente paso se destaca por el uso de computadoras dedicadas, de uso exclusivo para un servicio. Estos equipos son más económicos y de gran capacidad de procesamiento. Con la aparición de las computadoras de escritorio, se comienza a distribuir la capacidad de procesamiento o carga de trabajo entre los distintos equipos. Estos equipos pueden trabajar en forma autónoma y, a su vez, pueden acceder a servicios de otras computadoras utilizando software de emulación de terminales. El siguiente avance se produce con la aparición de las redes de computadoras, donde todos los equipos se conectan entre sí y los datos pueden existir en una o varias de las computadoras conectadas. Aquí, los usuarios acceden a los datos desde sus equipos y se puede intercambiar información entre distintos sistemas. Arquitectura cliente-servidor La evolución continúa y se comienza a utilizar una arquitectura basada en el concepto de la existencia de computadoras a través de las cuales los usuarios demandan información (clientes) a otras computadoras que proporcionan información (servidores). Los clientes y servidores están conectados a redes locales o mundiales, como Internet. Bajo este modelo, cada usuario puede solicitar o requerir información proveniente de una o varias fuentes para procesarla de forma conveniente. También los servidores pueden intercambiar información entre ellos. Los términos cliente y servidor se utilizan tanto para identificar a los procesos como a los equipos que los ejecutan. Aplicaciones locales y aplicaciones distribuidas Los sistemas se pueden dividir en dos grandes grupos: aplicaciones locales y aplicaciones distribuidas. Las primeras dependen de sí mismas para la solución de un problema. Trabajan en forma coordinada con su sistema operativo, y las tareas que pueden realizar están vinculadas a las restricciones de usuarios y procesos. Por su parte, las aplicaciones distribuidas se diferencian de las locales en que no dependen de sí mismas, sino que dependen de otros sistemas. Estos sistemas interactúan entre sí, cooperando y funcionando en forma colaborativa, sobre la base de las reglas de negocio que determinan los sistemas operativos de red. Los sistemas organizados en redes también fueron evolucionando en el tiempo, con la ayuda de los avances tecnológicos. Comienzan a utilizarse cada vez más en función de las nuevas posibilidades de implementación que se pueden lograr. Un ejemplo es el desarrollo de sistemas basados en Internet. Impactos de la evolución de los sistemas La evolución de los sistemas ofrece nuevas posibilidades a las organizaciones. Se producen cambios importantes en las formas de desarrollar las actividades, y la información comienza a tener especial importancia dentro de la organización, porque es considerada un activo fundamental para la toma de decisiones. Referencia caso de estudio Analizando el enunciado del caso de estudio, uno de los problemas que enfrenta la empresa es la falta de información. El sistema no provee los elementos necesarios que permitan a los responsables de la dirección elaborar estrategias y formas de trabajo adecuadas, y esto impacta en el desempeño general de la empresa, que se evidencia en algunos problemas puntuales, “...falta de controles adecuados, inconvenientes en la administración de inventarios, falta de información como soporte para la toma de decisiones de la empresa...”. Los sistemas de información se convierten, a través del tiempo, en piezas fundamentales para el funcionamiento de las organizaciones. Esto plantea un desafío para los profesionales de sistemas de información en la decisión sobre qué tipo de implementación se debe realizar en cada caso. A continuación, desarrollaremos los conceptos teóricos de la arquitectura cliente-servidor, que servirán como base para conocer las características de este tipo de implementación y sus formas de aplicación. Definición de arquitectura Según el estándar IEEE 1471-2000, se puede definir a la arquitectura del software como la organización fundamental del sistema que incluye sus componentes, cómo se relacionan entre ellos y los principios que dictan su diseño y evolución (Etcheverry, 2010). Otra definición: Una arquitectura es un entramado de componentes funcionales que, aprovechando diferentes estándares, convenciones, reglas y procesos, permite integrar una amplia gama de productos y servicios informáticos, de manera que pueden ser utilizados eficazmente dentro de la organización. (Areitio y Areitio, 2009, p. 17). Determinar la arquitectura de un sistema para definir su infraestructura implica decidir cómo se organizan los distintos componentes, sus interfaces y forma de interacción. Las organizaciones basan sus sistemas de información en una infraestructura, muchas veces, estrechamente vinculada al tipo de empresa. Se puede adoptar una arquitectura centralizada si una empresa presenta una estructura centralizada por departamentos, es decir, si sus sistemas se definen sobre la base de ese concepto. En otros casos, se puede optar por arquitecturas distribuidas, donde se definen modelos de implementación teniendo en cuenta unidades operativas que trabajan en función de objetivos comunes. Cualquiera de los dos tipos de arquitectura, centralizada o distribuida, puede ser aplicada a brindar soluciones para diversos tipos de implementaciones, teniendo en cuenta sus ventajas y desventajas. Arquitectura centralizada Este tipo de arquitecturas se conoce como “tradicionales”. Su característica fundamental es que son jerárquicas, centralizadas y divididas por departamento. Cada departamento puede realizar sus propias tareas, y estos sistemas son de difícil integración con otros sistemas de otras áreas. Este tipo de implementación se caracteriza por un sistema único, con datos alojados en un servidor al cual solo tienen acceso los usuarios del departamento que se sistematiza a través de terminales. Fuente: elaboración propia. Figura 1: Arquitectura centralizada Una arquitectura centralizada se basa en la implementación de un único computador central al cual acceden los clientes mediante terminales “bobas”. Este tipo de arquitectura presenta las siguientes características: Este tipo de implementación se basa en la utilización de una única computadora que contiene todos los datos. Debe tener gran capacidad de procesamiento y estar provista del hardware necesario para asegurar el funcionamiento sin problemas. Existe una sola computadora para el control de acceso de las terminales de tipo esclavos. Recursos, como las impresoras y los terminales, se conectan a la máquina central. Existe una sola computadora responsable de la ejecución de los procesos. Estas características determinan las ventajas y desventajas de este tipo de arquitectura. V E N TA J A S D E S V E N TA J A S Se basa en la implementación de un único computador con alta capacidad de procesamiento de información. Esto permitirá alta disponibilidad y alto rendimiento. Por sus características de implementación, se facilita el control de acceso de los usuarios, permitiendo que presente un alto nivel de seguridad. Facilita la compartición de recursos, como pueden ser las impresoras, por estar conectadas a una máquina central conjuntamente con las terminales. Existe una sola máquina responsable de la ejecución de los procesos. Esto implica que solo se debe controlar una única máquina, que es la que aloja datos y procesos a ejecutar. V E N TA J A S D E S V E N TA J A S El computador central, que almacena todos los datos y ejecuta todos los procesos, debe ser un hardware altamente potente para poder dar respuesta y solución a los usuarios que interactúan con el sistema. El hecho de basar todo el sistema de información en un único computador central puede presentar el inconveniente de que, ante una caída del servidor, las terminales queden sin poder trabajar hasta tanto se pueda levantar el servidor nuevamente. Es altamente dependiente de las comunicaciones. La caída de una línea de comunicación puede provocar la caída de todos los puestos de trabajo conectados a esa línea, de manera tal que quedan inoperantes. Referencia caso de estudio En el caso de estudio propuesto, podemos considerar, de acuerdo a lo expuesto, que el sistema de información presenta características de sistema centralizado, porque se basa, fundamentalmente, en una aplicación de un computador central al cual se conectan las terminales de facturación, y existe casi nula integración con el resto de las áreas de la empresa. Arquitectura distribuida En un sistema distribuido, el procesamiento de información se distribuye sobre varias computadoras, en vez de utilizar un único computador central. Este tipo de arquitectura se basa en la disponibilidad de computadoras separadas con capacidad de procesamiento individual para realizar las tareas por sus propios medios. Prácticamente, todos los sistemas informáticos de gran envergadura son sistemas distribuidos. Las características fundamentales de este tipo de arquitecturas son las siguientes: Cada computadora tiene capacidad de procesamiento para realizar su trabajo autónomamente. No utiliza una sola computadora que contenga todos los datos. Tiene vital importancia la red de comunicaciones de datos. Cada equipo posee capacidad de procesamiento autónomo, pero debe mantener su conexión para poder realizar los procesos correspondientes. Los usuarios pueden obtener mejores tiempos de respuesta porque cada computadora puede realizar su procesamiento en forma independiente. Los recursos se pueden tomar desde la red. Las terminales que trabajan de forma independiente pueden necesitar de recursos que no tienen disponibles, pero pueden ser accedidos a través de la red de comunicación. Esta arquitectura se apoya en la descentralización de tareas complejas, pero algunas tareas pueden ser delegadas al servidor central. Figura 2: Arquitectura distribuida Se compone de múltiples computadores con capacidad de procesamiento, todas conectadas por medio de una red de comunicación de datos. Fuente: elaboración propia. Referencia caso de estudio La implementación del sistema de información actual presenta varios problemas que pueden ser solucionados aplicando una arquitectura distribuida. En principio, aprovechar las características para aportar una solución más integral, que permita integrar nuevas áreas al sistema de información, aprovechar la capacidad de procesamiento de los equipos que conforman la red para desarrollar actividades propias, como, por ejemplo, análisis de datos, y dotar de mayor flexibilidad al sistema para futuras actualizaciones. V E N TA J A S D E S V E N TA J A S Cada computadora tiene capacidad suficiente de procesamiento para realizar un trabajo de manera autónoma. No existe una única computadora que contiene todos los datos. Esto implica mayor independencia en las terminales, y ante la caída del servidor central, el trabajo se puede continuar temporalmente. Facilita la integración a los sistemas de información de todos los departamentos de una organización. Se obtienen mejores tiempos de respuesta para el usuario, porque cada computadora realiza su tarea de forma independiente, y este trabajo independiente permite mayor flexibilidad y potencia en el desarrollo de las tareas. V E N TA J A S D E S V E N TA J A S Es altamente dependiente de la red de comunicaciones de datos, produciéndose un elevado flujo de información dentro de la red, que puede elevar los costos de las comunicaciones. Si bien se tiende a descentralizar, no se puede delegar en las terminales algunas tareas, como, por ejemplo, el alojamiento de datos, que siempre, independientemente de la estructura, estará directamente ligado al servidor. Es decir, si bien esta arquitectura se basa en descentralizar tareas complejas, algunas tareas siempre serán delegadas al servidor central. Es de mayor complejidad. Situación actual Cada una de las arquitecturas presentadas, tanto centralizada como distribuida, presentan características de funcionamiento que determinan ventajas y desventajas que pueden influir en la decisión del tipo de implementación. En muchos casos, la utilización de un tipo de arquitectura no implica descartar la otra. Es decir, las organizaciones pueden recurrir a la combinación para lograr el aprovechamiento de las ventajas de ambas. Es muy importante realizar un análisis exhaustivo de la problemática de las organizaciones, para poder determinar qué tipo de arquitectura es aconsejable implementar en cada caso particular. C O NT I NU A R Lección 3 de 3 Referencias Areitio, G. y Areitio, A. (2009). Información, informática e internet: del ordenador personal a la empresa 2.0. Recuperado de https://books.google.com.ar/books? id=mnFTzjdoczIC&pg=PA17&lpg=PA17&dq=Una+arquitectura+es+un+entra mado+de+componentes+funcionales+que+aprovechando+diferentes+est% C3%A1ndares,+convenciones&source=bl&ots=dLCQsOrpv0&sig=aj4ZwMS19UeAYIDS1UriuZ98Jk&hl=es&sa=X&ved=0ahUKEwiSsKr6qvvPAhVCxGMK HSNDDMMQ6AEIJjAC#v=onepage&q=Una%20arquitectura%20es%20un%20 entramado%20de%20componentes%20funcionales%20que%20aprovechand o%20diferentes%20est%C3%A1ndares%2C%20convenciones&f=false Etcheverry, L. (2010). Arquitectura de un sistema de información. Recuperado http://www.pedeciba.edu.uy/bioinformatica/sibdyw/Clase_3.pdf IEEE 1471-2000: https://standards.ieee.org/standard/1471-2000.html de Introducción a tecnologías cliente-servidor Definir la infraestructura de soporte para un sistema de información es uno de los aspectos fundamentales de la tarea del profesional de sistemas. Esta infraestructura se basa en distintos tipos de arquitecturas, como la arquitectura centralizada, construida a partir de considerar un único computador central (mainframe), en el cual recae toda la responsabilidad de procesamiento y almacenamiento de datos, o la arquitectura distribuida, que responde al concepto de considerar distribuir la capacidad de procesamiento del sistema entre varias computadoras conectadas a través de una red de comunicación de datos. En esta lectura presentaremos la tecnología cliente-servidor, que se basa en la arquitectura distribuida. Para desarrollar los conceptos, analizaremos el Caso: Comercial Mayorista S. A. descripto en la lectura: Arquitectura. Introducción a tecnologías cliente-servidor Componentes esenciales de la infraestructura cliente-servidor Referencias Descarga en PDF Lección 1 de 4 Introducción a tecnologías cliente-servidor Sugerimos visualizar el siguiente video como recurso introductorio al concepto de arquitectura cliente-servidor. Video 1: Introducción arquitectura Cliente - Servidor Modelo Cliente Servidor, Explicación Simple Fuente: Fazt. (2 de diciembre de 2017). Modelo Cliente Servidor, Explicación Simple [Video de YouTube]. Recuperado de https://www.youtube.com/watch?v=49zdlyLSwhQ El modelo cliente-servidor se basa en una arquitectura distribuida, en donde las terminales, también denominadas clientes, realizarán requerimientos de procesamiento a otras computadoras, denominadas servidores. Se puede considerar que consiste en la implementación de una arquitectura de red en la que cada computadora conectada puede cumplir el rol de cliente o de servidor. La arquitectura cliente-servidor permite modelar los sistemas de información como un conjunto de servicios proporcionados por equipos servidores, los cuales son utilizados por los equipos clientes. La siguiente figura muestra el principio de funcionamiento de este modelo: Fuente: [Imagen sin título sobre modelo cliente-servidor]. (s. f.). Recuperada http://tareaspswjessicavaldes.blogspot.com/2016/03/tarea-5-cliente-servidor.html de Figura 1: Arquitectura cliente-servidor El cliente realiza una petición o solicitud al servidor y este responde a la solicitud del cliente. En la Figura 1, podemos observar que el cliente, que es quien interactúa con el usuario, comienza el ciclo de trabajo realizando las peticiones de servicio correspondientes. Se disparan los procesos que se encargan de establecer la comunicación, a través de la cual se enviarán las solicitudes y respuestas. En el otro extremo, el servidor se encargará de procesar los requerimientos y elaborar la respuesta. Gráficamente, podemos resumir este proceso de la siguiente manera: Figura 2: Proceso cliente-servidor El gráfico muestra los pasos del proceso cliente-servidor, que inicia con la solicitud que realiza el usuario a través de la interfaz de la aplicación cliente, y culmina con el procesamiento de la respuesta enviada por el servidor. Fuente: elaboración propia. De acuerdo con las características de trabajo, en general, los servidores deben ser máquinas de gran capacidad de procesamiento, mientras que los clientes pueden ser computadoras de menor capacidad y usar los recursos provistos por el servidor. Es fundamental, en este esquema de trabajo, la red que permite la comunicación entre los componentes. Sin esta red de comunicación, es imposible realizar las peticiones y obtener las respuestas correspondientes. Algunas consideraciones a tener en cuenta sobre esta arquitectura: Los clientes necesitan saber qué servidores están disponibles, no así si hay clientes disponibles. Los clientes y servidores son procesos distintos. Varios procesos servidores pueden ejecutarse en un mismo servidor físico. Por ejemplo, podemos considerar la siguiente arquitectura física: Fuente: elaboración propia. Figura 3: Arquitectura física cliente-servidor Se muestra la existencia de computadoras con roles de clientes y servidores conectadas por medio de una red. Si bien en la figura existen dos servidores físicos, es posible que existan varios procesos servidores corriendo en cada uno de ellos. Esto implica que debemos diferenciar entre equipos servidores físicos y procesos servidores, los cuales se denominan procesos lógicos que atienden las peticiones de los clientes. El siguiente esquema representa el modelo cliente-servidor desde el punto de vista de los procesos lógicos corriendo en los servidores físicos instalados. Figura 4: Arquitectura o sistema de procesos cliente-servidor En este gráfico se visualiza la interacción entre procesos clientes y procesos servidores. Se puede verificar la existencia de más de un “proceso servidor” por “servidor físico”. Fuente: elaboración propia. Referencia caso de estudio El sistema de facturación implementado actualmente responde a un sistema centralizado donde se evidencian los componentes detallados. Se trata de un servidor central que se encarga de realizar todo el procesamiento y responder a los requerimientos que realizan los usuarios a través de las terminales clientes. Cada acción que se realiza en la terminal se traduce en una petición al servidor central, quien resuelve el pedido y responde. C O NT I NU A R Lección 2 de 4 Componentes esenciales de la infraestructura cliente-servidor En la descripción de la arquitectura cliente-servidor se nombraron distintos tipos de componentes que la conforman. Entre estos componentes encontramos los clientes, que asumen un rol activo en el esquema de trabajo, ya que son los que inician el proceso de trabajo enviando la petición correspondiente al servidor, y los servidores, que tienen un rol pasivo, porque permanentemente están a la espera de una petición de un cliente para elaborar la respuesta correspondiente. Además de clientes y servidores, existe un componente de gran importancia, el middleware, que cumple la función de interfaz que provee la conectividad entre aplicaciones clientes, aplicaciones servidoras y entre aplicaciones y base de datos. A continuación, realizaremos una descripción detallada de uno de los componentes. Clientes El cliente es el componente de este tipo de arquitectura, que interactúa con el usuario a través de una interfaz que, generalmente, es de tipo gráfica. Es el responsable de iniciar las solicitudes que serán enviadas al servidor para su procesamiento. Cumple un rol activo, porque es el iniciador del proceso en este esquema de trabajo. En los comienzos, se definía como cliente a las máquinas que no tenían capacidad de procesamiento, sino que necesitaban conectarse para realizar la petición y mostrar los resultados. Este tipo de clientes presentaba la ventaja de su bajo costo. En la actualidad, se utilizan para la obtención de datos externos o para utilizar recursos compartidos, no disponibles en la máquina local. Un ejemplo muy difundido de cliente es el navegador web. Referencia caso de estudio En el sistema de información actual de la organización, las terminales que componen la línea de cajas son los equipos que cumplen el rol de clientes dentro la estructura. A través de ellos se realizan las distintas tareas propias de un proceso de facturación, como entrada de datos para búsqueda de artículos, ingreso de datos del comprador, generación del ticket. Cada una de estas tareas genera peticiones que son resueltas por el servidor central. Características y funciones principales de un cliente Los clientes se reconocen como los componentes de rol activo, porque son quienes dan inicio al proceso en el esquema cliente-servidor, mediante la realización de un requerimiento al servidor. Las funciones que pueden realizar son las siguientes. Captar los datos ingresados por el usuario para iniciar la solicitud o requerimiento; administrando la interfaz del usuario; realizar la validación local de los datos ingresados por el usuario; procesar la lógica de la aplicación para la captura de los datos; en algunos casos, dependiendo de sus características, pueden almacenar datos; generar los requerimientos al servidor; procesar las respuestas recibidas; dar formato a los resultados; mostrar resultados al usuario. De acuerdo a su complejidad, se pueden encontrar distintos tipos de clientes, los cuales detallamos a continuación. Cliente liviano o flaco Cliente liviano, también llamado cliente ligero o flaco, es un proceso cliente en una arquitectura de red cliente-servidor que depende, fundamentalmente, del servidor central para las tareas de procesamiento. Se enfoca en tomar datos, enviarlos al servidor y mostrar los resultados obtenidos. Un cliente liviano se caracteriza por tener muy reducida su capacidad de procesamiento. Su tarea se reduce a: tomar datos ingresados a través de la interfaz; enviar datos al servidor; mostrar los resultados que se obtengan del requerimiento realizado. Referencia caso de estudio En el caso expuesto, en la línea de cajas, la organización incorpora clientes livianos, que solo cargan parte de la interfaz de usuario para realizar las interacciones básicas con el sistema. En este caso, solo entrada de códigos de productos para su posterior facturación. Cliente pesado o gordo Se denomina cliente pesado al proceso cliente de una arquitectura clienteservidor con capacidad de procesamiento y mayor carga de cómputo. Se lo suele denominar cliente grueso o gordo. Un cliente pesado hace tanto procesamiento como sea posible, pasando solamente los datos para establecer las comunicaciones y almacenamiento en servidor. Se caracteriza por tener capacidad no solo para realizar solicitudes, sino también para procesarlas y almacenarlas. Sus tareas, entonces, son las siguientes: captar los datos ingresados por el usuario para iniciar la solicitud o requerimiento, administrando la interfaz del usuario; realizar la validación local de los datos ingresados por el usuario; procesar la lógica de la aplicación para la captura de los datos; en algunos casos, dependiendo de sus características, puede almacenar datos, generar los requerimientos al servidor; procesar las respuestas recibidas; dar formato a los resultados; mostrar resultados al usuario. Es importante destacar que, si bien el cliente pesado tiene capacidad de procesamiento, no puede realizar por sí solo todas las funciones que lo convertirían en un componente autónomo. Un ejemplo de este tipo de cliente son los clientes de correo electrónico, que pueden recibir mensajes y redactar nuevos, pero dependen de un servidor para chequearlos. Cliente híbrido Un cliente híbrido es un tipo de cliente que combina las características de los clientes livianos y pesados. Prácticamente, es muy parecido a un cliente pesado, pero no puede almacenar datos; solamente puede procesarlos. Este tipo de clientes puede realizar las siguientes funciones: captar los datos ingresados por el usuario para iniciar la solicitud o requerimiento, administrando la interfaz del usuario; realizar la validación local de los datos ingresados por el usuario; procesar la lógica de la aplicación para la captura de los datos; generar los requerimientos al servidor; procesar las respuestas recibidas; dar formato a los resultados; mostrar resultados al usuario. Referencia caso de estudio Como se detalla en la referencia inmediata anterior, los clientes instalados en el sistema actual son livianos. En el proceso de plan de mejora del sistema, es muy importante considerar la incorporación de clientes de distinto tipo en otras áreas de la organización que permitan desarrollar tareas más complejas aprovechando su capacidad de procesamiento. Por ejemplo, en el Área de Administración, se podrían incorporar computadoras que permitan solicitar datos al servidor central y realizar un procesamiento local de estos para obtener información de soporte para la toma de decisiones Servidores El servidor es el otro componente fundamental. Se lo puede definir como el proceso que se encarga de realizar una o varias tareas solicitadas por los clientes. Los servidores tienen tareas específicas, como gestionar el tráfico en la red, identificar las estaciones de trabajo y brindar servicios a los clientes, por ejemplo, acceso a archivos compartidos, correo electrónico, entre otros. Los servidores están al "servicio" de las aplicaciones clientes. Su rol puede considerarse pasivo, ya que NO son quienes inician una solicitud, sino quienes contestan. Pueden prestar servicio a múltiples solicitudes de clientes en forma simultánea. Usualmente, se considera como servidor a una máquina potente, aunque no siempre es lo que se necesita. Antes de decidir el tipo de computadora a utilizar, es importante saber cuáles son las necesidades que se deben cubrir. Referencia caso de estudio En la arquitectura actual, se reconoce la existencia de una computadora central, que concentra todo el procesamiento necesario y almacena los datos correspondientes. Este tipo de computadoras, en el esquema centralizado de la actual implementación, debe tener características de procesamiento y almacenamiento muy grandes, porque debe atender a todos los clientes en forma concurrente. No puede presentar demoras en el proceso de facturación. Funciones principales de un servidor En general, los servidores realizan las siguientes funciones: recepción de los requerimientos de los clientes; procesamiento de los requerimientos; realización de validaciones a nivel de base de datos, no locales como realizan los clientes; formateo de datos para otorgar las respuestas a los clientes; manejo de accesos concurrentes; almacenamiento de la información. Tipos de servidores Existen distintos tipos de servidores, cada uno con características propias, que dependen del tipo de tarea específica que deben realizar. Por ejemplo, existen servidores dedicados a almacenar y compartir archivos, servidores de impresión, servidores de correo, entre otros. En la siguiente tabla detallamos los distintos tipos de servidores que podemos encontrar y cuál es su función específica. Tabla 1. Tipos de servidores y sus funciones Descripción: Existen distintos tipos de servidores, cada uno con una función específica, de acuerdo a la tarea que debe realizar. Servidor Función específica Servidor de impresiones Maneja toda la información referente a las impresiones. Sus funciones principales son las de receptar los trabajos de impresión de los usuarios y otorgarles el correspondiente orden para que la impresión pueda ser realizada. Servidor Función específica Servidor de correo Es el responsable del manejo del correo dentro de una empresa. Se encarga de mover y almacenar el correo, así como también de enviar, recibir, enrutar y realizar otras operaciones relacionadas con e-mails para los clientes de la red. Servidor de archivos Almacena los archivos comunes dentro de una organización, a los que luego cada usuario podrá acceder según los permisos que tenga sobre estos. Este tipo de servidores es ampliamente utilizado en las empresas para compartir archivos. Servidor FTP Es uno de los servicios que más se utiliza en Internet. Un servidor de este tipo nos ayuda a subir y bajar archivos. Existe en la actualidad una gran cantidad de programas que permiten conectarse a estos servidores y subir y bajar archivos sin ningún tipo de inconveniente. Servidor de base de datos Son los servidores por excelencia dentro de un entorno cliente/servidor, ya que son los que almacenan la información. Este tipo de servidores se caracterizan por ser máquinas potentes para poder contener la información y responder adecuadamente a los servicios que se les soliciten. Servidor Función específica Servidor de telefonía Realiza funciones relacionadas con la telefonía. Servidor Web En la actualidad, es uno de los tipos de servidores más populares. Es el responsable de recibir los pedidos de los clientes mediante el protocolo HTTP (del inglés, Hypertext Transfer Protocol, o “protocolo de transferencia de hipertexto”, en español) y devolverlos a los clientes. Impresoras como servidor Las nuevas impresoras son, muchas veces, capaces por sí mismas de actuar como parte de una red, sin la necesidad de estar conectadas. Su poderoso software permite este tipo de configuración. Fuente: elaboración propia. Referencia caso de estudio En el caso expuesto, de acuerdo al detalle desarrollado, se puede reconocer la existencia de un servidor de base de datos que contiene todos los datos derivados del funcionamiento de la organización. Por las características del sistema, se evidencia que debe ser un computador con gran capacidad de almacenamiento y de respuesta, porque debe responder a múltiples clientes operando al mismo tiempo y gestionando volumen de información importante. En el plan de mejora, se debe tener en cuenta que este es uno de los puntos fundamentales a tratar, considerando nuevas alternativas de implementación que permitan mejorar el nivel de servicio. Referencia caso de estudio En el plan de mejora del sistema de información, es factible incorporar otro tipo de servidores que permitan mejorar los servicios dentro la organización y favorecer a los procesos que se llevan a cabo. Se pueden incorporar servidores de archivos para compartir documentos e impresoras como servidor para compartir a través de la red. Middleware En el esquema cliente-servidor, se establece el vínculo entre clientes y servidores a través de una infraestructura de comunicaciones. El proceso de trabajo comienza con la petición que el cliente envía, a través de la red de comunicaciones, al servidor, para realizar algún tipo de tarea. El servidor procesa y devuelve los resultados correspondientes. Tanto el proceso cliente como el proceso servidor deben interactuar con el sistema de comunicaciones para desarrollar su tarea. Esta interacción es factible de ser realizada con cierta facilidad gracias a la existencia de otro componente, llamado middleware, que permite a las aplicaciones interactuar con otras aplicaciones, redes, hardware y/o sistemas operativos. Este esquema de interacción se puede observar en la Figura 5. Fuente: elaboración propia. Figura 5. Funciones del middleware Capa de servicio intermedio que facilita el proceso de interacción entre procesos cliente y servidor con la plataforma, conformada por software y hardware que definen el entorno de ejecución. El middleware es un tipo de interfaz que provee conectividad entre aplicaciones clientes y aplicaciones servidoras. Esta capa de software evita el manejo de detalle de bajo nivel correspondiente a protocolos de comunicación, sistemas operativos y base de datos a los desarrolladores. Existen diversos tipos de interfaces: API's, PRC's, Pipes, mensajería de red y accesos a bases de datos. Características de un middleware Dentro de las características fundamentales, podemos enumerar las siguientes: Es responsable directo de realizar el acceso a los datos. Acepta las consultas (enviadas por el cliente y transmitidas a través de la red). Devuelve resultados y códigos de error correspondientes. Permite simplificar el desarrollo de las aplicaciones (ofrece nivel de abstracción). Implica utilizar paquetes específicos de software para el desarrollo de las aplicaciones. Esto sujetará a la empresa a un suministrador y a su política de actualización del producto, que puede ser distinta de la de actualización de los sistemas operativos con los que se comunica el módulo middleware. Tipos de middleware Existen dos tipos de middleware: Middleware general – Este tipo de middleware permite “la impresión de documentos remotos, manejos de transacciones, autenticación de usuarios, etc.” (Martos Navarro, Desongles Corrales, Garzón Villar, Sampalo De La Torre y Ponce Cifredo, 2006, p. 210). Interviene y permite la mayoría de las interconexiones de cliente/servidor. Incluye pilas de comunicación, directorios distribuidos, servicios de autenticación, llamadas a procedimientos remotos y servicios en cola (Canepa, s. f.). También se incluyen en esta categoría las extensiones del sistema operativo de redes, como los servicios distribuidos de archivos e impresión. Entre los productos que pertenecen a esta categoría tenemos: NetWare, Named Pipes, TCP/IP y NetBios. Middleware de servicios específicos – Son middleware que trabajan orientados a mensajes. Trabajan una sola transacción a la vez; son necesarios para cumplir con tipos particulares de servicios. En esta categoría podemos encontrar middleware para base de datos como ODBC, middleware para OLTP como ATMI y TxRPC. Referencia caso de estudio En el sistema actual o en el sistema propuesto en el plan de mejora, tendrán presencia distintos tipos de middleware. Se reconocen, en principio, dos fundamentales: middleware de comunicaciones y de base de datos. C O NT I NU A R Lección 3 de 4 Referencias Canepa, D. H. (s. f.). Modelos de Integración y Arquitecturas Distribuidas [Tesis de grado, Universidad de Buenos Aires]. Recuperado de http://dc.sigedep.exactas.uba.ar/media/academic/grade/thesis/canepa.pdf [Imagen sin título sobre modelo cliente-servidor]. (s. f.). Recuperada de http://tareaspswjessicavaldes.blogspot.com/2016/03/tarea-5-clienteservidor.html Martos Navarro, F., Desongles Corrales, J., Garzón Villar, M. L., Sampalo De La Torre, A. y Ponce Cifredo, E. A. (2006). Técnicos de soporte informático de la comunidad de Castilla y León. Temario. Volumen I. Recuperado de https://books.google.com.ar/books? id=P63Pp_St9yoC&pg=PA210&lpg=PA210&dq=Este+tipo+de+Middleware+pe rmite+la+impresi%C3%B3n+de+documentos+remotos,+manejos+de+transa cciones,+autenticaci%C3%B3n+de+usuarios,+etc.&source=bl&ots=xINmToni 5e&sig=ACfU3U1RmmDj8hFrsuDsFuYRY23kUr_RcA&hl=es&sa=X&ved=2ahU KEwjfk5LohuPwAhVOrpUCHTczAyQQ6AEwB3oECBMQAw#v=onepage&q=E ste%20tipo%20de%20Middleware%20permite%20la%20impresi%C3%B3n%2 0de%20documentos%20remotos%2C%20manejos%20de%20transacciones% 2C%20autenticaci%C3%B3n%20de%20usuarios%2C%20etc.&f=false Lección 4 de 4 Descarga en PDF Módulo 1 - Lectura 2.pdf 520.6 KB Clasificación de modelos cliente-servidor Entre las consideraciones más importantes a tener en cuenta al momento de diseñar y desarrollar un sistema de información, encontramos la necesidad de definir su infraestructura y adoptar un modelo que permita dar una solución adecuada y óptima a la problemática que intentamos resolver. En esta lectura presentamos cómo se clasifican los modelos cliente-servidor en función de las características de sus componentes. Para desarrollar los conceptos, analizaremos el Caso: Comercial Mayorista S. A descripto en la lectura: Arquitectura. Clasi cación de modelos cliente-servidor Referencias Lección 1 de 2 Clasificación de modelos cliente-servidor La aplicación del modelo cliente-servidor para dar solución a una implementación de sistemas en una organización exige no solo conocer sus componentes, sino también entender cuáles son sus características. Estas son las que permiten realizar diversas clasificaciones que pueden ayudar a comprender y seleccionar un tipo de solución conveniente. Existen distintos tipos de clasificaciones: por tamaño de componentes; por capas (planos) de software o hardware; por características funcionales. Clasificación por tamaño de componentes Esta clasificación se basa en considerar las características de los clientes y servidores de la estructura. Básicamente, es donde se concentra la mayor capacidad de procesamiento. Fat client (thin server) Este modelo se caracteriza porque el software del cliente implementa la mayor parte de la lógica de la aplicación y la interacción con el usuario. En este modelo, el servidor es solamente responsable de la gestión de los datos. Este tipo de arquitecturas es muy recomendable en los casos que se deba dar soporte a sistemas de información gerencial. Fuente: elaboración propia. Figura 1: Representación Fat client La mayor parte del procesamiento se realiza del lado del cliente. Al contrario de lo que ocurre con un cliente liviano, implementar este modelo permite aprovechar la capacidad de procesamiento de los clientes, distribuyendo tanto capa de presentación como lógica de negocio. Aunque esto supone un mejor aprovechamiento de esa capacidad de procesamiento distribuida, el sistema es más complejo de gestionar. En caso de realizar modificaciones en la aplicación, esta debe ser reinstalada en cada computadora del cliente, generando una carga de trabajo y costos importantes cuando el número de clientes es muy elevado. Thin client (fat server) En este modelo, el cliente solo es responsable de la capa de presentación de la aplicación. Todo el proceso pesado corre del lado del servidor. Es decir, todo el procesamiento de las aplicaciones y gestión de datos son responsabilidad del servidor. Este tipo de arquitecturas es recomendado para sistemas transaccionales. Figura 2: Representación thin client El cliente solo es responsable de la capa de presentación. Fuente: elaboración propia. Una desventaja importante que presenta este modelo de cliente liviano es que una elevada carga de procesamiento se concentra en el servidor y la red. El servidor es responsable de realizar todo el procesamiento y esto implica generar un tráfico de red significativo. La implementación de clientes livianos en dispositivos de computación modernos desperdicia capacidad de procesamiento. Referencia caso de estudio En la línea de cajas, el sistema actual implementa clientes livianos, con escasa capacidad de procesamiento. Todo el proceso de la información se concentra en un servidor central, de alta capacidad. En el plan de mejora, se debería tener en cuenta que, al modificar la arquitectura de este, se puedan utilizar computadoras con capacidad de procesamiento, para aprovechar el procesamiento local para algunas actividades, como el tratamiento de datos para la elaboración de información estadística. Dotar de capacidad de procesamiento a las nuevas terminales a incorporar en el nuevo sistema permite reducir los niveles de carga de trabajo en el servidor. Clasificación por planos o capas (tier). Planos a niveles de software. Planos a niveles de hardware Este tipo de clasificación se basa en el concepto de capas o planos, tanto a nivel software como hardware. Para realizar esta clasificación, es muy importante tener en cuenta el concepto de distribución de funciones. En la arquitectura cliente-servidor, las funciones se pueden separar en tres niveles: – Lógica de presentación Las funciones principales de este nivel son obtener información del usuario, enviar la información para su procesamiento y recibir los resultados del procesamiento realizado. Lógica de negocio (o aplicación) – Cumple las funciones de recibir los datos que provienen del nivel de lógica de presentación e interactuar con el nivel de lógica de datos, para ejecutar las reglas de negocio que tiene que cumplir la aplicación. Una vez realizado el procesamiento, envía el resultado al nivel de presentación. – Lógica de datos Sus funciones son almacenar, recuperar, mantener y asegurar la integridad de los datos. Arquitectura de dos y tres planos Dependiendo de la forma en que se distribuyen las aplicaciones entre cliente y servidor, sobre la base del concepto de separación funcional, podemos definir si una arquitectura es de dos o tres capas. Aplicación de dos capas: es aquella aplicación en la que el cliente maneja la lógica de presentación, lógica de negocio y acceso a datos, y el servidor solo gestiona los datos. Aplicación de tres capas: es aquella aplicación en la que la lógica de presentación, la lógica de negocio y la lógica de datos están separadas en distintos servidores. Esta arquitectura, lógica de negocio y lógica de datos pueden estar repartidas entre distintos procesadores. Cliente-servidor de dos planos En este esquema, el cliente es quien maneja la lógica de presentación, lógica de negocio y lógica de acceso a los datos. El servidor cumple solamente con la función de gestión de datos. En esta arquitectura, la lógica de negocio no cuenta con un componente específico para su ejecución, por lo tanto, su implementación debe ser realizada en el cliente o el servidor. Dependiendo de dónde se ubique la lógica de negocio, se pueden tener dos tipos de implementación: Implementación con lógica de negocio en el cliente (SQL remoto): el cliente envía las consultas/requerimientos al servidor de bases de datos. El resultado vuelve a través de la red. En el siguiente gráfico, se puede observar este tipo de implementación: Fuente: elaboración propia. Figura 3: Implementación con lógica de negocio en el cliente Se implementan todas las actividades que corresponden al nivel de aplicación en el cliente. Implementación con lógica de negocio en el servidor: este tipo de arquitectura consiste en ubicar la lógica de negocio del lado del servidor. Es muy común realizar esta implementación a través de procedimientos almacenados. En este caso, el cliente realiza llamadas a funciones que residen en el servidor, más específicamente, en la base de datos, y es la propia base de datos la que se encarga de resolver y procesar la totalidad de las actividades. Esta forma de implementación es muy utilizada porque permite el aprovechamiento de los recursos provistos para el tratamiento de información por parte del motor de base de datos. Pero también presenta la desventaja de que, al desarrollar la lógica sobre la base de un determinado motor de base de datos, en caso de necesitar migrar de gestor de datos, esto se dificulta, por problemas de compatibilidad. En resumen, este tipo de implementación puede resultar muy conveniente, pero a costa de cierta dependencia de un producto determinado, como es el gestor de base de datos. En el siguiente gráfico, se puede observar este tipo de implementación: Figura 4: Implementación con lógica de negocio en el servidor Se implementan todas las actividades que corresponden al nivel de aplicación en el servidor. Por ejemplo, a través de procedimientos almacenados. Fuente: elaboración propia. La arquitectura de dos capas presenta ventajas y desventajas, dependiendo, en cierta medida, del tipo de implementación que se realiza. Compartimos, a continuación, la siguiente tabla. Figura 5: Ventajas y desventajas arquitectura dos planos Descripción: En la tabla se presentan algunas de las ventajas y desventajas de una implementación de dos planos (capas). Implementar un sistema de información dividido en dos capas puede tener ventajas apreciables desde el punto de vista del rendimiento, pero puede tener un costo considerable en lo que respecta a mantenimiento y balance de trabajo. Fuente: elaboración propia. Referencia casos de estudio El sistema actual aplica un trabajo en dos capas, con fuerte carga de procesamiento en el servidor, considerando que el sistema aplicado utiliza clientes livianos. Esto determina que el sistema tiene problemas para ser expandido, porque, al concentrar todo el procesamiento en el servidor, los clientes agregados provocarán una mayor carga y esto puede producir una considerable caída de rendimiento del servidor. Cliente-servidor de tres planos Este modelo consiste en agregar una tercera capa, de modo que se puedan distribuir los tres niveles funcionales. Presentación, negocio y gestión de datos son procesos lógicamente separados, ejecutados en procesadores diferentes. El esquema de funcionamiento se representa en la siguiente figura: Fuente: elaboración propia. Figura 6: Esquema de distribución de niveles funcionales en tres capas Se distribuyen los distintos aspectos funcionales en diferentes procesadores. El proceso comienza con el requerimiento realizado por el cliente, el servidor intermedio, que contiene la lógica de aplicación, procesa la petición y, dependiendo del tipo de solicitud realizada, es este servidor intermedio el que accede a la capa de datos. En la siguiente figura se presenta un esquema más detallado de la distribución de las capas entre los distintos componentes. Figura 7: Implementación de tres capas Se distribuyen cada capa funcional entre distintos procesadores. El servidor intermedio es quien tiene acceso directo a los datos. Fuente: elaboración propia. En la arquitectura de tres capas (en general, en la arquitectura multicapa), el cliente implementa la lógica de presentación (cliente “fino”), el servidor(es) de aplicación implementa la lógica de negocio y los datos residen en uno (o varios) servidor(es) de bases de datos (“Tema 2: El modelo cliente/servidor”, 2005, p. 10). Implementar arquitecturas cliente-servidor de tres capas permite solucionar problemas presentes en una implementación de dos capas; por ello, resulta más conveniente su aplicación. Algunas características a destacar son las siguientes: Permite distribuir la lógica de negocio o procesamiento de aplicación entre varios servidores, haciendo que tenga más posibilidades de escalar que un sistema de dos capas. El tráfico de la red se reduce considerablemente. Permite actualizar con facilidad el procesamiento de la aplicación, porque está localizada centralmente. Permite mejorar la respuesta a los pedidos de los clientes distribuyendo el procesamiento entre la lógica de la aplicación y los servidores de gestión de datos. Nota: El modelo cliente-servidor de tres capas puede extenderse a una variante multicapa en la que se añaden servidores adicionales al sistema. Un ejemplo de esto es cuando los sistemas necesitan acceder a múltiples bases de datos. En estos casos, se utilizan servidores ubicados entre el servidor de aplicaciones y los distintos servidores de base de datos. Este tipo de servidor se denomina servidor de integración y cumple la función de integrar los datos distribuidos y presentarlos como si se estuviera accediendo a una única base de datos. Referencia caso de estudio Para el plan de mejora del sistema de información, es importante considerar, para el diseño del nuevo sistema, una implementación basada en tres capas funcionales. De esta manera, no se dependerá de un único servidor central para la realización de los procesos y almacenamiento de los datos. Se sugiere la incorporación de servidores de lógica de aplicación, para poder integrar todas las reglas de negocio en un punto central y dedicar un servidor exclusivamente a gestión de datos. El sector de facturación puede mantener el esquema de cliente livianos, pero trabajando contra el servidor de lógica de aplicación. Este último es el que tiene acceso a los datos, en caso de ser necesario. Planos a nivel de hardware De la misma forma que se realiza la representación del modelo en capas funcionales, teniendo en cuenta las tareas que se realizan en clientes y servidores, se puede realizar una representación de implementación a través de un enfoque desde el punto de vista físico, sobre la base de los componentes. Cliente-servidor de dos planos Este tipo de implementación se basa en clientes que se conectan a un servidor para realizar las peticiones correspondientes. Es un esquema muy utilizado como soporte de sistemas de gestión y es uno de los más conocidos. Fuente: elaboración propia. Figura 8: Cliente-servidor de dos planos Se conectan múltiples clientes a un servidor central. Cliente-servidor de tres planos En este tipo de arquitectura, los clientes se conectan a través de la red a un servidor, generalmente local, y este servidor local se conecta a otro servidor central. Este esquema se representa en la siguiente figura: Figura 9: Cliente-servidor de tres planos Los clientes se conectan mediante red a servidores locales. Este servidor se conecta a un servidor central. Fuente: elaboración propia. Cliente-servidor de múltiples planos En este esquema se permite que los clientes se conecten directamente a los servidores centrales. De esta forma, se puede evitar el paso previo por conexión a un servidor local y luego al servidor central remoto. Fuente: elaboración propia. Figura 10: Cliente-servidor de múltiples planos Los clientes pueden conectarse a múltiples servidores. Referencia caso de estudio En concordancia con la referencia inmediatamente anterior, podemos considerar, en la implementación sugerida, adoptar una arquitectura cliente-servidor de tres planos, donde los clientes soporten la capa de presentación, servidores locales implementen lógica de negocio y servidores de bases de datos para almacenamiento de datos. Como se definió con anterioridad, la implementación de la lógica de negocios puede ser íntegramente aplicada en el servidor local de lógica de negocio, o bien desarrollar parte de la lógica de negocio a través de funciones en el servidor de datos. Características funcionales Otro tipo de clasificación que podemos realizar es la que permite agrupar los sistemas en función de cómo se distribuyen la presentación de los datos, la lógica de negocio y el acceso a la base de datos. Podemos definir distintos tipos de arquitecturas en función de cómo se distribuyen las capas entre los equipos. Presentación distribuida En este esquema de trabajo, el cliente asume parte de las funciones de la presentación. Si bien la terminal no es un cliente flaco en su totalidad, el servidor realiza la mayor parte de las tareas, gestionando y almacenando los datos, ya que contiene la base de datos, la lógica de la aplicación y la mayor parte de la interfaz de usuario. En la siguiente figura se puede apreciar la división de las capas. Figura 11: Presentación distribuida La capa de presentación se distribuye entre el cliente y el servidor. Este tipo de sistema es difícil de mantener. Fuente: elaboración propia. Presentación remota En este nivel se trabaja con un cliente inteligente que se encarga de la capa de presentación. Tiene un interfaz que permite la captura de los datos, validaciones y muestra de resultados de consultas. En algunos casos, se complementa con una interfaz más avanzada del lado del servidor. El servidor es de vital importancia porque se encarga del almacenamiento de datos y lógica de negocio. Fuente: elaboración propia. Figura 12: Presentación remota La capa de presentación de datos se ejecuta en el cliente. En esta capa se realizan validaciones de los datos de entrada y formateo de datos de salida. Lógica de negocio y el acceso a la base de datos se alojan en el servidor. Proceso distribuido En este esquema, la lógica de negocio o aplicación se procesa entre el cliente y el servidor. La lógica se divide entre ambas partes y se conoce también como proceso cooperativo. Figura 13: Proceso distribuido En este modelo, la capa que implementa la lógica de negocio se divide entre el cliente y el servidor. La capa de presentación se encuentra en el cliente, y el acceso a la base de datos, en el servidor. Fuente: elaboración propia. Base de datos remota En este nivel, la lógica de la aplicación se encuentra completamente del lado del cliente. El servidor solamente se encarga de la parte de almacenamiento de la base de datos. Fuente: elaboración propia. Figura 14: Base de datos remota Las capas de negocio y de presentación se ejecutan completamente en el cliente. El servidor contiene la base de datos en forma completa. Base de datos distribuida En este nivel, la gestión de la base de datos se puede realizar entre cliente y varios servidores en forma compartida. En este modelo, es muy importante considerar mecanismos que permitan asegurar la coherencia en los datos. Figura 15: Base de datos distribuida Las capas de negocio y de presentación se ejecutan completamente en el cliente. La base de datos está distribuida entre el cliente y el servidor. Fuente: elaboración propia. Referencia caso de estudio Se puede sugerir la aplicación de un sistema basado en un proceso distribuido, donde parte del proceso se pueda desarrollar en el cliente, y otra parte, implementada en el servidor de lógica de negocios. Este esquema permite distribuir el procesamiento, mejorando el rendimiento general del sistema. Además, se concentra gran parte de la lógica en servidores que permiten una fácil actualización ante cambios en las reglas. Importante: se puede sugerir cualquiera de los esquemas definidos. Inclusive, se puede tener en cuenta la posibilidad de dividir parte de la arquitectura, de modo tal de combinar ventajas de cada una. Características físicas La arquitectura cliente-servidor es una tecnología que se basa en aprovechar la potencia de las terminales para contener toda la lógica de presentación, de modo que el servidor quede liberado para realizar las funciones específicas que le competen. En el siguiente esquema se muestran las características físicas de conexión entre los componentes que conforman esta arquitectura. Fuente: elaboración propia. Figura 16: Características físicas de conexión Esquema de conexión física entre los componentes en arquitectura cliente-servidor. El proceso comienza con la petición en el cliente, que es quien aloja a la aplicación. Los elementos se comunican a través de un sistema de red que se encarga de transmitir los datos entre clientes y servidores. En este punto se utiliza el middleware, que independiza los procesos de cliente y servidor. Una vez establecida la conexión con el servidor, este resuelve la petición realizada, y por medio del middleware y del sistema operativo de red, devuelve la información al usuario. “Objetivos del middleware: que todo funcione con transparencia. El sistema da la impresión de ser único. Ej.: Internet = sistema único de millones de usuarios” (“Tema 2: El modelo cliente/servidor”, 2005, p. 23). Características lógicas Desde el punto de vista lógico, el principal aporte que brindan estas arquitecturas consiste en dotar al cliente de una interfaz gráfica capaz de tomar datos, editarlos, realizar pequeñas validaciones locales y luego mostrar los resultados. Los datos son mostrados de manera transparente en el cliente. No se produce duplicidad, ya que los datos están almacenados en el servidor. Esta forma de trabajo permite que el usuario de un sistema de información, soportado por una arquitectura clienteservidor, realice sus tareas desde su estación de trabajo con distintos datos y aplicaciones, sin importar dónde están alojados o sean ejecutadas cada uno de ellos. Ventajas y desventajas de la arquitectura cliente-servidor V E N TA J A S D E S V E N TA J A S Las aplicaciones se distribuyen entre los clientes. Esto permite, en muchos casos, contar con servidores no tan potentes. Los clientes se comunican mediante interfaces gráficas e interactivas. Esta característica reduce los tiempos de aprendizaje. Permite brindar, a cada departamento de una organización, una solución local, pero totalmente integrada a nivel global. Proporciona mejor acceso a los datos. Algunos procesos, al trabajar en forma local, permiten eliminar el movimiento de grandes bloques de información por la red hacia los servidores. Existe independencia física y lógica entre clientes y servidores. Permite centralizar el control de sistemas que antes estaban descentralizados. Un ejemplo es la gestión de computadoras personales que antes estaban aisladas. V E N TA J A S D E S V E N TA J A S Es una arquitectura de una complejidad importante debido a la integración de gran variedad de productos. Es difícil gestionar y asegurar la seguridad. Esto se debe a la existencia de una red de clientes y servidores con un sistema único centralizado. Se deben hacer verificaciones en el cliente y en el servidor. Existen problemas de congestión de red, que pueden provocar un bajo rendimiento en las aplicaciones de los clientes. Se deben tener en cuenta aspectos que en aplicaciones locales no se tienen, por ejemplo, tanto clientes como servidores deben utilizar un mismo mecanismo (sockets o RPC). Deben existir estrategias para asegurar la consistencia de los datos. Algunas conclusiones de aplicar el esquema cliente-servidor en la organización Aplicar este tipo de arquitectura permite la reducción de costos directos en la producción de software, y se transforma así en un importante aporte a las organizaciones. Este se considera un aporte directo, porque se pueden reutilizar para toda nueva construcción los servidores disponibles, centrándose el desarrollo solamente en la elaboración de los procesos del cliente, según los requerimientos deseados. Además, permite llevar información a cualquier lugar de la organización, informatizando cualquier área de la organización. Por último, se puede destacar que este tipo de arquitectura favorece a la adaptación tecnológica. C O NT I NU A R Lección 2 de 2 Referencias Tema 2: El modelo cliente/servidor. https://www.infor.uva.es/~fdiaz/sd/2005_06/doc/SD_TE02_20060305.pdf (2005). Recuperado de Sistemas distribuidos como tipo especial de arquitectura cliente-servidor En la actualidad, gran cantidad de sistemas de información tienen características de sistemas distribuidos. Un sistema distribuido se caracteriza, precisamente, por distribuir el procesamiento de la información entre varias computadoras, en vez de concentrar todo en un solo equipo. En esta lectura, describimos los principios de funcionamiento de un sistema distribuido y las características claves que presenta. Para desarrollar los conceptos, analizaremos el Caso: Comercial Mayorista S. A., descripto en la lectura: Arquitectura. Sistemas distribuidos Video conceptual Referencias Revisión del módulo Lección 1 de 4 Sistemas distribuidos Los sistemas distribuidos basan su funcionamiento en la capacidad de distribuir el procesamiento de la información entre los distintos componentes que los conforman. Estos componentes deben trabajar en forma sincronizada, de modo tal que permita a los usuarios visualizar al sistema como un todo, como si fuera una única aplicación, transparentando cómo es su estructura. “Un sistema distribuido es una colección de computadoras autónomas enlazadas a través de una red con software diseñado para producir facilidades de cómputo integradas” (Bazán, 2017, p. 7). Fuente: elaboración propia. Figura 1: Sistemas distribuidos Esquema básico de un sistema distribuido que permite compartir recursos y capacidad de procesamiento. Los componentes interactúan mediante la red. Cada componente cumple un rol definido. La visión de sistema único es posible por la implementación de la capa middleware. Los sistemas distribuidos permiten compartir recursos y sirven como base para el diseño de sistemas modulares, con componentes que pueden ejecutar en plataformas distintas. La distribución de sistemas se basa en un conjunto de componentes, donde cada uno de ellos realiza tareas específicas y deben ser coordinados en función de un objetivo común. La distribución de los sistemas obedece a distintas razones. Pueden ser razones funcionales, caso de aplicación de la arquitectura cliente-servidor, donde existen componentes que brindan servicios, y otros que consumen esos servicios. Otras razones de distribución pueden ser de acuerdo al dominio de aplicación, definiendo los componentes para ese dominio en particular o balanceo de carga de procesamiento, para lograr un mejor rendimiento del sistema. En este último caso, por ejemplo, se pueden considerar estrategias de replicación de poder de cómputo, para lograr un rendimiento superior al que se podría lograr con una gran computadora. La principal motivación para construir y utilizar sistemas distribuidos se sustenta en la idea de compartir recursos. La idea de recursos abarca desde un elemento de hardware – impresoras, unidades de disco, memoria—, hasta entidades de software —archivos, bases de datos, servicios, objetos, elementos, multimedia—. (Bazán, 2017, p. 7). Características claves de los sistemas distribuidos Los sistemas distribuidos presentan características fundamentales que representan tanto ventajas como desventajas en su aplicación. Ventajas Compartir de recursos Se define como recurso a toda aplicación, herramienta, dispositivo o capacidad con que cuenta una computadora; es decir, los recursos son los componentes, hardware o software, que se necesitan para lograr un funcionamiento adecuado, tanto a nivel individual como colectivo. Ejemplos de recursos pueden ser la memoria de un equipo, su capacidad de almacenamiento, su procesador, entre otros. Un dispositivo, como puede ser una impresora conectada a una computadora, también es un recurso. En los sistemas distribuidos, los recursos pueden ser compartidos y accedidos a través de la red. Figura 2: Compartir recursos Los sistemas distribuidos permiten compartir recursos entre los diferentes equipos conectados a una red. Fuente: elaboración propia. Apertura Los sistemas distribuidos, en general, son sistemas abiertos, porque se diseñan sobre la base de protocolos estándares que permiten la combinación de hardware y software de diversos orígenes. Un sistema abierto es un sistema que puede ser extendido. Y la extensión se puede realizar tanto respecto al hardware como respecto al software. – Abierto con respecto al hardware Un sistema se considera abierto cuando es posible el agregado de periféricos, memorias, interfaces de comunicación, sin importar el fabricante de origen. – Abierto con respecto al software Un sistema se considera abierto cuando es posible el agregado de software sin importar el fabricante. Es muy importante que las interfaces de comunicación, tanto a nivel hardware como software, sean públicas, de modo de lograr cumplir el objetivo de construir software heterogéneos. los sistemas a partir de hardware y Fuente: elaboración propia. Figura 3: Sistema abierto Un sistema se considera abierto cuando utiliza protocolos estándar para combinar hardware y software de distintos fabricantes. Transparencia La transparencia consiste en mostrar el sistema como una unidad, un todo, en lugar de una colección de componentes. En definitiva, significa ocultar al usuario y al programador cómo se componen físicamente los sistemas. Las transparencias más conocidas son: Transparencia de localización – Es posible el acceso a cada componente sin conocer su ubicación. Transparencia de concurrencia – Permite ejecutar varios procesos a la vez. Transparencia de fallos – Permite finalizar tareas de usuarios, aunque se produzca un fallo en el hardware o en el software. Transparencia de migración – Permite el movimiento de componentes dentro del sistema sin afectar a los usuarios. Transparencia de escalado – Permite la expansión de los sistemas y aplicaciones sin necesidad de grandes cambios en la estructura del sistema. Figura 4. Transparencia La transparencia se evidencia para los usuarios de la aplicación y los programadores. Fuente: elaboración propia. Escalabilidad Los sistemas distribuidos son escalables en la medida en que su capacidad pueda ser incrementada agregando nuevos recursos para atender nuevas demandas. Las organizaciones pasan por distintas etapas; muchas veces, esta transición implica crecimiento, el cual debe ser acompañado por el sistema de información. Este crecimiento puede requerir el agregado de computadoras y servidores. En este caso, ni el software del sistema ni la aplicación deberían cambiar al incrementarse la escala. La necesidad de escalabilidad no necesariamente está ligada al hardware; también depende del diseño del sistema, el cual debe respetar los niveles de escalabilidad para que no se presenten luego limitaciones que inhabiliten la operación del sistema. La filosofía de diseño debe basarse en que cualquier recurso simple de hardware o de software pueda extenderse para proporcionar servicio a tantos usuarios como se quiera. Fuente: elaboración propia. Figura 5: Escalabilidad Es importante adoptar una filosofía de diseño que permita el crecimiento del sistema. Tolerancia a fallos Los sistemas pueden fallar y esto puede afectar tanto al software como al hardware. Esto implica que se pueden producir resultados incorrectos o paradas del sistema. El diseño de un sistema distribuido tolerante a fallos debe proveer de elementos complementarios que permitan soportar estos problemas. Por ejemplo, utilizar hardware redundante, como los servidores de backups o mecanismos de recuperación de software, es decir, aplicaciones capaces de recuperarse de los fallos mediante uso de transacciones. Una pérdida completa de servicio se manifiesta cuando se producen problemas de red. Es importante que el sistema asegure niveles de disponibilidad adecuados, es decir, tiempo en que el sistema esté en servicio para su uso. Concurrencia Una ventaja adicional que presentan los sistemas distribuidos es la concurrencia, es decir, la capacidad de correr múltiples procesos al mismo tiempo sobre diferentes computadoras conectadas a la red. Los recursos están expuestos al acceso concurrente de varios usuarios y, por lo tanto, el sistema debe permitir el trabajo simultáneo sin que se produzcan inconvenientes. Heterogeneidad Los sistemas distribuidos se pueden considerar heterogéneos cuando son capaces de permitir el acceso a servicios y la ejecución de aplicaciones bajo cualquier plataforma. Esto significa diferentes redes, hardware, sistemas operativos y lenguajes de programación. Referencia caso de estudio Para la definición del nuevo sistema de información, debemos considerar, en su diseño, características del sistema distribuido, basado en una infraestructura de arquitectura distribuida. Se fundamenta esta decisión en el aprovechamiento de las ventajas que ofrece este tipo de implementación. Por ejemplo, es necesario pensar en un sistema con capacidad de adaptación a futuras expansiones (escalable), con características de apertura para posibles interacciones con otros sistemas (apertura) y tolerante a inconvenientes tanto a nivel hardware y software, de modo tal que no se produzcan pérdidas o errores de consistencia (tolerante a fallos). Desventajas Complejidad Los sistemas distribuidos poseen características que los hacen más complejos que un sistema centralizado. Un ejemplo que podemos considerar es que, en un sistema distribuido, el rendimiento del sistema no depende solamente del procesador, sino que también es afectado por el ancho de banda y la velocidad de los procesadores de la red. Se debe tener cuidado en la disposición de los recursos, ya que moverlos de una parte a otra del sistema puede afectar el rendimiento. Seguridad El sistema puede ser accedido desde varias computadoras conectadas a la red. El tráfico que circula por la red, a causa de esta interacción de los distintos componentes, puede estar afectado por algunos intentos de interceptar los datos. Este tipo de problemas hace más difícil mantener la integridad de los datos en el sistema y que los servicios del sistema no se degraden por ataques. Manejabilidad Esta es una desventaja típica que deriva de la posibilidad de utilizar computadoras de diferentes tipos que ejecutan diversos sistemas operativos o de los defectos que se pueden producir en una máquina y que pueden propagarse a otras. Los sistemas distribuidos requieren de un mayor esfuerzo para gestionar y mantener el funcionamiento del sistema. Impredecibilidad Los sistemas distribuidos tienen una respuesta impredecible. La respuesta de los sistemas distribuidos depende de la carga total en el sistema, de cómo está organizado y de cuál es la carga de la red. Esto hace que el tiempo requerido para responder a un requerimiento de usuario pueda variar considerablemente entre una petición y otra. Referencia caso de estudio Pasar de un sistema completamente centralizado, como el especificado en el caso de estudio, a una arquitectura distribuida, implica pasar a un esquema de trabajo mucho más flexible y adaptable a los cambios del negocio. Pero es importante considerar que este cambio implica un esfuerzo mucho mayor en el mantenimiento del sistema. Debemos tener en cuenta aspectos muy importantes como la seguridad, con todo lo que esto significa, y una mayor complejidad, necesaria para para dar soporte a un sistema distribuido. C O NT I NU A R Lección 2 de 4 Video conceptual Sistemas distribuidos C O NT I NU A R Lección 3 de 4 Referencias Bazán, P. (2017). Capítulo 1: Introducción a los sistemas distribuidos. En P. Bazán (Coord.), Aplicaciones, servicios y procesos distribuidos: una visión para la construcción del software (pp. 6-24). Recuperado de http://sedici.unlp.edu.ar/bitstream/handle/10915/62354/Documento_compl eto.pdf-PDFA.pdf?sequence=1&isAllowed=y C O NT I NU A R Lección 4 de 4 Revisión del módulo Hasta acá aprendimos Arquitectura – Se define a la arquitectura del software como la organización fundamental del sistema que incluye sus componentes, cómo se relacionan entre ellos y los principios que dictan su diseño y evolución (Etcheverry, 2010). Las arquitecturas pueden ser centralizadas o distribuidas. Introducción a tecnologías cliente-servidor – La arquitectura cliente-servidor permite modelar los sistemas de información como un conjunto de servicios proporcionados por equipos servidores, los cuales son utilizados por los equipos clientes. Clasificación de modelos cliente-servidor – Los modelos cliente-servidor se clasifican en función del tamaño de sus componentes, del número de capas (planos) de software o hardware o por sus características funcionales. Sistemas distribuidos como tipo especial de arquitectura cliente-servidor – Los sistemas distribuidos basan su funcionamiento en la capacidad de distribuir el procesamiento de la información entre los distintos componentes que los conforman, trabajando en forma sincronizada.