Módulo 1 - Lectura 4.pdf
Document Details
Uploaded by ITKnow
Universidad Siglo 21
Tags
Full Transcript
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 co...
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.