sábado, 28 de mayo de 2016

3.6 DISEÑO DE SOFTWARE DE ARQUITECTURA DISTRIBUIDA


Un sistema distribuido es una colección de computadoras independientes que aparecen ante los usuarios del sistema como una única computadora. (Tanenbaum, 1996)

 Aspectos:
 Hardware: Las máquinas son autónomas.
 Software: Los usuarios piensan que el sistema es como una única computadora.

Cada máquina posee sus componentes de hardware y software que el usuario percibe como un solo sistema (no necesita saber qué cosas están en qué máquinas). El usuario accede a los recursos remotos (RPC) de la misma manera en que accede a recursos locales, o un grupo de computadores que usan un software para conseguir un objetivo en común.

Los sistemas distribuidos deben ser muy confiables, ya que si un componente del sistema se descompone, otro componente debe ser capaz de reemplazarlo, esto se denomina Tolerancia a Fallos.



Ejemplos de Sistemas Distribuidos

Ejemplo 1
  • Una red de estaciones de trabajo en un departamento de una universidad o compañía.
Ø  De cada estación de trabajo personal podría existir una pila de procesadores en el cuarto de máquinas que no estén asignados a usuarios específicos sino que se utilicen de manera dinámica conforme sea necesario.

Ø  Tal sistema podría tener un sistema de archivos único con todos los archivos accesibles desde todas las máquinas de la misma forma y con el mismo nombre de ruta de acceso.

Ø  Además cuando el usuario escriba un comando el sistema podría buscar el mejor lugar para ejecutarlo tal vez en la propia estación de ti abajo del usuario o en una estación de trabajo inactiva que pertenezca a otra persona o en uno de los procesadores no asignados en el cuarto de máquinas.

Ø  Si el sistema se ve como un todo y actúa como un sistema de tiempo compartido clásico con un único procesador podría considerarse como un sistema distribuido.




Ejemplo 2
  • Una fábrica de robots

Ø  Cada uno de los cuales contiene una poderosa computadora para el manejo de visión, planeación, comunicación y otras tareas.

Ø  Cuando el robot de la línea de ensamble nota que parte por instalar es defectuosa le pide al robot del departamento de partes que le traiga una refacción.

Ø  Si todos los robots actúan como dispositivos periféricos unidos a la misma computadora central y el sistema se puede programar de esta manera también se le considera como sistema distribuido.




Ejemplo 3
  • Un Banco con cientos de sucursales por todo el mundo.

Ø  Cada oficina tiene una computadora maestra para guardar las cuentas locales y el manejo de las transacciones locales.

Ø  Cada computadora tiene la capacidad de comunicarse con las de otras sucursales y con una computadora central en las oficinas centrales.

Ø  Si las transacciones se pueden realizar sin importar dónde se encuentre el cliente o la cuenta y si los usuarios no observan diferencia alguna entre este sistema y el antiguo centralizado que ha remplazado también se podría considerar como un sistema distribuido.




Objetivos

El simple hecho de poder construir sistemas distribuidos no significa necesariamente que sea buena idea. Después de todo con la tecnología actual es posible colocar cantidades enormes de información en una sola computadora personal. El hecho es que esto no tendría sentido. En siguientes secciones se mostrarán las ventajas y desventajas en comparación con los sistemas centralizados.


Características

  • Concurrencia: Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios o los agentes que interactúan en la red.
  • Una de las características de los sistemas distribuidos es su modularidad, lo que le permite una gran flexibilidad y posibilita su escalabilidad, definida como la capacidad del sistema para crecer sin aumentar su complejidad ni disminuir su rendimiento. Uno de los objetivos del diseño de un sistema distribuido es extender la escalabilidad a la integración de servicios.
  • Transparencia El objetivo esencial de un sistema distribuido es proporcionar al usuario y a las aplicaciones una visión de los recursos del sistema como gestionados por una sola máquina virtual. La distribución física de los recursos es transparente. 
  • Fallos independientes de los componentes.- Cada componente del sistema pudiera fallar de manera independientemente, y los demás continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continua trabajando.
  • Apertura (opennesss): Un sistema informático es abierto si el sistema puede ser extendido de diversas maneras. La apertura de los sistemas distribuidos se determina primariamente por el grado hacia el que nuevos servicios de compartición de recursos se pueden añadir sin perjudicar ni duplicar a los ya existentes.
  • Carencia de reloj global.- Las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realización de una tarea, no tienen una temporización general, está más bien distribuida a los componentes.


Ventajas de los Sistemas Distribuidos sobre los Sistemas Centralizados



  1. Los sistemas computacionales en red ofrecen en promedio un mejor rendimiento/precio que los sistemas centralizados.
  2. La redundancia incrementa la disponibilidad cuando partes de un sistema fallan
  3. Las aplicaciones que pueden ser fáciles de ejecutar simultáneamente también ofrecen beneficios en términos de mayor rendimiento contra las soluciones centralizadas.
  4. Los sistemas distribuidos pueden extenderse a través de la adición de componentes, proporcionando de este modo una mejor escalabilidad en comparación con los sistemas centralizados

ELEMENTO
DESCRIPCIÓN
Económicos
Mejor rendimiento/precio para las computadoras en red que los centralizados.
Velocidad
Un sistema distribuido puede tener más potencia de cálculo que una
Distribución Inherente
Algunas aplicaciones involucran a las máquinas separadas espacialmente
Confiabilidad
Si una de las máquinas colapsa, el sistema como un todo podría sobrevivir.
Crecimiento Incremental
El poder computacional puede ser añadido en pequeños incrementos


Ventajas de los Sistemas Distribuidos sobre las computadoras independientes

ELEMENTO
DESCRIPCIÓN
Compartir Datos
Permite a muchos usuarios accesar a una base de datos en común.
Compartir Dispositivos
Permite a muchos usuarios compartir dispositivos costosos.
Comunicación
Hace de la comunicación humano – humano más fácil.
Flexibilidad
Reparte el trabajo sobre las máquinas disponibles de la manera más rentable


Ventajas del medio ambiente de la computación distribuida sobre las aplicaciones independientes.

  1. Alto rendimiento: Las aplicaciones pueden ejecutarse en paralelo y distribuir la carga a través de múltiples servidores.
  2. Colaboración: Múltiples aplicaciones pueden ser conectadas a través de mecanismos de sistemas computacionales distribuidos estándares.
  3. Alta confiabilidad y disponibilidad: Aplicaciones o servidores pueden almacenarse en múltiples maquinas.
  4. Escalabilidad: Para desarrollar componentes distribuidos reusables en poderosos servidores.
  5. Extensibilidad: Dinámica reconfiguración de aplicaciones distribuidas a través de la red.
  6. Alta productividad y bajo ciclo de tiempo de desarrollo: Rompiendo los grandes problemas en otros más pequeños, estos componentes individuales pueden ser desarrolladas por pequeños equipos de desarrollo de manera aislada.
  7. Reúso: Servicios que pueden potencialmente ser usados por múltiples aplicaciones clientes. 
  8. Costos reducidos: Debido a la reutilización de los componentes una vez hayan sido desarrollados que son accesibles a través de la red.

Desventajas
  1. Complejidad: Los sistemas distribuidos son más complejos que los sistemas centralizados. Esto hace más difícil comprender sus propiedades emergentes y probar estos sistemas. 
  2. Seguridad: Puede accederse al sistema desde varias computadoras diferentes, y el tráfico en la red puede estar sujeto a escuchas indeseadas. Esto hace más difícil el asegurar que la integridad de los datos en el sistema se mantenga y que los servicios del sistema no se degraden por ataques de denegación de servicio.
  3. Manejabilidad: Las computadoras en un sistema pueden ser de diferentes tipos y pueden ejecutar versiones diferentes de sistemas operativos. Los defectos en una máquina pueden propagarse a otras máquinas con consecuencias inesperadas. Esto significa que se requiere más esfuerzo para gestionar y mantener el funcionamiento del sistema.
  4. Impredecibilidad: Los sistemas distribuidos tienen una respuesta impredecible. La respuesta depende de la carga total en el sistema, de su organización y de la carga de la red. Como todos ellos pueden cambiar con mucha rapidez, el tiempo requerido para responder a una petición de usuario puede variar drásticamente de una petición a otra.


Bibliografía:

- Sommerville, I. (2005). Ingeniería del Software. España: Addison-Wesley.

- Lafuente, A. (28 de Mayo de 2016). Universidad del País Vasco. Obtenido de Departamento de Arquitectura y Tecnología de Computadores: http://www.sc.ehu.es/acwlaroa/SDI/Apuntes/Cap1.pdf

- Tanenbaum, A. (1996). Sistemas Operativos Distribuidos. Amsterdam: Prentice Hall Inc. 

No hay comentarios:

Publicar un comentario