• No se han encontrado resultados

DESARROLLO Y ADECUACIÓN DE SOFTWARE DISTRIBUIDO EN REDES MÓDULO I SISTEMAS DISTRIBUIDOS

N/A
N/A
Protected

Academic year: 2021

Share "DESARROLLO Y ADECUACIÓN DE SOFTWARE DISTRIBUIDO EN REDES MÓDULO I SISTEMAS DISTRIBUIDOS"

Copied!
22
0
0

Texto completo

(1)

DESARROLLO Y ADECUACIÓN DE SOFTWARE DISTRIBUIDO EN REDES

SISTEMAS DISTRIBUIDOS

MÓDULO I

(2)

Características

Los sistemas distribuidos se caracterizan por tres aspectos, principalmente: el procesamiento concurrente, la carencia de un reloj global de procesamiento que dirija toda la lógica de programación y la robustez a fallos del sistema.

La concurrencia es una importante característica que permite que los diferentes recursos disponibles sean utilizados simultáneamente por los diversos usuarios y/o agentes que interactúan con el sistema. Imagínese el portal electrónico del banco donde tenga una de sus cuentas, piense a nivel nacional cuántos usuarios de manera simultánea utilizan el sistema, incluso la misma funcionalidad que usted usa. La característica que le permite al sistema atender a miles de usuarios de manera simultánea es precisamente la concurrencia.

Cualquier sistema de información presenta una lógica de programación que le permite responder adecuadamente a las peticiones de los usuarios. Esta lógica reside en cada uno de los recursos que se integran al sistema distribuido (claro que alguno tendrá el control principal). Cada computador donde residen dichos recursos posee un reloj interno de procesamiento que coordinará la ejecución de cada lógica instrucción por instrucción. De esta manera, no se puede hablar de un reloj global de procesamiento porque no hay una temporización general, sino que está más bien distribuida entre los componentes.

La robustez ante fallos es otra importante característica de los sistemas distribuidos, ya que los fallos en un sistema pueden presentarse debido a diferentes causas. Sin embargo en un sistema distribuido un componente del sistema puede fallar pero los demás elementos pueden continuar ejecutando sus acciones e inclusive integrar otros recursos que suplan la función del recurso que falló. Esto permite el logro de las tareas con mayor efectividad, puesto que el sistema en su conjunto continúa trabajando. El fallo es inadmisible en algunos sistemas, piense que estuviera interactuando con su portal electrónico bancario y estuviera realizando una transferencia electrónica, ¿admitiría usted un fallo en esta operación del sistema?

En algunos sistemas distribuidos, además de esta característica ante los fallos, para lograr total robustez se hace necesario diseñar al sistema para que sea capaz de recuperarse consistentemente ante un fallo inminente. Esta característica es necesaria en sistemas distribuidos de misión crítica (aquellos sistemas que apoyan de manera directa la misión de la empresa, sin ellos la empresa no

Definición

Para abordar el estudio de los sistemas distribuidos, es necesario que unifiquemos el concepto. En el contexto de este curso se entenderá como sistema distribuido a todo aquel sistema cuyos componentes de hardware y software residen en diferentes computadores conectados a una red, o incluso a diversas redes interconectadas entre sí, independientemente del tipo de topología o protocolo de comunicaciones que utilicen.

El sistema distribuido como tal establece la comunicación entre estas máquina y coordina sus acciones mediante el uso de diversas técnicas como el paso de mensajes, para lograr el objetivo para el cual fue implantado. El esquema de arquitectura comúnmente utilizado para construir esta clase de sistemas es el de cliente-servidor.

funciona), ya que aunque se presente un fallo el sistema debe reiniciar y continuar la operación, pero la información debe haber quedado como si el fallo no se hubiera presentado. Retomando nuevamente

(3)

Evolución

Los sistemas distribuidos poco a poco han evolucionado e incorporado mejores soluciones para lograr implantar de manera efectiva las características antes mencionadas.

En un primer estadio, los sistemas host o de procesamiento central fueron la primera solución al problema de distribución, aunque en este caso todo el procesamiento de la organización se llevaba a cabo en una sola computadora de alto desempeño, normalmente un mainframe, y los usuarios empleaban computadores personales o terminales brutas. El procesamiento era centralizado en el mainframe y los demás computadores se interconectaban.

Este modelo tiene la ventaja de contar con altas tasas de tiempo de respuesta debido a las características de supercomputación de los mainframes, altos niveles de seguridad para proteger el computador central, facilidad de administración de un solo servidor, posibilidad de diseñar diversos mecanismos de respaldo y recuperación ante fallos. Dentro de las desventajas de este modelo se podrían mencionar:

• El hardware del mainframe debía ser cambiado cuando la carga de procesamiento aumentaba fuera de sus límites de proceso. El costo de este hardware es relativamente más alto que agregar más computadores personales clientes o servidores que aumenten las capacidades totales del sistema. Además que realmente dado que es un sistema centralizado, realmente la única posibilidad para lograr escalar el sistema era aumentando tanto la capacidad del nodo central como el número de computadores personales o terminales clientes.

• El desarrollo de la programación de interfaces gráficas de usuario trajo consigo un incremento de los volúmenes de procesamiento, de tal manera que el mainframe debía gastar mucho de su valioso tiempo de procesador en preparar respuestas gráficas, sacrificando los procesos principales del sistema. Adicionalmente, las redes de comunicaciones se empezaron a saturar debido al tráfico pesado de información hacia los computadores personales o terminales brutas.

• Dado que la operación del sistema está concentrada en el mainframe el grado de vulnerabilidad a nivel de seguridad y de robustez ante fallos es muy alto.

Es importante anotar que los mainframes aun continúan vigentes en varios sistemas como los sistemas centrales bancarios, debido a la importancia de contar con una base única de información y a las ventajas a nivel de hardware de los supercomputadores, sin embargo, como se verá más adelante, estos sistemas están respaldados con otros sistemas que mantienen su propia información y actualizan la información central.

La siguiente arquitectura que entró a competir con la anterior fue la de grupo de Servidores. Este modelo, también un tanto centralizado, se caracteriza porque existe un grupo de computadores actuando como servidores, normalmente como servidores de archivos (bases de datos) o de servicios de impresión, su nivel de hardware es adecuado para esta clase de servicios, por ejemplo altos volúmenes de disco duro, buena memoria para los spool de impresión, etc. pero el procesamiento fuerte se traslada a los computadores personales conectados a una red LAN, con un nivel de hardware bueno a nivel de memoria y procesador.

nuestro ejemplo bancario, creo que a todos nos ha pasado que hemos estado en un cajero electrónico de un red bancaria y en la mitad del retiro, justo después de haber seleccionado el monto a retirar y precisamente antes de que el cajero nos dé el dinero, se va la línea, ¿Cómo esperaría que el saldo de su cuenta estuviera?.

(4)

Dentro de las ventajas de este modelo están que la carga de procesamiento ha sido distribuida entre los diversos equipos del sistema ofreciendo buenos tiempos de respuesta y menor vulnerabilidad ante ataques de seguridad y de fallos debido a la descentralización del proceso siempre y cuando se definan adecuados procedimientos y políticas de administración tanto de los servidores como de la red en sí. Las principales desventajas de este modelo son:

• Se puede presentar una alta saturación de la red de comunicaciones debido a tasas de transferencia de grandes archivos solicitados simultáneamente por los diversos clientes de los distintos servidores.

• Dado que la operación del sistema realmente depende del buen funcionamiento de los computadores personales, cualquier fallo de éstos hace que el sistema deje de operar.

• Se requieren altos niveles de administración tanto de los servidores como de los computadores personales para garantizar la operación segura y permanente del sistema.

El siguiente modelo es el de la arquitectura cliente – servidor, predominante en la actualidad. Su característica principal es que permite descentralizar el procesamiento y el uso de los recursos, sobre todo, en lo que se refiere a procesamiento funcional del sistema, gestión de datos e interfaces gráficas de usuario.

En esta arquitectura se interconectan servidores especializados en la administración y procesamiento de recursos, por ejemplo, servidores de bases de datos, servidores de aplicaciones complejas, servidores de administración de contenido, servidores para implantar esquemas de seguridad, así como computadores personales especializados en el procesamiento de interfaces gráficas de usuario y administración de bases de datos propias.

El alto grado de descentralización de los procesos, junto con adecuadas políticas de seguridad y administración del sistema han permitido la evolución de los sistemas hasta el grado que actualmente conocemos, las aplicaciones orientadas a Internet.

Definición

En los términos más simples, un sistema cliente – servidor está compuesto por una máquina cliente que solicita un determinado servicio a un computador que lo proporciona, denominado servidor. Dentro de la clase de servicios que pueden ser prestados, se podría mencionar:

• Ejecución de una funcionalidad particular de una aplicación que se ejecuta en el servidor de acuerdo con los parámetros enviados desde el cliente.

(5)

• Acceso a una determinada base de datos de acuerdo con los parámetros validados y enviados desde el cliente.

• Acceso a un dispositivo de hardware particular como un servicio de impresión, de generación de respaldos de seguridad, etc.

En general, los sistemas cliente – servidor integran un medio físico de comunicación entre las máquinas, sin embargo, es posible que aún en la misma máquina se instalen sistemas con esta clase de arquitectura. Por ejemplo, cuando un sistema accede a una base de datos local, implícitamente está utilizando esta clase de arquitectura.

Categorías de Servidores

Una de las principales características de la arquitectura cliente – servidor es la posibilidad de integrar servidores especializados en determinadas funciones, por ejemplo:

• Servidores de archivos: Su función primordial es la de administrar archivos de datos para los clientes. Son máquinas especializadas en acceso a dispositivos físicos de almacenamiento, con altos niveles de desempeño en operaciones de entrada – salida a disco o dispositivos de respaldo, procesos efectivos y rápidos de búsqueda de archivos, procesos de respaldo de información, principalmente. • Servidores de Base de Datos: Las bases de datos son archivos de información relacionada cuyo única forma de administración y manipulación es a través del servicio de un motor de base de datos, a diferencia de los archivos que pueden ser manipulados directamente desde el sistema operativo. Los motores de bases de datos tienen implícitas políticas de seguridad además de las que ofrezca el sistema operativo, así mismo tiene procesos y herramientas de administración especializadas para esta clase de datos. La información que se mantiene en la base de datos únicamente se accesible a través de un lenguaje estándar (SQL), que sigue una sintaxis normalizada entre los diversos motores de bases de datos. Dependiendo del motor de base de datos, es posible que además se ejecuten procesos relacionados con los datos como procesos de validación y verificación de consistencia de la información, procesos que respondan a determinados eventos que sucedan ante los datos, procesos de extracción y carga masiva de información, entre otros.

• Servidores de workflow (software de grupo): Esta clase de servidores se especializan en administrar información relacionada con procesos desarrollados por grupos de personas, donde se establecen determinadas funciones, flujos, recursos, tareas y resultados esperados. Para aclarar el concepto piense en el trámite que es necesario realizar para la compra – venta de una casa, identifique todas las personas – empresas que intervienen, el trámite o proceso que cada uno de ellos realiza, el orden en el que debe ser realizado, las condiciones o requisitos necesarios para poder iniciar cada etapa, los documentos que se generan, los resultados esperados, los posibles errores. Todo este flujo estructurado de elementos puede ser modelado a través de un workflow que administrar además toda la información que surge durante este proceso. En síntesis este software permite organizar el trabajo de un grupo, gestionando los datos que dan soporte a estas tareas. Por ejemplo: almacenar las listas de correo electrónico, almacenar y realizar seguimiento de tareas de acuerdo con el estado, etc.

(6)

• Servidores WEB: Estos servidores son repositorios de páginas HTML, ofreciendo además servicios de seguridad y de administración del contenido, de tal manera que el cliente desde un aplicativo tipo browser puede realizar un llamado a páginas almacenadas en el servidor, quién recibe la petición, la valida, analiza y presenta la página solicitada. Cuando está página contiene información dinámica que procede por ejemplo de una base de datos, este servidor establece comunicación con otros como el servidores de bases de datos, de aplicaciones, de workflow, así mismo puede utilizar diversos servicios como el de correo o de impresión de acuerdo con la funcionalidad de la página. Estos servidores WEB cuentan con altos niveles de seguridad y de control de virus para evitar esta clase de riesgos.

• Servidores de correo: Este servidor se especializa en gestionar el envío y recepción de correo de un grupo de usuarios utilizando el protocolo de correo SMTP. Adicionalmente puede ofrecer servicios de filtrado de correo indeseado, restricciones de servicios, servicios de antivirus, etc.

• Servidor de objetos: Esta clase de servidores, permite almacenar objetos que pueden ser activados a distancia de acuerdo con las necesidades de los usuarios, por ejemplo, generación de copias de respaldo.

• Servidores de impresión: Los servidores de impresión, gestionan las solicitudes de impresión de los clientes, recibiendo la petición y ubicándola en la cola de impresión de acuerdo con las políticas y jerarquías de impresión definidas. El servidor administra el dispositivo físico de impresión para ejecutar la tarea e informa al cliente el resultado de la operación.

• Servidores de aplicación: Por aplicación se entiende cualquier solución que ha sido codificada en un lenguaje de programación en particular. Estos programas residen en el servidor de aplicaciones, quién los activa de acuerdo con las peticiones que reciba, recibiendo los parámetros enviados por el cliente, disparando el proceso o programa adecuado con dicha petición, recibiendo la respuesta generada por este programa y enviándola en el formato adecuado con el cliente.

Clasificación de los sistemas cliente servidor

Los sistemas cliente/servidor de acuerdo con el nivel de abstracción del servicio que ofrecen se pueden clasificar en:

• Representación distribuida. En este caso el computador cliente actúa únicamente como medio para el usuario interactúe con el servidor.

• Representación Remota: En este nivel, el procesamiento se distribuye entre el cliente y el servidor. Mientras que el cliente procesa toda la lógica de la interfaz gráfica de usuario (recibir y formatear datos únicamente), el servidor ejecuta la lógica de la aplicación y realiza la gestión de la base de datos.

(7)

• Lógica Distribuida: En este nivel, el cliente realiza la lógica de la interfaz gráfica de usuario junto con algunas funciones que pueden ser procesadas sin intervención del servidor, como por ejemplo, validar que los campos obligatorios hayan sido ingresados completamente por el usuario, verificar que los campos cumplan ciertas características como límites en rangos, valores por defectos, campos relacionados entre sí, etc. Las demás funciones, es decir, la lógica fuerte de la aplicación y la gestión de la base de datos, se realiza en el servidor.

• Gestión Remota de Datos: En este caso el cliente realiza la lógica de presentación, interfaz gráfica de usuario y ejecuta la aplicación, mientras que el servidor es quien realiza la gestión de la base de datos únicamente.

• Base de Datos Distribuidas: En este nivel, el cliente realiza la lógica de interacción con el usuario (interfaz gráfica de usuario) y ejecuta la aplicación, mientras que la base de datos está distribuida en varios servidores e inclusive a nivel local del cliente, por lo que la aplicación conoce la topología de la red, así como la disposición y ubicación de los datos que requiere.

• Cliente servidor a tres niveles: El computador cliente realiza la interacción con el usuario (recibe, formatea y valida los datos), mientras que otro servidor es responsable de ejecutar la lógica de la aplicación y otro servidor realiza la gestión de la base de datos.

• Cliente servidor por capas: El nivel cliente servidor a tres niveles involucra tres capas para el procesamiento de una petición del usuario, la capa cliente, el servidor de aplicaciones y el servidor de base de datos. En aplicaciones más complejas, se pueden presentar más de tres niveles o capas. Por ejemplo, un cliente servidor de cinco capas podría estar compuesto por la capa cliente, el servidor web, el servidor de aplicaciones, el servidor local de base de datos y el host central (mainframe). Particularmente este ejemplo es característico de un portal electrónico bancario.

En una arquitectura cliente – servidor, los servidores y clientes se comunican a través de una red de comunicaciones, estas redes utilizan diversos protocolos de comunicaciones, por lo que es importante tener claro que otro elemento de esta clase de sistemas es el o los protocolos de comunicaciones de las redes que interconectan los diversas recursos que hacen parte del sistema, temas que han sido abordados en otros cursos de la Especialización. Sin embargo, dentro de esta temática, el concepto de protocolo se extiende aún más, para abarcar la forma de comunicación de los procesos entre el cliente y el servidor a través de mensajes.

(8)

Definición

Un protocolo es un conjunto bien definido y conocido de reglas y formatos que se utilizan para la comunicación entre procesos que realizan una determinada tarea. En general un protocolo presenta dos partes:

• Una especificación de la secuencia de mensajes que se han de intercambiar. • Una especificación del formato de los datos en los mensajes.

De manera general, un protocolo permite que componentes de software heterogéneos del sistema distribuido puedan ser desarrollados de manera independiente, en plataformas y paradigmas de programación distintos. Por medio de otro componente de software que modela el protocolo de paso de mensajes entre aplicaciones se puede establecer una comunicación transparente entre estos componentes. Es conveniente mencionar que los componentes de software heterogéneos deben presentar unas interfaces claras y conocidas para permitir el desarrollo del software que modela el protocolo.

El desarrollo de sistemas distribuidos ha evolucionado dramáticamente debido a la necesidad de las empresas de interconectar los diversos sistemas de información que poseía, utilizando diversas técnicas para el desarrollo del software de protocolo como llamadas a procedimientos remotos, programación multihilos, sincronización y desincronización de procesos, etc.

El concepto de protocolo, de acuerdo con lo definido en este curso, da pie para que hablemos de componentes complejos de software intermedios entre el cliente y el servidor conocidos como middleware.

Definición

Los middleware son capa de software intermedio entre el cliente y el servidor, que gestionan los diversos procesos de comunicaciones entre éstos (protocolos). Por ejemplo en una aplicación orientada a Internet, si se hace la petición de una página web desde un navegador en el cliente, el middleware determina la ubicación y envía una petición para dicha página al servidor WEB, quién interpreta la petición y envía la página al software intermedio, para que éste a su vez la dirija al navegador de la máquina cliente que la solicitó.

Tipos

• Existen diversas clases de middleware, dentro de las que se pueden mencionar:

• Middleware general. Esta clase de middleware ofrece servicios generales que requieren todos los clientes y servidores como por ejemplo: la gestión de los procesos de comunicaciones bajo algún protocolo en particular como TCP/IP, la gestión de los diversos procesos con el sistema operativo como, por ejemplo, almacenamiento de los ç

(9)

archivos distribuidos, ejecución de procesos de autenticación, ejecución de software intermedio de mensajes de clientes a servidores y viceversa.

• Middleware de servicios: En este caso, el middleware está asociado al servicio que en particular ofrece, como por ejemplo el software que permite que una aplicación se conecte remotamente a una base bases de datos en el modelo cliente - servidor, por ejemplo el ODBC (open database conecctivity). Otro ejemplo puede ser el software de gestión de objetos distribuidos, utilizando tecnologías como CORBA1 que permiten la comunicación a través de mensajes y la coexistencia de objetos distribuidos creados en distintos lenguajes de programación. Uno ejemplo más pueden ser middleware para workflow, software para manejo de conexiones seguras a través de sockets, dentro de otros.

Características

Dentro de las principales características del middleware se pueden mencionar las siguientes:

• El desarrollo de los diversos servicios es independiente de su implantación, del sistema operativo y de los protocolos de comunicaciones.

• Permite la convivencia de distintos servicios bajo un mismo sistema.

• Permite un acceso al sistema distribuido de una manera totalmente transparente.

Una de las formas de implementar sistemas distribuidos es través del desarrollo de objetos que residen en servidores y son invocados remotamente desde los clientes. Por esta razón, es importante que sea comprendido el concepto de objeto distribuido.

Definición

El término objeto hace referencia a un modelo de programación que genera unidades de procesamiento que contienen una serie de atributos que identifican el objeto, así como un conjunto de métodos que modelan el comportamiento esperado de este objeto dentro del sistema. Por ejemplo, un objeto que modele una cuenta bancaria, contendrá los atributos característicos de una cuenta, como su número, fecha de apertura, saldo, etc. y así mismo tendrá comportamientos (métodos) que permitirán conocer el saldo de la cuenta, si se encuentra activa o inactiva en el sistema, permitirán crear una nueva cuenta, cancelar una cuenta, etc.

1

(10)

Bajo este contexto un objeto distribuido es aquel que adicionalmente está administrado por un servidor que ofrece determinados servicios a sus clientes a través de métodos de invocación remota. Es decir, métodos que pueden ser invocados desde un cliente en otra máquina. El cliente invoca el método mediante un mensaje al servidor que gestiona el objeto, se ejecuta el método del objeto en el servidor y el resultado se devuelve al cliente en otro mensaje.

Tecnologías orientadas a los objetos distribuidos

Para el desarrollo de objetos distribuidos, básicamente se utilizan tres tecnologías importantes y amplio uso, éstas son:

RMI - Remote Invocation Method: Esta tecnología fue desarrollada por el lenguaje de programación Java, fue el primer framework para crear sistemas distribuidos en este lenguaje. Este método permite, a un objeto que se está ejecutando en una máquina virtual java (VM), llamar a métodos de otro objeto que está en otra VM diferente.

DCOM - Distributed Component Object Model: Esta tecnología está asociada a la plataforma de productos Microsoft. El DCOM hace parte integral de los sistemas operativos WINDOWS de Microsoft y está conformado por un conjunto de conceptos e interfaces de programa que le permiten a los objetos de un programa cliente solicitar servicios de objetos de un programa que reside en un servidor dentro de una red.

CORBA - Common Object Request Broker Architecture: Tecnología introducida por el Grupo de Administración de Objetos OMG (organización con reconocimiento a nivel mundial), creada para establecer una plataforma para la gestión de objetos remotos independientemente del lenguaje de programación.

Componentes

Dentro de los componentes de un sistema distribuido generalmente en aplicaciones de gestión y comerciales se pueden identificar tres componentes a nivel de software: lógica de presentación, lógica de aplicación o de negocio y lógica de gestión de la base de datos.

La lógica de presentación, tiene que ver con los programas que permiten la presentación al usuario de un conjunto de objetos visuales con los que podrá interactuar por dispositivos periféricos de entrada como el mouse y el teclado para que ingrese información y solicite servicios al sistema distribuido. Esta lógica de presentación es capaz de llevar a cabo la validación y procesamiento de estos datos y recibir la respuesta de la lógica de aplicación, formatearla y presentarla de manera visual adecuadamente.

La lógica de aplicación, por otra parte es la responsable del procesamiento de la información que tiene lugar en la aplicación. Está compuesta por algoritmos complejos que han sido diseñados de acuerdo con los requerimientos funcionales para los que fue creado el sistema.

(11)

Dentro de los componentes de un sistema distribuido generalmente en aplicaciones de gestión y comerciales se pueden identificar tres componentes a nivel de software: lógica de presentación, lógica de aplicación o de negocio y lógica de gestión de la base de datos.

La lógica de presentación, tiene que ver con los programas que permiten la presentación al usuario de un conjunto de objetos visuales con los que podrá interactuar por dispositivos periféricos de entrada como el mouse y el teclado para que ingrese información y solicite servicios al sistema distribuido. Esta lógica de presentación es capaz de llevar a cabo la validación y procesamiento de estos datos y recibir la respuesta de la lógica de aplicación, formatearla y presentarla de manera visual adecuadamente.

La lógica de aplicación, por otra parte es la responsable del procesamiento de la información que tiene lugar en la aplicación. Está compuesta por algoritmos complejos que han sido diseñados de acuerdo con los requerimientos funcionales para los que fue creado el sistema.

La lógica de la base de datos esta compuesta por todos los programas que permiten la manipulación de la información así como la misma información almacenada en algún motor de base de datos.

La lógica de la base de datos esta compuesta por todos los programas que permiten la manipulación de la información así como la misma información almacenada en algún motor de base de datos.

Arquitecturas de programación Cliente / Servidor

La articulación de las tres lógicas en un modelo cliente – servidor puede ser realizada de diversas maneras. Dentro de algunas de las más populares, se pueden mencionar.

Arquitectura cliente – servidor de dos capas: En esta arquitectura, en una capa se desarrolla la lógica de presentación y en otra conviven tanto la lógica de negocio como de base de datos. Normalmente esta arquitectura se utiliza en las siguientes situaciones:

• Cuando se requiera poco procesamiento de datos en la organización. • Cuando se tiene una base de datos centralizada en un solo servidor. • Cuando la base de datos es relativamente estática.

• Cuando se requiere un mantenimiento mínimo.

Arquitectura cliente – servidor de tres capas: En este caso se desarrolla una capa por cada lógica. Normalmente esta arquitectura se utiliza en las siguientes situaciones:

• Cuando se requiera mucho procesamiento de datos en la aplicación. • En aplicaciones donde la funcionalidad esté en constante cambio.

• Cuando los procesos no están relativamente muy relacionados con los datos.

• Cuando se requiera aislar la tecnología de la base de datos para que sea fácil de cambiar. •

Cuando se requiera separar el código del cliente para que se facilite el mantenimiento.

Está adecuada para utilizarla con la tecnología orientada a objetos.

(12)

Arquitectura cliente – servidor de n – capas: En este caso se desarrolla una capa por la lógica de presentación, varias capas para la lógica de negocio y otras mas para la lógica de base de datos. Normalmente esta arquitectura se utiliza para la construcción de sistemas complejos orientados a objetos y a Internet.

Las bases de datos distribuidas son una colección de datos construida sobre una red y que pertenecen a un solo sistema distribuido. Para que una base de datos se considere como distribuida debe cumplir con que la información está almacenada físicamente en diferentes sitios de la red y en cada uno de estos sitios sea en sí misma una base de datos.

Cada una de estas bases de datos remotas tienen sus propios usuarios locales, sus propios motores de bases de datos, programas para la administración de transacciones, y su propio administrador local de comunicación de datos.

Estas bases de datos remotas deben disponer de funciones de acceso remoto que junto con la combinación de los respectivos sistemas de administración de base de datos locales se constituyen en el sistema administrador de base de datos distribuida.

Este gestor global permite que diferentes usuarios puedan acceder a los datos desde cualquier punto de la red, como si lo hicieran con los datos de su base de datos local, es decir, para el usuario es completamente transparente la distribución geográfica de los diferentes datos, para él la base de datos es única y parece ser local.

En conclusión, la base de datos distribuida, es como un dispositivo de almacenamiento virtual, cuyas partes se almacenan físicamente en varias bases de datos "reales", distintas, ubicadas en diferentes sitios de la red.

Ejemplo

Considere un banco que tiene veinte oficinas en diferentes ciudades del país. En cada una de éstas hay un servidor que mantiene la base de datos de las cuentas abiertas en dicha oficina, junto con sus respectivos saldos actuales y movimientos generados. En cada una de estas oficinas está configurada una red LAN que permite que las diferentes terminales de los cajeros accedan a los servicios del servidor.

En el caso que un cliente de la oficina desee realizar alguna transacción sobre su cuenta, el sistema podrá atenderlo de manera inmediata y con base en la información registrada en la base de datos local. Pero, que pasa si un cliente desea realizar una transacción a una cuenta de otra oficina, en este caso, empezará a actuar el sistema distribuido de la siguiente manera.

1. A través de la red WAN la aplicación buscará la información de la cuenta en el servidor de la oficina a la que pertenece la cuenta y realizará el proceso respectivo.

(13)

2. El servidor recibirá la información y a través de la LAN interna presentará la información en la respectiva terminal del cajero que inició la transacción.

Imagínese ahora una transferencia de fondo de una cuenta propia de la oficina a otra de una oficina diferente. En este caso la aplicación requerirá información tanto de la base de datos local de la oficina, como de la base de datos remota de la oficina hacia la que se realizará la transferencia.

Esta transacción podría incluso realizarse desde una oficina diferente a las oficinas a las que pertenece las cuentas involucradas. En este caso, el sistema local deberá conectarse a las dos bases de datos remotas para poder realizar la transacción.

Desde el punto de vista tecnológico, aparentemente lo importante es la existencia de algunas transacciones que acceden a la información en más de una oficina. Estas transacciones son llamadas transacciones globales o transacciones distribuidas. En este caso, el concepto de transacción involucra que el conjunto de operaciones debe ser realizado de manera integral, es decir, que si algo falla, todo el proceso debe ser reversado para que se garantice la consistencia de la información tanto en la base de datos local, como en las bases de datos remotas, es decir, o se aplica todo o ser reversa todo. El procesamiento transaccional es una característica necesaria en la mayoría de bases de datos distribuidas.

El ejemplo, más claro de una típica transacción global sería una transferencia de fondos de una oficina a otra. Esta aplicación requiere la actualización de datos en dos diferentes sucursales, el proceso debe asegurarse de la efectiva actualización en ambos sitios o en ninguno. Esta característica aumenta la complejidad de programación de las aplicaciones que manipulan bases de datos distribuidas y exige el desarrollo de procesos de contingencia que respondan a los diferentes eventos fortuitos que se generen a través de la red. Por ejemplo, imagínese que debería realizar la aplicación ante un evento de caída de línea cuando se esté realizando una transacción de transferencia de fondos entre cuentas de oficinas diferentes a la que origina la transacción:

3. Se inicia el proceso distribuido pero el mensaje no alcanza a salir hacia las bases remotas cuando la línea se cayó.

4. Se inicia el proceso distribuido, sale el mensaje de débito hacia una oficina remota y se cae la línea, antes que llegue el mensaje de débito exitoso y antes que salga el mensaje para realizar el crédito en la base de datos de la otra oficina.

5. Se inicia el proceso distribuido, sale el mensaje de débito hacia una oficina remota y llega el mensaje de confirmación de operación exitosa, se cae la línea, antes que salga el mensaje para realizar el crédito en la base de datos de la otra oficina.

6. Se inicia el proceso distribuido, sale el mensaje de débito hacia una oficina remota y llega el mensaje de confirmación de operación exitosa, sale el mensaje de crédito y se cae la línea, antes que llegue el mensaje de crédito exitoso.

Para cada situación, identifique las operaciones de reversión que debería realizar la aplicación para garantizar la transaccionalidad de la transferencia.

(14)

Ventajas

Dentro de las principales ventajas que se tienen de un sistema de bases de datos distribuidas se podrían mencionar las siguientes:

• Descentralización: En un sistema centralizado/distribuido, existe un administrador que controla toda la base de datos. Por el contrario en un sistema distribuido existe un administrador global que lleva una política general y delega algunas funciones a administradores de cada localidad remota para que establezcan políticas locales y así se garantice un trabajo eficiente.

• Se minimiza el costo de comunicación, ya que las transacciones locales no viajan a través de la red WAN. Por esta razón, puede resultar más económico dividir la aplicación y realizarla localmente.

• Es menos costoso el desarrollo de pequeñas aplicaciones que se integran a crear un aplicación de gran escala, que además requeriría un supercomputador.

• Se presenta una mejora de rendimiento, ya que los datos serán almacenados y usados donde son generados, lo cual permitirá distribuir la complejidad del sistema en los diferentes sitios de la red, optimizando así la labor del sistema.

• Se presenta una mejora de fiabilidad y disponibilidad, debido a que la falla de uno o varios lugares o de un enlace de comunicación no implica la inoperatividad total del sistema. Incluso si se tienen datos duplicados puede que exista una disponibilidad total de los servicios.

• Es más fácil la escalabilidad o crecimiento del sistema, ya que es más sencillo agregar nuevos elementos de hardware que incrementen el poder de procesamiento y almacenamiento en la red, al adicionar un nuevo nodo.

• Los sistemas distribuidos, permite acceso local y remoto de forma transparente, de manera que son muy flexibles.

• Por medio de un esquema de replicación de datos, es posible mejorar el desempeño de la aplicación para usuarios concurrentes. Sin embargo, se agrega complejidad al procesos para garantizar la consistencia de las bases de datos replicadas.

• El sistema administrador de base de datos local se encarga de manejar la concurrencia de usuarios de manera eficiente.

Desventajas

• Por otra parte, se podrían mencionar como inconvenientes de las bases de datos distribuidas, los siguientes aspectos:

• Un diseño específico podría sobre cargar un nodo específico de la red, debido a las estrategias utilizadas de concurrencia, de fallos, y de acceso local a los datos. Se puede dar esta situación cuando la carga de trabajo requiere un gran número de actualizaciones

(15)

concurrentes sobre datos duplicados y que deben estar distribuidos. De esta manera que el desempeño real del sistema desmejora.

• La confiabilidad de los sistemas distribuidos depende de varios factores que no son controlables fácilmente, por ejemplo: confiabilidad tanto de computadores como de la red, del sistema de gestión de base de datos distribuida y de las transacciones, así como también de las tazas de error de la carga de trabajo.

• La mayor complejidad, juega en contra de éste tipo de sistemas, pues muchas veces se traduce en altos costos de construcción y mantenimiento de software, debido a la gran cantidad de componentes hardware a integrar y la gran probabilidad de error en el desarrollo de software. Por ejemplo, el desarrollo de rutinas de control de concurrencia y recuperación de fallos, requiere de ingenieros especializados con un costo elevado.

• El procesamiento de bases de datos distribuidas es difícil de controlar, puesto que estos procesos muchas veces se llevan a cabo en las áreas de trabajo de los usuarios, e incluso el acceso físico no es controlado, lo que genera altos riesgos de seguridad en la información.

Las aplicaciones WEB dinámicas, son un caso particular de los sistemas con arquitectura cliente – servidor. En este caso el protocolo de comunicaciones que se utiliza es HTTP y el sistema utiliza un middleware denominado webserver (servidor WEB). Su importancia hoy en día es muy alta, debido a que las organizaciones empiezan a utilizar este canal como ventaja competitiva.

El desarrollo de la lógica de aplicación de un sistema WEB se puede realizar de diversas maneras a través de diferentes tecnologías como CGI, servlets, o lenguajes de programación de páginas dinámicas como ASP, PHP, etc.

Los CGI (Common Gatewave Interface) son programas que se ejecutan en el servidor, pueden servir como interfaz para ejecutar otras aplicaciones desarrolladas en otros lenguajes de programación, para acceder a una base de datos o para generar documentos html de forma automática. Cada petición http ejecuta un proceso, que es analizado por el CGI para procesarlo y generar el resultado, el cual analiza la solicitud y genera el resultado. Estas aplicaciones se caracterizan porque son independientes del sistema operativo, y dado que pueden ser escritos en cualquier lenguaje de programación, es relativamente sencillo convertir programas existentes en CGIs. Los CGI exigen altos requerimientos de máquina en servidor, particularmente de procesamiento y de memoria RAM, dado que cada petición que genere el cliente levanta una instancia particular que debe ser atendida.

Otra tecnología que se está utilizando son programas desarrollados en lenguaje JAVA (de uso extendido dado que no tiene costo de licenciamiento) llamados servlets. Estos programas también residen en el servidor y actúan como medio para acceder a otros programas JAVA que acceden a bases de datos y generan páginas dinámicas HTML a través de programas JAVA denominados JSP. Los servlets presentan un mejor rendimiento porque son capaces de manejar en una misma instancia varios hilos de ejecución.

(16)

Otra tecnología utilizada para el desarrollo de aplicaciones WEB es la implementación de programas que generan páginas WEB dinámicas de acuerdo con las peticiones de los clientes. Existen diversos lenguajes de programación que permiten esta clase de desarrollo como por ejemplo ASP de Microsoft, de JAVA las JSP y otros más como el PHP.

Las ASP (Active Server Pages), JSP (JAVA Server PAGES), PHP, .NET, etc. permiten desarrollar programas que contienen tanto comandos propios del lenguaje, así como código HTML embebido. Estás páginas residen en un servidor WEB, que para el caso de ASP es el IIS (Internet Information Server) o el Apache para las JSP. El servidor WEB recibe la petición HTTP que procede del cliente y ejecuta el respectivo programa. Estos programas inician la construcción de la página HTML de respuesta, pero son capaces de acceder a las bases de datos y ejecutar los diversos algoritmos de acuerdo a su lógica de programación. La página HTML de respuesta únicamente contendrá código HTML, será enviada al servidor WEB, quien a su vez la enviará por HTTP al cliente que inició el proceso a través de Internet.

Estas tecnologías son análogas. Todas son opciones de amplio uso para el desarrollo de aplicaciones orientadas a Internet. Algunas presentan ventajas como costos de licenciamiento como JSP o PHP, frente a las alternativas de Microsoft como ASP o .NET. Particularmente las JSP tienen una ventaja adicional y es que son independientes del sistema operativo y del procesador de la máquina.

PHP se caracteriza por que la programación es más simple y el acceso a las bases de datos también. Su uso es muy extendido debido a esta característica y a la rapidez de implantación, sin embargo, presenta desventajas frente a futuros cambios en los requerimientos. Sin embargo, esta última desventaja realmente se puede presentar con cualquier tecnología si el diseño del software no es adecuado.

Como buenas prácticas de programación de aplicaciones orientadas a Internet, independientemente de la tecnología que se decida utilizar, se pueden mencionar:

• Separar la lógica de la aplicación de la interfaz gráfica de usuario y de la base de datos. Esta arquitectura de software busca que el impacto sea mínimo debido a cambios en los requerimientos visuales o en la base de datos, dado que son frecuentes. Se busca que la inversión en el desarrollo de la aplicación se maximice y se adapte a las nuevas necesidades de la empresa. Por ejemplo, si el software cumple esta característica, una aplicación WEB fácilmente puede ser migrada para que funciones en interfaces de dispositivos inalámbricos, ya que se reemplaza las páginas HTTP por la interfaz adecuada. Piense que una empresa planea cambiar de motor de base de datos, si el software cumple esta característica, será totalmente transparente. Pero si la aplicación mezcla la interfaz gráfica y la manipulación de la base de datos en su lógica, se debe realizar un fuerte y riesgoso proceso de mantenimiento de software.

• Utilizar métodos estándar de comunicación entre la lógica de aplicación y la interfaz gráfica de usuario o la base de datos. Este aspecto, nuevamente, busca orientar la aplicación hacia futuros mantenimientos o cambios a nivel visual o de base de datos. Si el diseño del software contempla formas estándar de comunicación entre estos componentes, la única condición que deberían cumplir los nuevos programas visuales o de manipulación de bases de datos es que respeten el estándar definido, para que el impacto sea mínimo.

(17)

• Buscar utilizar herramientas que permitan una fácil adaptación de las aplicaciones a los nuevos dispositivos que irán apareciendo.

• El proyecto de implantación de una aplicación orientada a Internet en una empresa, debe definir el costo a nivel de comunicaciones que debe asumir la Empresa para que la aplicación pueda funcionar.

• Es necesario contemplar requerimientos específicos, en cuanto a procesos de réplica, periodicidad y de ancho de banda particulares.

• El diseño de software debe garantizar que no se mezclen las lógicas de la interfaz gráfica de usuario, de la aplicación y la base de datos para buscar que el mantenimiento futuro de la aplicación sea mínimo.

• Invertir suficiente tiempo para desarrollar las pruebas utilizando los protocolos de comunicación reales. Es decir, no es suficiente con probar el sistema en un ambiente controlado, sino que se deben realizar las pruebas en los mismos canales sobre los que funcionará el sistema.

Las anteriores sugerencias buscan que se tengan en cuenta aspectos importantes de acuerdo con las tendencias actuales en el desarrollo de estos sistemas WEB debido a la necesidad de extender nuevos canales, tecnologías, bases de datos, integrar sistemas existentes, etc.

Con el desarrollo de las tecnologías inalámbricas se ha abierto la posibilidad de incluir nuevos recursos en los sistemas cliente – servidor, por ejemplo, en un sistema distribuido los cliente ahora podrían acceder a aplicaciones desde sus celulares en lugar de un computador de escrito. Por esta razón, es necesario que conozcamos algunas de las tecnologías que permiten el desarrollo de las conexiones inalámbricas:

GSM (Global System for Mobile communications). Este sistema global es es un estándar para comunicación utilizado en teléfonos móviles que incorporan tecnología digital. Permite utilizar el sistema SMS (servicio de mensajes cortos), para enviar y recibir mensajes de texto que podrían ser tomados por una interface adecuada para interactuar con un sistema distribuido.

GPRS (General Packet Radio Service). Es un sistema de transmisión que también funciona en el entorno de la telefonía móvil. En este sistema cada llamada de voz o cada conexión de datos, ocupa de manera exclusiva un canal mientras dure esa llamada o conexión, por lo tanto, un usuario puede hacer uso de varios canales y un mismo canal puede ser compartido por varios usuarios. Está basado en la conmutación de paquetes y permite la transmisión de datos a alta velocidad para el acceso a Internet, de allí el potencial para acceder a aplicaciones distribuidas.

(18)

UMTS (Universal Mobile Telecommunications System). El Sistema Universal de telecomunicaciones móviles, busca disponer de amplio bando ancha en telefonía móvil y transmitir un volumen alto de datos por la red. Se busca que con esta tecnología de tercera generación sean posibles las videoconferencias, la descarga videos, el intercambio de postales electrónicas, la manipulación de aplicaciones de computación gráfica como paseos 'virtuales' por casas en venta, etc. a través de los dispositivos móviles.

WAP (Wireless Application Protocol). El Protocolo de Aplicaciones Inalámbricas (WAP) es un servicio de mensajes digitales inteligentes para teléfonos celulares y otras terminales móviles para permitir la visualización de contenidos de Internet en un formato de texto adecuado para las interfaces gráficas de los teléfonos móviles con tecnología GSM. WAP se ha convertido en el estándar global para presentar la información de Internet y de los sistemas distribuidos en los terminales inalámbricos. WAP utiliza una aplicación simple de navegador electrónico con estándar WML (similar al HTML) optimizado para terminales móviles inalámbricas. WAP actúa como interfaz para ocultar la complejidad del GSM en el desarrollo de las aplicaciones, así como la WEB lo ha hecho para Internet. Expande una variedad de opciones de transporte y dispositivos, incluyendo SMS, 9.6 kbit/s GSM data y GPRS.

Bluetooth. Es la norma que define un estándar global de comunicación inalámbrica a cortas distancias, que posibilita la transmisión de voz y datos entre diferentes equipos mediante un enlace por radiofrecuencia. Los principales objetivos que se pretende conseguir con esta norma son:

o Facilitar las comunicaciones entre equipos móviles y fijos. o Eliminar cables y conectores entre éstos.

o Ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la sincronización de datos entre nuestros equipos personales.

o La tecnología Bluetooth comprende hardware, software y requerimientos de interoperatividad.

WIFI (Wireless Fidelity). Es la tecnología utilizada en una red o conexión inalámbrica, para la comunicación de datos entre equipos situados dentro de una misma área (interior o exterior) de cobertura. Conceptualmente, no existe ninguna diferencia entre una red con cables (cable coaxial, fibra óptica, etc.) y una inalámbrica. La diferencia está en el medio de trasmisión, que en las redes inalámbricas transmiten y reciben datos a través de ondas electromagnéticas, permitiendo la la eliminación de cables y, por tanto, una total flexibilidad en las comunicaciones y en el alcance de las comunicaciones.

WIMAX (Worldwide Interoperability for Microwave Access). Es el nombre con el que se conoce la norma 802.16a, un estándar inalámbrico aprobado en enero del 2003 en el WiMax Forum, formado por un grupo de 67 compañías, que ofrece un mayor ancho de banda y alcance que la familia de estándares WiFi, compuesta por el 802.11a, 802.11b y 802.11g. Es decir, la diferencia entre estas dos tecnologías inalámbricas son su alcance y ancho de banda. Mientras que WiFi está pensado para oficinas o dar cobertura a zonas relativamente pequeñas, WiMax ofrece tasas de transferencia de 70mbps a distancias de hasta 50 kilómetros de una estación base. Por comparación, la tasa de transferencia de WiFi es de 11mbps y la distancia de hasta 350 metros en zonas abiertas.

(19)

El desarrollo de sistemas distribuidos ha tenido una rápida evolución en la medida que tanto software, como hardware y medios de comunicación han evolucionado. Inicialmente los sistemas comerciales eran construidos con hardware dedicado y entornos centralizados. Sin embargo, empezaron a surgir fuertes necesidades de acceder al sistema desde diferentes puntos y con este desafió también evolucionó el software para incluir características de fiabilidad, seguridad y protección.

Las primeras aplicaciones distribuidas que surgieron fueron los sistemas de reservas de líneas aéreas y las aplicaciones bancarias. Poco a poco su uso se ha extendido todas las empresas, grandes almacenes, centros de educación, etc.

Con el desarrollo de las redes WAN, particularmente de Internet, el desarrollo de software ha evolucionado ampliamente para incluir todos los servicios electrónicos actuales como correo electrónico, servicio de noticias, transferencia de archivos, la World Wide Web, etc. en portales bancarios (e-banking), de comercio electrónico (e-commerce), de educación a distancia (e-learning), etc.

El desarrollo de software ha evolucionado incorporando múltiples medios de presentación de información. Las aplicaciones multimediales han sido incorporadas a los sistemas distribuidos. Con algunas restricciones de desempeño particularmente debido al canal de comunicaciones (la tecnología “ideal” está, pero su uso aun no es generalizado (ancho de banda). La multimedia a enriquecido el desarrollo de sistemas de videoconferencia, televigilancia, juegos multiusuarios y enseñanza asistida por computador.

A este nivel del módulo, se espera que sea evidente la importancia de los sistemas distribuidos actualmente. Es importante evidenciar sus principales ventajas, desventajas y desafíos entorno a esta importante área.

Ventajas

Con respecto a los sistemas centralizados, se podrían mencionar las siguientes ventajas:

• Economía. Es más rentable escalar un sistema, agregando servidores y clientes, que ampliando el software y hardware de un mainframe.

• Posibilidad de explotar las ventajas del trabajo colaborativo. El sistema distribuido permite gestionar eficazmente las diferentes elementos de la organización entorno a los procesos implantados en el sistema.

(20)

• Mayor confiabilidad y tolerancia a fallos. Al estar distribuida la carga de trabajo en diferentes máquinas, la falla de una no afecta a las demás y el sistema distribuido como un todo puede continuar funcionando si su diseño es adecuado.

• Capacidad de crecimiento incremental. Es posible incrementar la potencia de los servidores agregando nuevas características de hardware en la medida de las necesidades del sistema.

• Con respecto a sistemas independientes:

• Se pueden compartir recursos, como aplicaciones y dispositivos periféricos costosos. Por ejemplo impresoras láser, dispositivos de almacenamiento masivo, etc.

• Es posible satisfacer las necesidades de diferentes usuarios a la vez, incrementando la satisfacción de los clientes, por ejemplo los sistemas de reservas de aerolíneas.

• Se logra establecer un esquema de comunicación abierta efectivo entre las personas, por ejemplo con la mezcla de tecnologías (como el email) y procedimientos organizacionales. • Se presenta una mejor distribución de la carga de trabajo entre los diferentes

computadores. Desventajas

El principal problema está relacionado con el diseño, implantación y uso del software distribuido, pues se presentan numerosos inconvenientes como por ejemplo:

• Las múltiples alternativas de integración de sistemas operativos, lenguajes de programación y aplicaciones.

• Los distintos usuarios que debe atender el sistema distribuido, cada uno con necesidades de información específicas que espera que el sistema distribuido le satisfaga.

• Las disyuntivas entre las funciones que debe realizar el sistema y lo que deben hacer los usuarios.

• Las variadas alternativas que pueden definir los especialistas, debido a la diversidad de criterios y de interpretaciones al respecto.

• La complejidad técnica del desarrollo para atender eventos de las redes de comunicación como pérdida de mensajes, saturación en el tráfico, seguridad, etc.

Desafíos

Uno de los principales desafíos es la integración de componentes heterogéneos de hardware y software, por lo que se necesitan ciertos estándares que permitan esta comunicación. Ampliando las necesidades a nivel de middleware.

(21)

La extensibilidad de los sistemas es otro campo de acción, ya que es muy amplia la cantidad de componentes escritos por diferentes programadores que pueden ser integrados en un solo sistema distribuido.

La seguridad es otro frente que incrementa la complejidad del sistema distribuido a desarrollar y que continúa en desarrollo. Dentro de este aspecto se pueden considerar los siguientes puntos:

• Confidencialidad: Protección contra acceso al sistema por parte de individuos no autorizados. • Integridad: Protección contra la alteración o corrupción de la información y de los procesos. • Disponibilidad: Protección contra la interferencia con los procedimientos de acceso a los

recursos.

• Tolerancia y recuperación ante fallos: La posibilidad que tiene el sistema para seguir funcionando ante fallos de algún componente en forma independiente implantando alguna alternativa de solución, como:

• Detección de fallos: Algunos fallos son detectables, con comprobaciones por ejemplo. • Enmascaramiento de fallos: Algunos fallos detectados pueden ocultarse o atenuarse. • Tolerancia de fallos: Sobre todo en Internet se dan muchos fallos y no es conveniente

ocultarlos, es mejor tolerarlos y continuar. Por ejemplo: tiempo de vida de una búsqueda. • Recuperación frente a fallos: Tras un fallo se deberá tener la capacidad de volver a un

estado anterior.

• Redundancia: Se puede usar para tolerar ciertos fallos (DNS, bases de datos, etc.) • Concurrencia: Compartir recursos por parte de los clientes a la vez.

• Escalabilidad: Posibilidad de ampliar funcionalmente el sistema distribuido.

• Transparencia: Es la ocultación al usuario y al programador de aplicaciones de la separación de los componentes en un sistema distribuido, por ejemplo a nivel de:

• Acceso: Se accede a recursos locales y remotos de forma idéntica. • Ubicación: Permite acceder a los recursos sin conocer su ubicación. • Concurrencia: Usar un recurso compartido sin interferencia.

• Replicación: Permite utilizar varios ejemplares de cada recurso. • Tolerancia a fallos: Permite ocultar los fallos.

(22)

• Prestaciones: Permite reconfigurar el sistema para mejorar las prestaciones según su carga.

• Escalado: Permite al sistema y a las aplicaciones expandirse en tamaño sin cambiar la estructura del sistema o los algoritmos de aplicación.

BIBLIOGRAFÍA

1. Computación distribuida. Fundamentos y Aplicaciones. M. L. Pearson Educación, 2004.

2. Transmisión de datos y redes de comunicaciones. B. A. Forouzan. McGraw-Hall. Segunda edición. 2001. 3. Sistemas Operativos Distribuidos. A. S. Tanenbaum. Prentice-Hall, 1995.

4. Sistemas Operativos: una visión aplicada. Jesús Carretero, Félix García, Pedro de Miguel y Fernando McGraw-Hall, 2001.

5. Unix Network Programming, Volume 2 : Interprocess <Communications, 2/e . W. Richard Stevens. Prentice-Hall, 1999.

6. Problemas resueltos de programación en C. F. García, J. Carretero, A. Calderón, J. Fernández, J. M. Pérez.Thomson, 2003. ISBN: 84-9732-102-2. Pp. 320.

Referencias

Documento similar

En este capítulo se realiza el estudio de diferentes sistemas de control, ante la necesidad de cambiar el sistema de control distribuido que se encontraba instalado en la

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de

Sin embargo, esto no era posible en los sistemas de orden total, donde la coordinación de los procesos de un grupo con su router y la coordinación entre los routers de los pares

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación