1.6. Diseño de software de arquitectura distribuida

Ver comentarios

Diseño de software de arquitectura distribuida es un sistema en el que el procesamiento de información se distribuye sobre varias computadoras en vez de estar confinado en una única máquina.

Ventajas del desarrollo de sistemas Distribuidos

Comparación de recursos. Permite compartir recursos hardware y software como discos duros, impresoras, fichero y compiladores asociadas en un red.

Apertura. Se puede diseñar sobre protocolos estándar que permiten combinar equipamiento y software de diferentes vendedores.

Concurrencia. En un sistemas distribuido se puede operar procesos al mismo tiempo sobre diferentes computadoras de la red, estos procesos pueden comunicarse con otros durante su funcionamiento normal.

Escalabilidad. Los sistemas distribuidos son escalables en tanto que la capacidad del sistema puede incrementarse añadiendo nuevos recursos para cubrir nuevas demandas sobre el sistema.

Tolerancia a defecto. La disponibilidad de varias computadoras y el potencial para reproducir información significa que los sistemas distribuidos pueden ser tolerantes a algunos fallos de funcionamiento del hardware y del software.

Desventajas del desarrollo de sistemas Distribuidos

Complejidad. Los sistemas distribuidos son más complejos que los sistemas centralizados. Hace más difícil comprender sus propiedades emergentes y probar estos sistemas. .

Seguridad. Puede acceder al sistema desde varias computadoras diferentes, y al tráfico en la red puede estar sujeto a escuchas indeseadas. Esto hace mas dificil el asegurar la integridad de los datos en el sistema se mantenga y lo servicios del sistema no se degrade por ataques de denegación de servicio.

Manejabilidad. Las computadoras en un sistema pueden ser diferentes tipos y pueden ejecutar versiones diferentes de sistemas operativos. Los defectos en una máquina pueden propagarse a otras máquinas con consecuencia inesperada requiriendo más esfuerzo para gestionar y mantener el funcionamiento del sistema.

Impredecibilidad. La respuesta sistema distribuido depende mucho de la respuesta de la red y la organización. El tiempo requerido a las respuestas de la petición del usuario puede variar drásticamente de una a otra.

Tipos de genérico de arquitecturas de sistemas distribuidos:

Arquitectura cliente - servidor. El sistema puede ser visto como un conjunto de servicios que se proporcionan a los clientes que hacen uso de dichos servicios. Los servidores y los clientes se tratan de forma diferente en estos sistemas.

Arquitectura de objetos distribuidos. No existe distinción entre servidores y clientes, el sistema pude ser vistos como un conjunto de objetos que interaccionan cuya localización es irrelevante. No hay distinción entre un proveedor de servicios y el usuario de estos servicios.

Es necesario que el diseñador de sistemas distribuidos conozca una serie de principios de diseño:

  • Correspondencia del volumen de transmisión con los medios de transmisión. Esto significa que para un tráfico denso de datos en un sistema distribuido se deberían utilizar medios de transmisión rápidos. El proceso de asignar tales medios normalmente tiene lugar después de haber tomado decisiones sobre la potencia de procesamiento de distribución en un sistema y, algunas veces, conlleva unas ligeras iteraciones al final de la fase de diseño.

  • Mantenimiento de los Datos más usados en un almacenamiento Rápido. Requiere que el diseñador examine los patrones de datos en un sistema y asegure que los datos a los que se accede frecuentemente se guarden en algún medio de almacenamiento rápido.

  • Mantenimiento de los datos cerca de donde se utilizan. Este principio de diseño intenta reducir el tiempo que pasan los datos en medios lentos de transmisión. Muchos de estos sistemas son en donde los usuarios acceden con frecuencia a un subconjunto de datos.

  • Utilización de la duplicación de datos todo lo posible Consiste en mantener múltiples copias de datos en un sistema al mismo tiempo. Existen muchas razones para la duplicación de datos las dos principales son:

    • Es que hay que asegurar la redundancia que permite que un sistema distribuido continúe funcionando aun cuando una computadora con datos importantes quede fuera de servicio normalmente por un mal funcionamiento del hardware.
    • Es que proporciona una forma de implementar el principio dilucidado en la sección anterior, el de asegurar que los datos estén ubicados cerca de donde se utilizan.

  • Eliminar cuellos de botella. La estrategia normal para manipular cuellos de botella es compartir la carga de procesamiento entre los servidores, normalmente servidores físicamente cerca del que está sobrecargado.

  • Minimizar la necesidad de un gran conocimiento del sistema. El diseñador de un sistema distribuido en primer lugar necesita minimizar que el sistema dependa de datos globales, y entonces asegurar que el conocimiento necesario se comunique rápidamente a aquellos componentes del sistema que lo requieran.

  • Agrupar datos afines en la misma ubicación. Los datos que están relacionados deberían de estar dentro del mismo servidor. El diseñador de un sistema distribuido debe asegurarse de que los datos relacionados gracias al hecho de que se suelen recuperar juntos tendrán que recidir lo más cerca posible, preferiblemente en el mismo servidor, o si no en servidores conectados a través de medios de transmisión rápidos tales como los medios utilizados en una red de área local.

  • Considerar la utilización de servidores dedicados a funciones frecuentes. Algunas veces se puede lograr un mayor rendimiento mediante la utilización de un servidor de empleo específico para una función en particular en lugar de.

  • Correspondencia de la tecnología con las exigencias de rendimiento. El diseñador elige una tecnología debe de tener conocimiento de la transmisión y de las cargas de procesamiento que conlleva, y seleccionar una tecnología que minimice estas cargas.

  • Empleo del paralelismo todo lo posible. Una de las ventajas principales de la tecnología cliente servidor es el hecho de que se pueden añadir servidores y, hasta cierto punto, elevar el rendimiento del sistema. Muchas funciones del comercio electrónico pueden beneficiarse de la ejecución que están llevando a cabo diferentes servidores en paralelo. Esta no es una decisión sencilla. Mediante el empleo de varios servidores, el diseñador está creando la necesidad de que estos servidores se comuniquen.

  • Utilización de la compresión de datos todo lo posible. Se dispone de un grupo de algoritmos que comprimen data y que reducen el tiempo que tardan los datos en transferirse entre un componente de un sistema distribuido y otro componente. El único gasto que se requiere para utilizar esta técnica es tiempo del procesador y la memoria necesaria para llevar a cabo la compresión en la computadora del emisor y la descompresión en la computadora del receptor.

  • Diseño para el fallo. Una parte importante del proceso de diseño es analizar los fallos que podrían aparecer en un sistema distribuido y diseñar el sistema con suficiente redundancia como para que dicho fallo no afecte seriamente y, en el mejor de los casos, que se pueda reducir el tiempo de respuesta de ciertas transacciones. Una decisión normal que suele tomar el diseñador es duplicar los servidores vitales para el funcionamiento de un sistema distribuido. Una estrategia en los sistemas de alta integridad es que un servidor se reproduzca tres veces y que cada servidor lleve a cabo la misma tarea en paralelo. Cada servidor produce un resultado a comparar. Si los tres servidores aceptan el resultado, éste pasa a cualquier usuario o servidor que lo requiera; si uno de los servidores no está de acuerdo, entonces surge un problema y el resultado de la mayoría se pasa informando al administrador de sistemas del posible problema. La duplicación de servidores como estrategia de mitigación de fallos puede utilizarse junto con el diseño de un sistema para lograr el paralelismo en las tareas.

  • Minimizar la latencia. Cuando los datos fluyen de una computadora a otra en un sistema distribuido a menudo tiene que atravesar otras computadoras. Algunas de estas computadoras puede que ya tengan unos datos que expidan funcionalidad; es posible que otras procesen los datos de alguna manera. El tiempo que tardan las computadoras es lo que se conoce como latencia. Un buen diseño de sistema distribuido es el que minimiza el número de computadoras intermediarias.

  • [*] Epílogo. Un punto importante a tener en cuenta es una estrategia puede militar contra otra, minimizar la latencia y duplicar bases de datos pueden ser dos estrategias opuestas: incrementar el número de bases de datos duplicadas incrementa la latencia de un sistema; como consecuencia, el diseño de sistemas distribuidos, más que otra cosa, es un arte.


    Comentarios