Académique Documents
Professionnel Documents
Culture Documents
Introduccin
Desafos
Heterogeneidad
Extensibilidad
Seguridad
Escalabilidad
11
Resumen
15
Introduccin
Un sistema distribuido se define como una coleccin de computadores autnomos conectados por una
red, y con el software distribuido adecuado para que el sistema sea visto por los usuarios como una
nica entidad capaz de proporcionar facilidades de computacin. [Colouris 1994]
El desarrollo de los sistemas distribuidos vino de la mano de las redes locales de alta velocidad a
principios de 1970. Ms recientemente, la disponibilidad de computadoras personales de altas
prestaciones, estaciones de trabajo y ordenadores servidores ha resultado en un mayor desplazamiento
hacia los sistemas distribuidos en detrimento de los ordenadores centralizados multiusuario. Esta
tendencia se ha acelerado por el desarrollo de software para sistemas distribuidos, diseado para
soportar el desarrollo de aplicaciones distribuidas. Este software permite a los ordenadores coordinar
sus actividades y compartir los recursos del sistema - hardware, software y datos.
Con los sistemas distribuidos los usuarios pueden saber que hay multiplicidad de estaciones y equipos
en la red pero no necesitan conocerlos explcitamente (ni cuantos, ni cuales), ellos solamente saben que
hay recursos en la red y conocen su nombre e identificador, de igual forma que pueden acceder a ellos
de igual manera que acceden a los recursos locales (por su nombre) sin tener que conectarse
explcitamente a la maquina propietaria para utilizar el recurso, es mas ni siquiera necesita conocer el
nombre de la maquina que alberga el recurso.
Los sistemas distribuidos se implementan en diversas plataformas hardware, desde unas pocas
estaciones de trabajo conectadas por una red de rea local, hasta Internet, una coleccin de redes de
rea local y de rea extensa interconectados, que en lazan millones de ordenadores.
Las aplicaciones de los sistemas distribuidos varan desde la provisin de capacidad de cmputo a
grupos de usuarios, hasta sistemas bancarios, comunicaciones multimedia y abarcan prcticamente
todas las aplicaciones comerciales y tcnicas de los ordenadores. Los requisitos de dichas aplicaciones
incluyen un alto nivel de fiabilidad, seguridad contra interferencias externas y privacidad de la
informacin que el sistema mantiene. Se deben proveer accesos concurrentes a bases de datos por parte
de muchos usuarios, garantizar tiempos de respuesta, proveer puntos de acceso al servicio que estn
distribuidos geogrficamente, potencial para el crecimiento del sistema para acomodar la expansin del
negocio y un marco para la integracin de sistema usados por diferentes compaas y organizaciones de
usuarios.
Caractersticas clave de los sistemas distribuidos
[Colouris 1994] establece que son seis las caractersticas principales responsables de la utilidad de los
sistemas distribuidos. Se trata de comparticin de recursos, apertura (openness), concurrencia,
escalabilidad, tolerancia a fallos y transparencia.
Comparticin de Recursos
El trmino 'recurso' es bastante abstracto, pero es el que mejor caracteriza el abanico de entidades que
pueden compartirse en un sistema distribuido. El abanico se extiende desde componentes hardware
como discos e impresoras hasta elementos software como ficheros, ventanas, bases de datos y otros
objetos de datos.
La idea de comparticin de recursos no es nueva ni aparece en el marco de los sistemas distribuidos.
Los sistemas multiusuario clsicos desde siempre han provisto comparticin de recursos entre sus
usuarios. Sin embargo, los recursos de una computadora multiusuario se comparten de manera natural
entre todos sus usuarios. Por el contrario, los usuarios de estaciones de trabajo monousuario o
computadoras personales dentro de un sistema distribuido no obtienen automticamente los beneficios
de la comparticin de recursos.
Los recursos en un sistema distribuido estn fsicamente encapsulados en una de las computadoras y
slo pueden ser accedidos por otras computadoras mediante las comunicaciones (la red). Para que la
comparticin de recursos sea efectiva, sta debe ser manejada por un programa que ofrezca un interfaz
de comunicacin permitiendo que el recurso sea accedido, manipulado y actualizado de una manera
fiable y consistente. Surge el trmino genrico de gestor de recursos.
Un gestor de recursos es un modulo software que maneja un conjunto de recursos de un tipo en
particular. Cada tipo de recurso requiere algunas polticas y mtodos especficos junto con requisitos
comunes para todos ellos. stos incluyen la provisin de un esquema de nombres para cada clase de
recurso, permitir que los recursos individuales sean accedidos desde cualquier localizacin; la
traslacin de nombre de recurso a direcciones de comunicacin y la coordinacin de los accesos
concurrentes que cambian el estado de los recursos compartidos para mantener la consistencia.
Un sistema distribuido puede verse de manera abstracta como un conjunto de gestores de recursos y un
conjunto de programas que usan los recursos. Los usuarios de los recursos se comunican con los
gestores de los recursos para acceder a los recursos compartidos del sistema. Esta perspectiva nos lleva
a dos modelos de sistemas distribuidos: el modelo cliente-servidor y el modelo basado en objetos.
Apertura (opennesss)
Un sistema informtico es abierto si el sistema puede ser extendido de diversas maneras. Un sistema
puede ser abierto o cerrado con respecto a extensiones hardware (aadir perifricos, memoria o
interfaces de comunicacin, etc...) o con respecto a las extensiones software (aadir caractersticas al
sistema operativo, protocolos de comunicacin y servicios de comparticin de recursos, etc...). La
apertura de los sistemas distribuidos se determina primariamente por el grado hacia el que nuevos
servicios de comparticin de recursos se pueden aadir sin perjudicar ni duplicar a los ya existentes.
Bsicamente los sistemas distribuidos cumplen una serie de caractersticas:
1.
Los interfaces software clave del sistema estn claramente especificados y se ponen a
disposicin de los desarrolladores. En una palabra, los interfaces se hacen pblicos.
2.
Los sistemas distribuidos abiertos se basan en la provisin de un mecanismo uniforme de
comunicacin entre procesos e interfaces publicados para acceder a recursos compartidos.
3.
Los sistemas distribuidos abiertos pueden construirse a partir de hardware y software
heterogneo, posiblemente proveniente de vendedores diferentes. Pero la conformidad de cada
componente con el estndar publicado debe ser cuidadosamente comprobada y certificada si se quiere
evitar tener problemas de integracin.
Concurrencia
Cuando existen varios procesos en una nica maquina decimos que se estn ejecutando
concurrentemente. Si el ordenador esta equipado con un nico procesador central, la concurrencia tiene
lugar entrelazando la ejecucin de los distintos procesos. Si la computadora tiene N procesadores,
entonces se pueden estar ejecutando estrictamente a la vez hasta N procesos.
En los sistemas distribuidos hay muchas maquinas, cada una con uno o mas procesadores centrales. Es
decir, si hay M ordenadores en un sistema distribuido con un procesador central cada una entonces
hasta M procesos estar ejecutndose en paralelo.
En un sistema distribuido que esta basado en el modelo de comparticin de recursos, la posibilidad de
ejecucin paralela ocurre por dos razones:
1.
Muchos usuarios interactuan simultneamente con programas de aplicacin.
2.
Muchos procesos servidores se ejecutan concurrentemente, cada uno respondiendo a diferentes
peticiones de los procesos clientes.
El caso (1) es menos conflictivo, ya que normalmente las aplicaciones de interaccin se ejecutan
aisladamente en la estacin de trabajo del usuario y no entran en conflicto con las aplicaciones
ejecutadas en las estaciones de trabajo de otros usuarios.
El caso (2) surge debido a la existencia de uno o mas procesos servidores para cada tipo de recurso.
Estos procesos se ejecutan en distintas maquinas, de manera que se estn ejecutando en paralelo
diversos servidores, junto con diversos programas de aplicacin. Las peticiones para acceder a los
recursos de un servidor dado pueden ser encoladas en el servidor y ser procesadas secuencialmente o
bien pueden ser procesadas varias concurrentemente por mltiples instancias del proceso gestor de
recursos. Cuando esto ocurre los procesos servidores deben sincronizar sus acciones para asegurarse de
que no existen conflictos. La sincronizacin debe ser cuidadosamente planeada para asegurar que no se
pierden los beneficios de la concurrencia.
Escalabilidad
Los sistemas distribuidos operan de manera efectiva y eficiente a muchas escalas diferentes. La escala
ms pequea consiste en dos estaciones de trabajo y un servidor de ficheros, mientras que un sistema
distribuido construido alrededor de una red de rea local simple podra contener varios cientos de
estaciones de trabajo, varios servidores de ficheros, servidores de impresin y otros servidores de
propsito especfico. A menudo se conectan varias redes de rea local para formar internetworks, y
stas podran contener muchos miles de ordenadores que forman un nico sistema distribuido,
permitiendo que los recursos sean compartidos entre todos ellos.
Tanto el software de sistema como el de aplicacin no deberan cambiar cuando la escala del sistema se
incrementa. La necesidad de escalabilidad no es solo un problema de prestaciones de red o de
hardware, sino que esta ntimamente ligada con todos los aspectos del diseo de los sistemas
distribuidos. El diseo del sistema debe reconocer explcitamente la necesidad de escalabilidad o de lo
contrario aparecern serias limitaciones.
La demanda de escalabilidad en los sistemas distribuidos ha conducido a una filosofa de diseo en que
cualquier recurso simple -hardware o software- puede extenderse para proporcionar servicio a tantos
usuarios como se quiera. Esto es, si la demanda de un recurso crece, debera ser posible extender el
sistema para darla servicio,. Por ejemplo, la frecuencia con la que se accede a los ficheros crece cuando
se incrementa el nmero de usuarios y estaciones de trabajo en un sistema distribuido. Entonces, debe
ser posible aadir ordenadores servidores para evitar el cuello de botella que se producira si un solo
servidor de ficheros tuviera que manejar todas las peticiones de acceso a los ficheros. En este caso el
sistema deber estar diseado de manera que permita trabajar con ficheros replicados en distintos
servidores, con las consideraciones de consistencias que ello conlleva.
Cuando el tamao y complejidad de las redes de ordenadores crece, es un objetivo primordial disear
software de sistema distribuido que seguir siendo eficiente y til con esas nuevas configuraciones de
la red. Resumiendo, el trabajo necesario para procesar una peticin simple para acceder a un recurso
compartido debera ser prcticamente independiente del tamao de la red. Las tcnicas necesarias para
conseguir estos objetivos incluyen el uso de datos replicados, la tcnica asociada de caching, y el uso
de mltiples servidores para manejar ciertas tareas, aprovechando la concurrencia para permitir una
mayor productividad. Una explicacin completa de estas tcnicas puede encontrarse en [Colouris
1994].
Tolerancia a Fallos
Los sistemas informticos a veces fallan. Cuando se producen fallos en el software o en el hardware,
los programas podran producir resultados incorrectos o podran pararse antes de terminar la
computacin que estaban realizando. El diseo de sistemas tolerantes a fallos se basa en dos cuestiones,
complementarias entre s: Redundancia hardware (uso de componentes redundantes) y recuperacin del
software (diseo de programas que sean capaces de recuperarse de los fallos).
En los sistemas distribuidos la redundancia puede plantearse en un grano mas fino que el hardware,
pueden replicarse los servidores individuales que son esenciales para la operacin continuada de
aplicaciones crticas.
La recuperacin del software tiene relacin con el diseo de software que sea capaz de recuperar (rollback) el estado de los datos permanentes antes de que se produjera el fallo.
Los sistemas distribuidos tambin proveen un alto grado de disponibilidad en la vertiente de fallos
hardware. La disponibilidad de un sistema es una medida de la proporcin de tiempo que esta
disponible para su uso. Un fallo simple en una maquina multiusuario resulta en la no disponibilidad del
sistema para todos los usuarios. Cuando uno de los componentes de un sistema distribuidos falla, solo
se ve afectado el trabajo que estaba realizando el componente averiado. Un usuario podra desplazarse
a otra estacin de trabajo; un proceso servidor podra ejecutarse en otra maquina.
Transparencia
La transparencia se define como la ocultacin al usuario y al programador de aplicaciones de la
separacin de los componentes de un sistema distribuido, de manera que el sistema se percibe como un
todo, en vez de una coleccin de componentes independientes. La transparencia ejerce una gran
influencia en el diseo del software de sistema.
El manual de referencia RM-ODP [ISO 1996a] identifica ocho formas de transparencia. Estas proveen
un resumen til de la motivacin y metas de los sistemas distribuidos. Las transparencias definidas son:
Transparencia de Fallos: Permite a los usuarios y programas de aplicacin completar sus tareas
a pesar de la ocurrencia de fallos en el hardware o en el software.
Transparencia de Prestaciones. Permite que el sistema sea reconfigurado para mejorar las
prestaciones mientras la carga varia.
Transparencia de Escalado: Permite la expansin del sistema y de las aplicaciones sin cambiar
la estructura del sistema o los algoritmos de la aplicacin.
Las dos ms importantes son las transparencias de acceso y de localizacin; su presencia o ausencia
afecta fuertemente a la utilizacin de los recursos distribuidos. A menudo se las denomina a ambas
transparencias de red. La transparencia de red provee un grado similar de anonimato en los recursos al
que se encuentra en los sistemas centralizados.
Ejemplos fundamentales de sistemas distribuidos
La motivacin para construir y utilizar sistemas distribuidos tiene su origen en un deseo de compartir
recursos. El trmino recurso es un poco abstracto, pero caracteriza bien el rango de cosas que pueden
ser compartidas de forma til en un sistema de computadores conectados en red. ste se extiende desde
los componentes hardware como los discos y las impresoras hasta las entidades de software definidas
como ficheros, bases de datos y objetos de datos de todos los tipos. Incluye la secuencia de imgenes
que sale de una cmara de vdeo digital y la conexin de audio que representa una llamada de telfono
mvil.
Nuestros ejemplos estn basados en redes de computadores conocidos y utilizados ampliamente:
Internet, intranets y la tecnologa emergente basada en dispositivos mviles. Se han elegido para
proporcionar ejemplos del amplio rango de servicios y aplicaciones que son soportados por redes de
computadores y para comenzar la discusin de las cuestiones tcnicas que entraa su implementacin.
Internet
Los servicios de ficheros son necesarios para permitir a los usuarios compartir datos,
Los cortafuegos tienden a impedir el acceso legtimo a servicios, cuando se precisa compartir
recursos entre usuarios externos e internos, los cortafuegos deben ser complementados con el
uso de mecanismos de seguridad ms refinados.
El coste de instalacin y mantenimiento del software es una cuestin importante. Estos costes
pueden ser reducidos utilizando arquitecturas de sistema como redes de computadores y clientes
ligeros.
Computadores porttiles.
Dispositivos de mano (handheld), entre los que se incluyen asistentes digitales
personales(PDA), telfonos mviles, buscapersonas y videocmaras o cmaras digitales.
Dispositivos que se pueden llevar puestos, como relojes inteligentes con funcionalidad
semejantea la de los PDAs.
Dispositivos insertados en aparatos, como lavadoras, sistemas de alta fidelidad, automviles y
frigorficos.
La facilidad de transporte de muchos de estos dispositivos, junto con su capacidad para conectarse
adecuadamente a redes en diferentes lugares, hace posible la computacin mvil. Se llama
computacin mvil (tambin llamada computacin nmada [Kleinrock 1997) a la realizacin de tareas
de cmputo mientras el usuario est en movimiento o visitando otros lugares distintos de su entorno
habitual. En la computacin mvil, los usuarios que estn fuera de su hogar intranet (la intranet de su
trabajo o su casa) disponen de la posibilidad de acceder a los recursos mediante los dispositivos que
llevan con ellos. Pueden continuar accediendo a Internet; pueden acceder a los recursos de su intranet;
y se est incrementando la posibilidad de que utilicen recursos, como impresoras, que estn
suficientemente prximos a donde se encuentren. Esto ltimo se conoce como computacin
independiente de posicin.
entre ellos comparte recursos como documentos en un grupo pequeo y cerrado. El patrn de compartir
y la distribucin geogrfica de los usuarios particulares determinan qu mecanismos debe proporcionar
el sistema para coordinar sus acciones.
Utilizamos el trmino servicio para una parte diferente de un sistema de computadores que gestiona
una coleccin de recursos relacionados y presenta su funcionalidad a los usuarios y aplicaciones. Por
ejemplo, accedemos a ficheros compartidos mediante el servicio de ficheros, enviamos documentos a
las impresoras a travs del servicio de impresin, compramos regalos a travs de un servicio de pago
electrnico. El nico acceso que tenemos al servicio es mediante un conjunto de operaciones que l
ofrece. Por ejemplo, un servicio de ficheros proporciona las operaciones de lectura, escritura y borrado
en los ficheros. El hecho de que los servicios limiten el acceso a los recursos a un conjunto bien
definido de operaciones es una prctica habitual en la ingeniera de software. Pero tambin refleja la
organizacin fsica de los sistemas distribuidos. Los recursos en un sistema distribuido estn
encapsulados fsicamente con los computadores y slo pueden ser accedidos desde otros computadores
a travs de comunicacin. Para que se compartan de forma efectiva, cada recurso debe ser gestionado
por un programa que ofrece una interfaz de comunicacin permitiendo que se acceda y actualice el
recurso de forma fiable y consistente. El trmino servidor es probablemente familiar para la mayora de
los lectores. Se refiere a un programa en ejecucin (un proceso) en un computador en red que acepta
peticiones de programas que se estn ejecutando en otros computadores para realizar un servicio y
responder adecuadamente.
Los procesos solicitantes son llamados clientes. Las peticiones se envan a travs de mensajes desde los
clientes al servidor y las contestaciones se envan mediante mensajes desde el servidor a los clientes.
Cuando un cliente enva una peticin para que se realice una operacin, decimos que el cliente invoca
una operacin del servidor. Se llama invocacin remota a una interaccin completa entre un cliente y
un servidor, desde el instante en el que el cliente enva su peticin hasta que recibe la respuesta del
servidor. El mismo proceso puede ser tanto un cliente como un servidor, puesto que los servidores a
veces invocan operaciones en otros servidores. Los trminos cliente y servidor se aplican a los roles
desempeados en una nica solicitud. Ambos son distintos, en muchos aspectos, los clientes son
activos y los servidores pasivos, los servidores se estn ejecutando continuamente, mientras que los
clientes slo lo hacen el tiempo que duran las aplicaciones de las que forman parte.
Hay que sealar que por defecto los trminos cliente y servidor se refieren a procesos no a los
computadores en las que se ejecutan, aunque en lenguaje coloquial dichos trminos se refieren tambin
a los propios computadores, es que en un sistema distribuido escrito en un lenguaje orientado a objetos,
los recursos pueden ser encapsulados como objetos y accedidos por objeto clientes, en cuyo caso
hablaremos de un objeto cliente que invoca un mtodo en un objeto servidor. Muchos sistemas
distribuidos, aunque no todos, pueden ser construidos completamente en forma de clientes y servidores
que interaccionan. El World Wide Web, el correo electrnico y las impresoras en red concuerdan con
esta modelo. Un navegador (browser) es un ejemplo de cliente. El navegador se comunica con el
servidor Web para solicitarle pginas.
World Wide Web (WWW) popularmente la web
El World Wide Web, [Berners-Lee 1991] es un sistema en evolucin para publicar y acceder a recursos
y servicios a travs de Internet. Utilizando el software de un navegador Web, fcilmente disponible
como Mozilla Firefox, Opera o Internet Explorer, los usuarios utilizan la Web para recuperar y ver
documentos de muchas clases, para escuchar secuencias de audio y ver secuencias de vdeo, y para
interaccionar con un conjunto ilimitado de servicios.
Una caracterstica fundamental del Web es que proporciona una estructura hipertexto entre los
documentos que almacena, reflejando los requisitos de los usuarios para organizar su conocimiento.
Esto significa que los documentos tienen enlaces, referencias a otros documentos y recursos, tambin
almacenados en la red.
Es fundamental para la experiencia del usuario en el Web que cuando encuentra una imagen
determinada o una parte de texto en un documento, esto estar acompaado de enlaces a documentos
relacionados y otros recursos. La estructura de los enlaces puede ser arbitrariamente compleja y el
conjunto de recursos que puede ser aadido es ilimitado, la telaraa (Web) de enlaces est por
consiguiente repartida por todo el mundo (World-Wide). Bush [1945] concibi las estructuras hipertextuales hace 50 aos; el desarrollo de Internet fue lo que propici la manifestacin de esta idea en una
escala mundial.
El Web es un sistema abierto: puede ser ampliado e implementado en nuevas formas sin modificar su
funcionalidad existente (vase la Seccin 1.4.2). Primero, su operacin est basada en estndares de
comunicacin y en documentos estndar que estn publicados libremente e implementados
ampliamente. Por ejemplo, existen muchos tipos de navegador, cada uno de ellos implementados en
muchos casos sobre diferentes plataformas; y existen muchas implementaciones de servidores Web.
Cualquier navegador conforme puede recuperar recursos de cualquier servidor conforme. Por lo tanto
los usuarios pueden tener acceso a los navegadores en la mayora de los dispositivos que utilizan, desde
un PDA a computadores porttiles.
El Web es abierto respecto a los tipos de recursos que pueden ser publicados y compartidos en l. En su
forma ms simple, un recurso es una pgina Web o algn otro tipo de contenido que puede ser
almacenado en un fichero y presentado al usuario, como ficheros de programa, de imgenes, de sonido
y documentos en formato PostScript o PDF. S alguien inventa, por ejemplo, un nuevo formato de
almacenamiento de imgenes, las imgenes en dicho formato pueden ser publicadas inmediatamente en
el Web. Los usuarios necesitan un medio de ver imgenes en este nuevo formato, pero los navegadores
estn diseados para acomodar la nueva funcionalidad de presentacin en forma de aplicaciones
colaboradoras y conectores (plugins).
El Web se ha desarrollado ms all de estos recursos de datos sencillos para abarcar servicios como la
compra electrnica de regalos. Ha evolucionado sin cambiar su arquitectura bsica. Tambin el Web
est basado en tres componentes tecnolgicos de carcter estndar bsicos:
Una arquitectura de sistema cliente-servidor, con reglas estndar para interaccin (el protocolo
de transferencia hipertexto-HTTP, HyperText Transfer Protocol) mediante la cual los navegadores y
otros clientes obtienen documentos y otros recursos de los servidores Web.
Una caracterstica importante es que los usuarios puedan localizar y gestionar sus propios servidores
Web en cualquier parte de Internet.
Desafos
Aunque se encuentran sistemas distribuidos por todas partes, su diseo es an bastante simple y quedan
todava grandes posibilidades de desarrollar servicios y aplicaciones ms ambiciosas. Muchos de los
desafos que se discuten en esta seccin estn ya resueltos, pero los futuros diseadores necesitan estar
al tanto y tener cuidado de considerarlas.
Heterogeneidad
Internet permite que los usuarios accedan a servicios y ejecuten aplicaciones sobre un conjunto
heterogneo de redes y computadores. Esta heterogeneidad (es decir, variedad y diferencia) se aplica a
todos los siguientes elementos:
Redes.
Hardware de computadores.
Sistemas operativos.
Lenguajes de programacin.
Implementaciones de diferentes desarrolladores.
A pesar de que Internet consta de muchos tipos de redes diferentes, sus diferencias se encuentran
enmascaradas dado que todos los computadores conectados a ste utilizan los protocolos de Internet
para comunicarse una con otra. Por ejemplo, un computador conectado a Ethernet tiene una
implementacin de los protocolos de Internet sobre Ethernet, as un computador en un tipo de red
diferente necesitar una implementacin de los protocolos de Internet para esa red.
Los tipos de datos, como los enteros, pueden representarse de diferente forma en diferentes clases de
hardware por ejemplo, hay dos alternativas para ordenar los bytes en el caso de los enteros. Hay que
tratar con estas diferencias de representacin si se va a intercambiar mensajes entre programas que se
ejecutan en diferente hardware. Aunque los sistemas operativos de todas los computadores de Internet
necesitan incluir una implementacin de los protocolos de Internet, no todas presentan necesariamente
la misma interfaz de programacin para estos protocolos. Por ejemplo, las llamadas para intercambiar
mensajes en UNIX son diferentes de las llamadas en Windows NT. Lenguajes de programacin
diferentes emplean representaciones diferentes para caracteres y estructuras de datos como cadenas de
caracteres y registros. Hay que tener en cuenta estas diferencias si queremos que los programas escritos
en diferentes lenguajes de programacin sean capaces de comunicarse entre ellos. Los programas
escritos por diferentes programadores no podrn comunicarse entre s a menos que utilicen estndares
comunes, por ejemplo para la comunicacin en red y la representacin de datos elementales y
estructuras de datos en mensajes. Para que esto ocurra es necesario concertar y adoptar estndares
(como as lo son los protocolos de Internet).
Middleware. El trmino middleware se aplica al estrato software que provee una abstraccin de
programacin, as como un enmascaramiento de la heterogeneidad subyacente de las redes, hardware,
sistemas operativos y lenguajes de programacin. CORBA, es un ejemplo de ello. Algn middleware,
como Java RMI slo se soporta en un nico lenguaje de programacin. La mayora de middleware se
implementa sobre protocolos de Internet, enmascarando stos la diversidad de redes existentes. Aun as
cualquier middleware trata con las diferencias de sistema operativo y hardware.
Adems de soslayar los problemas de heterogeneidad, el middleware proporciona un modelo
computacional uniforme al alcance de los programadores de servidores y aplicaciones distribuidas. Los
posibles modelos incluyen invocacin sobre objetos remotos, notificacin de eventos remotos, acceso
remoto mediante SQL y procesamiento distribuido de transacciones. Por ejemplo, CORBA proporciona
invocacin sobre objetos remotos, lo que permite que un objeto en un programa en ejecucin en un
Heterogeneidad y cdigo mvil. El trmino cdigo mvil se emplea para referirse al cdigo
que puede ser enviado desde un computador a otro y ejecutarse en ste, por eso los applets de Java son
un ejemplo de ello. Dado que el conjunto de instrucciones de un computador depende del hardware, el
cdigo de nivel de mquina adecuado para correr en un tipo de computador no es adecuado para
ejecutarse en otro tipo. Por ejemplo, los usuarios de PC envan a veces archivos ejecutables agregados a
los correos electrnicos para ser ejecutados por el destinatario, pero el receptor bien pudiera no ser
capaz de ejecutarlo, por ejemplo, sobre un Macintosh o un computador con Linux.
La aproximacin de mquina virtual provee un modo de crear cdigo ejecutable sobre cualquier
hardware: el compilador de un lenguaje concreto generar cdigo para una mquina virtual en lugar de
cdigo apropiado para un hardware particular, por ejemplo el compilador Java produce cdigo para la
mquina virtual Java, la cual slo necesita ser implementada una vez para cada tipo de mquina con el
fin de poder lanzar programas Java. Sin embargo, la solucin Java no se puede aplicar de modo general
a otros lenguajes.
Extensibilidad
La extensibilidad de un sistema de cmputo es la caracterstica que determina si el sistema puede ser
extendido y reimplementado en diversos aspectos. La extensibilidad de los sistemas distribuidos se
determina en primer lugar por el grado en el cual se pueden aadir nuevos servicios de comparticin de
recursos y ponerlos a disposicin para el uso por una variedad de programas cliente.
No es posible obtener extensibilidad a menos que la especificacin y la documentacin de las interfaces
software clave de los componentes de un sistema estn disponibles para los desarrollado-res de
software. Es decir, que las interfaces clave estn publicadas. Este procedimiento es similar a una
estandarizacin de las interfaces, aunque a menudo puentea los procedimientos oficiales de
estandarizacin, que por lo dems suelen ser lentos y complicados. Sin embargo, la publicacin de
interfaces slo es el punto de arranque de la adicin y extensin de servicios en un sistema distribuido.
El desafo para los diseadores es hacer frente a la complejidad de los sistemas distribuidos que constan
de muchos componentes diseados por personas diferentes.
Los diseadores de los protocolos de Internet presentaron una serie de documentos denominados
Solicitudes de Comentarios (Request For Comments), o RFC, cada una de las cuales se conoce por
un nmero.
Las especificaciones de los protocolos de Internet fueron publicados en esta serie a principios de los
aos ochenta, seguido por especificaciones de aplicaciones que corrieran sobre ellos, tales como
transferencia de archivos, correo electrnico y telnet a mediados de los aos ochenta. Esta prctica
contina y forma la base de la documentacin tcnica sobre Internet. Esta serie incluye discusiones as
como especificaciones de protocolos. As la publicacin de los protocolos originales de comunicacin
de Internet ha posibilitado que se construyera una enorme variedad de sistemas y aplicaciones sobre
Internet.
Otro beneficio ms, citado a menudo, de los sistemas abiertos es su independencia de proveedores
concretos.
En resumen:
Los sistemas distribuidos abiertos pueden construirse con hardware y software heterogneo,
posiblemente de diferentes proveedores. Sin embargo, la conformidad con el estndar publicado de
cada componente debe contrastarse y verificarse cuidadosamente si se desea que el sistema trabaje
correctamente.
Seguridad
Entre los recursos de informacin que se ofrecen y se mantienen en los sistemas distribuidos, muchos
tienen un alto valor intrnseco para sus usuarios. Por esto su seguridad es de considerable importancia.
La seguridad de los recursos de informacin tiene tres componentes:
confidencialidad (proteccin contra el descubrimiento por individuos no autorizados);
integridad (proteccin contra la alteracin o corrupcin)
disponibilidad (proteccin contra interferencia con los procedimientos de acceso a los recursos).
A pesar de que Internet permite a un programa de un computador comunicarse con un programa en otro
computador sin mencionar su ubicacin, el permitir un acceso libre a todos los recursos de una intranet
lleva asociados riesgos contra la seguridad. Aunque se pueda emplear un cortafuego para disponer una
barrera alrededor de una intranet, restringiendo el trfico que pudiera entrar y salir, no pretende
asegurar el uso apropiado de los recursos por usuarios del interior de la intranet, o del uso apropiado de
los recursos en Internet, no protegidos por el cortafuego.
En un sistema distribuido, los clientes envan peticiones de acceso a datos administrados por
servidores, lo que trae consigo enviar informacin en los mensajes por la red. Por ejemplo:
1. Un mdico puede solicitar acceso a los datos hospitalarios de un paciente o enviar
modificaciones sobre ellos.
2. En comercio electrnico y banca, los usuarios envan su nmero de tarjeta de crdito a travs de
Internet.
En ambos casos, el reto se encuentra en enviar informacin sensible en un mensaje, por la red, de
forma segura. Pero la seguridad no slo es cuestin de ocultar los contenidos de los mensajes, tambin
consiste en conocer con certeza la identidad del usuario u otro agente en nombre del cual se enva el
mensaje. En el primer ejemplo, el servidor necesita conocer que el usuario es realmente un mdico y en
el segundo, el usuario necesita estar seguro de la identidad de la tienda o del banco con el que est
tratando. El segundo reto consiste en identificar un usuario remoto u otro agente correctamente. Ambos
desafos pueden lograrse a travs de tcnicas de encriptacin desarrolladas al efecto.
Sin embargo, an existen dos desafos de seguridad que no han sido cumplimentados completamente:
Ataques de denegacin de servicio: otro problema de seguridad ocurre cuando un usuario desea
obstaculizar un servicio por alguna razn. Esto se obtiene al bombardear el servicio con un
nmero suficiente de peticiones intiles de modo que los usuarios serios sean incapaces de
utilizarlo.
Seguridad del cdigo mvil: el cdigo mvil necesita ser tratado con cuidado.
Suponga que alguien recibe un programa ejecutable adherido a un correo electrnico: los posibles
efectos al ejecutar el programa son impredecibles; por ejemplo, pudiera parecer que presentan un
interesante dibujo en la pantalla cuando en realidad estn interesados en el acceso a los recursos
locales, o quizs pueda ser parte de un ataque de denegacin de servicio.
Escalabilidad
Los sistemas distribuidos operan efectiva y eficientemente en muchas escalas diferentes, desde
pequeas intranets a Internet. Se dice que un sistema es escalable si conserva su efectividad cuando
ocurre un incremento significativo en el numero de recursos y el numero de usuarios.
Internet proporciona un ejemplo de sistema distribuido en el que el nmero de computadores y
servicios experimenta un dramtico incremento.
El diseo de los sistemas distribuidos escalables presenta los siguientes retos:
Control del coste de los recursos fsicos: segn crece la demanda de un recurso, debiera ser
posible extender el sistema, a un coste razonable, para satisfacerla. Por ejemplo, la frecuencia con la
que se accede a los archivos de una intranet suele crecer con el incremento del nmero de usuarios y
computadores. Debe ser posible aadir servidores para evitar el embotellamiento que aparece cuando
un solo servidor de archivos ha de manejar todas las peticiones de acceso a stos. En general, para que
un sistema con n usuarios fuera escalable, la cantidad de recursos fsicos necesarios para soportarlo
debiera ser como mximo O(), es decir proporcional a n. Por ejemplo, si un solo servidor de archivos
pudiera soportar 20 usuarios, entonces 2 servidores del mismo tipo tendrn capacidad para 40 usuarios.
Aunque parezca una meta obvia, no es tan fcil lograrlo en la prctica,
adaptacin a un cambio cuando se hace necesario; las direcciones Internet grandes ocupan espacio
extra en los mensajes, y en la memoria de los computadores.