Está en la página 1de 32

CURSO

SISTEMAS
DISTRIBUIDOS

Sistemas Distribuidos

Ing. Einar TURPO AROQUIPA

1. Introduccin:
1.1. Fundamentos:
Qu es un Sistema Distribuido?
Antes de definir lo que es un Sistema Distribuido, vamos a definir un trmino ms
general: La Computacin Distribuida, podemos definirla de muchas maneras, este
trmino se utiliza indiscriminadamente para referirse a cualquier sistema en el que
mltiples agentes autnomos, cada uno con capacidades de cmputo individual,
se comunican entre s y afectan mutuamente su comportamiento. Los agentes,
usualmente llamados procesadores, procesos o nodos, pueden ser desde
computadoras completas hasta autmatas celulares con capacidad de cmputo y
memoria muy limitados que se pueden comunicar mediante mensajes.
La Computacin Distribuida hace referencia a cualquier evento en el cual se
maneja un sistema en una red de computadoras y trata de describir las tendencias
hacia la funcionalidad distribuida: sistemas distribuidos, procesamiento
distribuido, bases de datos distribuidas y cualquier otro trmino computacional
que sea distribuido. Podemos decir entonces, que la Computacin Distribuida se
refiere a los servicios que provee un Sistema de Computacin Distribuido.
Una de las primeras caracterizaciones de un Sistema Distribuido fue realizada por
Enslow, ya en 1978, que le atribuye las siguientes propiedades:
o Est compuesto por varios recursos informticos de propsito general, tanto
fsicos como lgicos, que pueden asignarse dinmicamente a tareas
concretas.
o Estos recursos estn distribuidos fsicamente, y funcionan gracias a una red
de comunicaciones.
o Hay un sistema operativo de alto nivel, que unifica e integra el control de los
componentes.
o El hecho de la distribucin es transparente, permitiendo que los servicios
puedan ser solicitados especificando simplemente su nombre (no su
localizacin).
o El funcionamiento de los recursos fsicos y lgicos est caracterizado por
una autonoma coordinada.
A pesar del tiempo transcurrido, esta definicin sigue siendo, en esencia, vlida.
As, para Coulouris un sistema distribuido es aqul que est compuesto por varias
computadoras autnomas conectadas mediante una red de comunicaciones y
equipadas con programas que les permitan coordinar sus actividades y compartir
recursos. Bal ofrece una definicin muy similar: ``Un sistema de computacin
distribuida est compuesto por varios procesadores autnomos que no
comparten memoria principal, pero cooperan mediante el paso de mensajes sobre
una red de comunicaciones''. Y segn Schroeder, todo sistema distribuido tiene
tres caractersticas bsicas:

Sistemas Distribuidos

Ing. Einar TURPO AROQUIPA

o Existencia de varias computadoras. En general, cada una con su propio


procesador, memoria local, subsistema de entrada/salida y quizs incluso
memoria persistente.
o Interconexin. Existen vas que permiten la comunicacin entre las
computadoras, a travs de las cuales pueden transmitir informacin.
o Estado compartido. Las computadoras cooperan para mantener algn tipo
de estado compartido. El funcionamiento correcto del sistema se describirse
como el mantenimiento de una serie de invariantes globales que requiere la
coordinacin de varias computadoras.
Como lo hemos observado, el trmino de Computacin Distribuida se define de
varias maneras y lo mismo se aplica al trmino de Sistema Distribuido, as que en
lugar de seguir dando ms definiciones de estos trminos, nos concentraremos en
el anlisis de las caractersticas ms importantes de los Sistemas Distribuidos, de
esta manera podremos construir una definicin propia de lo que es un Sistema
Distribuido al finalizar este captulo.
Una caracterstica muy importante es que las diferencias entre las computadoras y
las maneras en que estas se comunican no son transparentes para el usuario final,
esto mismo aplica para la organizacin interna del sistema distribuido. Otra
caracterstica importante es que los usuarios y las aplicaciones pueden interactuar
con un Sistema Distribuido de manera consistente y uniforme, sin importar donde
y cuando se lleve a cabo la interaccin.
Todo Sistema Distribuido bebe tambin ser relativamente fcil poder expandir, lo
cual se logra al tener computadoras independientes, pero al mismo tiempo
esconder las funciones de dichas computadoras en el sistema. Normalmente un
sistema distribuido debe de estar siempre disponible a pesar de que ciertas partes
que lo conforman puedan no estar funcionando. Los usuarios y las aplicaciones
no deben de notar en ningn momento que estas partes estn siendo
reemplazadas o reparadas, o que se han agregado nuevas partes al sistema para
poder dar servicio a ms usuarios o aplicaciones.
Caractersticas de un Sistema Distribuidos:
Cualquier diseador de sistemas debe tener los conocimientos necesarios para
enfrentarse a todas las complicaciones que pueden surgir al momento de
considerar los requerimientos para el desarrollo de un sistema distribuido. A
continuacin explicaremos cada una de las caractersticas de los Sistemas
Distribuidos, segn Coulouris son estas caractersticas, los desafos que presentan
los sistemas distribuidos.
a) Heterogeneidad:
Al hablar de heterogeneidad nos referimos a la variedad y diferencia que
podemos encontrar en los elementos que componen una red de computadoras
sobre la que se ejecuta un sistema distribuido, dicha heterogeneidad no slo
se aplica a las redes y al hardware de las computadoras, sino tambin a los

Sistemas Distribuidos

Ing. Einar TURPO AROQUIPA

sistemas operativos, los lenguajes de programacin y las implementaciones en


las que trabajan los diferentes desarrolladores.
Un ejemplo de esto lo podemos ver muy claro en Internet, ya que es una red
que esta conformada por muchos tipos de redes (Figura 1) cuyas diferencias
se encuentran enmascaradas, puesto que todas las computadoras que se
conectan a este utilizan los protocolos de Internet para comunicarse una con
otra, as una computadora conectada a una red Ethernet puede comunicarse
con otra computadora conectada a una red TokenRing, basta con que se haga
una implementacin de los protocolos de Internet para cada una de esas
redes.

Figura 1. Un esquema clsico de la conexin a Internet

Otro ejemplo lo podemos ver en los lenguajes de programacin y en las


aplicaciones escritas por diferentes programadores; en el caso de los
lenguajes de programacin es importante tener en cuenta las diferencias que
puede haber en la representacin de los caracteres y estructuras de datos
como cadenas de caracteres y registros, las cuales pueden variar y pueden
ocasionar conflictos entre programas que necesitan comunicarse entre ellos.
De igual manera dos programas que son desarrollados por programadores
diferentes tienen que utilizar estndares comunes para la comunicacin en red
y para la representacin de los datos elementales y las estructuras de datos en
los mensajes, ya que si no se cuenta con dichas similitudes, los programas no
podrn comunicarse entre s aunque se hayan desarrollado en el mismo
lenguaje de programacin.
Un trmino que no podemos dejar de mencionar al hablar de heterogeneidad
es el de Middleware (Figura 2); este trmino se aplica a la capa de 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; adems, el Middleware proporciona un modelo
computacional uniforme al alcance de programadores de servidores y

Sistemas Distribuidos

Ing. Einar TURPO AROQUIPA

aplicaciones distribuidas que permite la invocacin sobre objetos remotos,


notificacin de eventos remotos, acceso a bases de datos remotas y
procesamiento distribuido de transacciones. Algunos ejemplos de Middleware
son CORBA y Java RMI.

Figura 2. Un sistema distribuido organizado como Middleware

Otro trmino importante para este apartado es el de cdigo mvil, que se


emplea para referirse al cdigo que pude ser enviado de una computadora a
otra para que esta ltima la ejecute, un ejemplo de un cdigo mvil son los
applets de java, que son enviados del servidor a la computadora del cliente
para que este los ejecute en su explorador de Internet. Al implementar un
cdigo de este tipo podemos encontrarnos con el problema de que el conjunto
de instrucciones (a nivel mquina) de una computadora puede no ser el
apropiado para otra mquina, por ejemplo, un usuario de una PC puede enviar
un archivo ejecutable a un usuario de Linux y este ltimo no ser capaz de
ejecutar dicho archivo. Para solucionar este problema se han creado lo que se
conocen como mquinas virtuales, las cuales proveen un modo de crear
cdigo ejecutable sobre cualquier hardware, ya que el compilador de un
lenguaje concreto generar un cdigo para una mquina virtual y esta se
encargar de traducir dicho cdigo al apropiado para un hardware particular,
as, un compilador de Java producir un cdigo para la mquina virtual de
Java, y esta ltima slo necesitar ser implementada una sola vez para cada
mquina en la que se va a ejecutar.
b) Extensibilidad y Apertura:
La extensibilidad y la apertura son dos caractersticas de un sistema
distribuido que estn ampliamente ligadas la una con la otra. Algunos autores
dicen que un sistema abierto debe de ser extensible y otros sostienen que un
sistema extensible puede ser etiquetado como un sistema abierto. De cualquier
manera lo que es importante saber y tener en cuenta es que un sistema
distribuido debe de contar con ambas caractersticas.
Un sistema distribuido abierto es un sistema que ofrece servicios
desarrollados de acuerdo a reglas estandarizadas que describen la sintaxis y la
semntica de dichos servicios. Por ejemplo, en una red de computadoras,
estas reglas son las que regulan el formato, contenido y significado de los
mensajes que se envan y se reciben a travs de dicha red. Estas reglas son

Sistemas Distribuidos

Ing. Einar TURPO AROQUIPA

formalizadas en protocolos. En el caso de los sistemas distribuidos, los


servicios se especifican generalmente a travs de interfaces que por lo general
son descritas en un Lenguaje de Definicin de Interfaz (IDL por sus siglas en
ingles), dicho lenguaje especifica los nombres de las funciones que estn
disponibles as como los parmetros de entrada, los valores de salida y los
posibles errores que pueden obtenerse al invocarse dichas funciones.
Si la definicin de una interfaz se hace de manera adecuada, esta permitir que
dos procesos puedan comunicarse entre s, siempre y cuando ambos
procesos cuenten con la misma interfaz. Esto tambin permite que cada dos
desarrolladores independientes construyan su propia implementacin de
dichas interfaces, lo cual conlleva al desarrollo de dos sistemas distribuidos
desarrollados por separado que operan de la misma manera.
Una especificacin se considera adecuada cuando es completa y neutral.
Completa significa que todo lo necesario para hacer una implementacin de la
interfaz ha sido especificado y que no ser necesario que el propio
desarrollador sea quien agregue detalles especficos de la implementacin.
Neutral significa que las especificaciones no deben tener ninguna tendencia
hacia como se debe de hacer la implementacin de dicha especificacin. La
completitud y la neutralidad son muy importantes para la interoperabilidad y la
portabilidad, que son caractersticas que complementan la apertura de un
sistema distribuido. La interoperabilidad, tambin conocida como
compatibilidad, caracteriza el grado en el que la implementacin de sistemas o
componentes de diferentes fabricantes pueden coexistir y trabajar juntos,
siempre y cuando se utilicen los servicios como este especificado por el
estndar comn bajo el cual dichos sistemas fueron desarrollados. La
portabilidad por su parte caracteriza a que nivel puede ser ejecutada una
aplicacin desarrollada para un sistema distribuido A sobre un sistema
distribuido B que implementa las mismas interfaces del sistema A, pero
sin hacerle modificaciones.
Uno de los principales objetivos que se persiguen al desarrollar un sistema
operativo abierto, es que este sea flexible, lo que implica que dicho sistema
puede ser integrado por diferentes componentes (tanto de hardware como de
software), posiblemente de diferentes proveedores, que nuevos componentes
pueden agregarse al sistema y que componentes existentes pueden ser
reemplazados sin afectar el funcionamiento de los componentes ya existentes,
en otras palabras, un sistema distribuido abierto debe de ser extensible.
Para lograr la flexibilidad en un sistema distribuido abierto es necesario que el
sistema este organizado en mdulos o componentes relativamente pequeos y
fciles de reemplazar, esto implica que adems de definir las especificaciones
y la documentacin de las interfaces de alto nivel a las que tienen acceso los
usuarios y las aplicaciones, tambin es necesario definir las especificaciones
de las interfaces de las partes internas que componen el sistema y describir de
que manera interactan entre s.

Sistemas Distribuidos

Ing. Einar TURPO AROQUIPA

c) Seguridad:
La gran mayora de la informacin que maneja un sistema distribuido tiene un
alto valor para los usuarios de dicho sistema, y es por eso que la seguridad de
la informacin juega un papel clave al momento de desarrollar dicho sistema.
La seguridad de la informacin es todo lo que concierne a asegurar que no
ocurrirn cosas malas con los mensajes que envan los clientes para solicitar
informacin a un servidor, y por su puesto, con la informacin que estos
reciben como respuesta a sus peticiones. No basta con asegurar que estos
mensajes sern transmitidos de forma oculta, sino que tambin hay que
asegurar que la informacin sea entregada nicamente a quien debe de ser
entregada y que esto se har siempre de forma correcta y en el momento en
que se requiere. La seguridad es relativa a la amenaza que cada sistema
afronta, afecta a todos los puntos del sistema y debe de ser fcil de obtener.
La seguridad debe ofrecer los siguientes servicios:
o Confidencialidad, es decir, el manejo privado de la informacin:
proteger la informacin de ser accedida por usuarios no autorizados.
o Autentificacin, o capacidad de asegurar la identidad de un usuario.
o Integridad, que asegura que la informacin que empleamos no ha sido
manipulada, alterada o corrompida desde el origen.
o No repudio, de una operacin de emisin y recepcin de informacin
por parte de los agentes.
o Control de acceso a la informacin y/o recursos administrados por un
sistema.
o Disponibilidad de los recursos necesarios de un sistema cuando estos
sean requeridos, lo que protege la informacin contra interferencia con
los procedimientos de acceso a los recursos.
El alto valor de que tiene la informacin es la razn principal por la que esta se
puede ver amenazada de muchas formas, entre las principales podemos
encontrar:
Interrupcin: Destruye la informacin o la inutiliza. Ataca la disponibilidad.

Interceptacin: Obtiene acceso a informacin. Ataca la confidencialidad.

Sistemas Distribuidos

Ing. Einar TURPO AROQUIPA

Modificacin: Modifica la informacin. Ataca la integridad.

Fabricacin: Falsifica la informacin. Ataca la autenticidad.

Para defenderse de este tipo de amenazas se han desarrollado diversas


tcnicas de encriptacin, firmas digitales, implementacin de barreras
perimetrales (firewalls), modelos de seguridad internos y externos, etc. Sin
embargo, estas tcnicas parecen no ser suficientes para evitar que intrusos
logren interferir con el flujo de informacin ptimo de un sistema, ya que
encuentran formas de brincarse las barreras de seguridad de muchas
organizaciones y adems siguen ideando nuevas formas de atacar y amenazar
la informacin, un ejemplo de estos nuevos ataques son los ataques de
denegacin de servicio. Estos ataques consisten en bombardear un servicio
con un gran nmero de peticiones simultneas (y por lo general intiles) de
modo que el sistema se colapse, obstaculizando el servicio a los usuarios que
desean utilizarlo. Como hoy en da la capacidad de los sistemas distribuidos
ha crecido mucho, en ocasiones resulta muy difcil o incluso imposible
bloquear el servicio utilizando una sola computadora atacante, por lo que
ahora se han desarrollado los ataques de denegacin de servicio distribuidos,
los cuales hacen uso de miles o incluso millones de computadoras para
generar las peticiones al sistema que se desea bloquear, por lo que bloquear
un ataque de esta magnitud resulta sumamente complicado.
Si bien no podemos asegurar que un sistema distribuido sea cien por ciento
seguro, es importante contar con un esquema de seguridad lo ms robusto
posible, que a pesar de no ser inmune a todo tipo de ataques, si ser capaz de
frenar la gran mayora de dichos ataques. Algunas recomendaciones muy
tiles para los desarrolladores, administradores e implementadotes de un
sistema distribuido se presentan a continuacin:

Sistemas Distribuidos

Ing. Einar TURPO AROQUIPA

o Efectuar un anlisis de riesgos


Esto se suele mencionar en la literatura como el primer paso a realizarse
cuando se plantea la seguridad en un sistema. La idea es muy sencilla:
trazar todos los elementos que conforman nuestro sistema (hardware y
software) y observar cules involucran ms o menos riesgo. Esto
desembocar en un plan de seguridad cuyo objetivo es disminuir el
riesgo total del sistema, que se puede modelar como la suma de los
riesgos de sus componentes:
RIESGO TOTAL = RIESGO (componente 1) + RIESGO (componente 2)...
El riesgo de cada componente est en funcin directa a las prdidas que
ocasionara el que ste deje de operar, as como en funcin de cun
vulnerable es dicho componente en este momento. Por ejemplo, una
base de datos de clientes involucra un gran riesgo debido al gran valor
que la informacin representa para una organizacin; pero una simple PC
Windows de la misma organizacin conectada directamente al Internet
(sin firewall/proxy de por medio) tambin lo representa, debido a que
puede ser objeto de un ataque desde el exterior, con el posible riesgo de
fcil propagacin hacia otros computadores de nuestra red.
o Lo ms valioso debe alejarse de lo ms vulnerable
En la frmula del "riesgo" propuesta arriba, es evidente que los
componentes de nuestro sistema con alto valor y alta vulnerabilidad
sern de lejos los que presenten mayor riesgo. Sin embargo, en muchos
casos no es sencillo disminuir el valor de cierto componente (y por tanto
la prdida en caso de problemas), y tampoco se puede eliminar
completamente la vulnerabilidad del mismo (por ejemplo, si est de cara
a Internet.) En este caso lo que conviene es separar o dividir este
componente en dos partes suficientemente alejadas e independientes a
fin de que el riesgo total disminuya. Por ejemplo, los portales de
comercio electrnico deben dar cara a Internet (siendo vulnerables en
principio) y a la vez manejar informacin muy costosa (como
transacciones con tarjeta de crdito.) Esto los convierte en un sistema de
alto riesgo. Sin embargo es casi universal la separacin que se efecta
entre los componentes dedicados a dar cara a Internet (como los Web
Servers) y los componentes que manipulan la informacin comercial
(generalmente sistemas DBMS.) En trminos prcticos, esto significa que
el hacker no puede acceder directamente al DBMS (lo que sera
catastrfico), y slo podra atacar al Web Server, lo que en principio no
acarrea mayores consecuencias.
o Mantener las cosas simples
Un sistema complejo es ms difcil de asegurar y potencialmente
proporciona una mayor cantidad de puertas abiertas a los atacantes. En
general, es recomendable intentar dividir el problema mediante la

Sistemas Distribuidos

Ing. Einar TURPO AROQUIPA

simplificacin de la configuracin, para as identificar los puntos o rutas


de control vulnerables para incrementar la seguridad.
La seguridad debe estar en todos los niveles.
Esto se puede expresar ms sencillamente como: no confiar el sistema a
un nico mecanismo de seguridad.
La informacin fluye a travs de los distintos componentes y/o capas del
sistema y son muchas las instancias en las que se puede mejorar su
seguridad. La recomendacin estipula que utilicemos todas estas
instancias a pesar de que en principio puedan parecer redundantes. Por
lo general los administradores tienden a preocuparse por un nico punto
de acceso desde donde supuestamente hay una gran probabilidad de ser
atacados (por ejemplo, la conexin a Internet.) Por tanto se invierte
esfuerzo y dinero en controlar este nico punto bajo la asuncin de que
es la nica puerta de entrada a los maleantes y que por tanto, tras
asegurarla, todo el sistema quedar seguro. Esto tiene dos problemas:
Muchos ataques o "vulnerabilidades" se originan (de forma inocente o
intencional) desde dentro de la organizacin.
El sistema que controla la "puerta" siempre puede fallar.
Esto obliga a implementar la seguridad no en un nico punto
evidentemente vulnerable, sino en todos los lugares por donde fluye la
informacin al interior de cada componente involucrado.
Encriptar tanto como sea posible
La encriptacin es un tema complejo pero cuya implementacin resulta cada
vez ms sencilla conforme aparecen ms productos. Los cambios del ao
pasado en la legislacin norteamericana con respecto a la exportacin de
productos que encriptan, son un incentivo claro para que los desarrolladores y
vendedores se interesen ms en el tema.
En general, los canales de comunicacin ms vulnerables o de mayor cercana
al pblico requieren una encriptacin "ms fuerte", es decir, ms difcil de
descifrar por los curiosos o atacantes. Cierta informacin conlleva ms riesgo
que otra, y por tanto requerir un nivel de encriptacin diferenciado. Las
herramientas capaces de hacer esto son muchas, dependiendo del contexto en
que nos encontremos. Por ejemplo, los sistemas DBMS ms avanzados
incorporan la encriptacin como una opcin normal para los datos
almacenados, generalmente bajo esquemas propietarios.
La tecnologa de encriptacin de informacin destinada a pasar a travs de la
red ha evolucionado bastante, hacindose popular el trmino VPN para hacer
referencia a canales que encriptan la informacin de un modo ms o menos

Sistemas Distribuidos

10

Ing. Einar TURPO AROQUIPA

transparente. Hay soluciones propietarias as como estndares relativamente


implementados como IP Sec. Ciertas aplicaciones estndares han recibido
soluciones de encriptacin tambin estndar. El caso del Web encriptado bajo
SSL (HTTPS) junto con la industria de certificados digitales es el caso ms
conspicuo. De igual modo los estndares para correo electrnico PGP (o
derivados) y S/MIME son integrados cada vez con mayor frecuencia en las
aplicaciones de los usuarios finales.
En nuestra organizacin deberamos encriptar todo lo que sea posible. La
razn de esto es evidente si de lo que se trata es de enviar un mensaje
privado por Internet. Sin embargo, al interior de la organizacin la encriptacin
puede ayudar tambin. Naturalmente hay que sopesar los inconvenientes que
trae la encriptacin en trminos de incomodidad de uso, costo de licencias,
ciclos de CPU, etctera; con el hecho de que cierta informacin es
definitivamente de carcter pblico y por tanto no tiene sentido que est
encriptada.
Adems de estas hay muchas ms recomendaciones de seguridad que
podemos mencionar, por ejemplo: no confiar en la autenticacin estndar, no
usar la configuracin "estndar", educar a los usuarios, ejecutar slo los
servicios imprescindibles, mantenerse al da con las actualizaciones y hacer
chequeos regulares, establecer planes de contingencia y sistemas de respaldo,
mantener contacto con el proveedor de lneas de comunicacin, no permitir
conexiones directas desde la red interna a Internet, hacer uso de una red
perimtrica o zona desmilitarizada, prcticas de programacin segura,
vigilancia, establecimiento de polticas, etc.
d) Escalabilidad:
La escalabilidad es una de las caractersticas ms importantes para los
desarrolladores de un sistema distribuido. Se dice que un sistema es escalable
si logra conservar su efectividad cuando hay el nmero de recursos y el
nmero de usuarios incrementa significativamente. La escalabilidad de un
sistema pude medirse en tres aspectos diferentes:
Con respecto a su tamao: lo que significa que se pueden agregar ms
usuarios y ms recursos al sistema de una manera muy fcil.
Con respecto a su localizacin o rea de implementacin: lo que significa que
tanto los usuarios como los recursos pueden estar en locaciones remotas y
separadas el uno del otro.
Con respecto a su administracin: lo que significa que puede ser fcil de
administrar a pesar de que se utiliza en diferentes organizaciones
independientes que cuentan con diferentes polticas de seguridad y que hacen
un uso particular del sistema. Desafortunadamente, un sistema que es
escalable en uno o ms de estos aspectos por lo general afecta el rendimiento
del sistema conforme al crecimiento del mismo.

Sistemas Distribuidos

11

Ing. Einar TURPO AROQUIPA

Problemas de la Escalabilidad
Cuando se necesita escalar un sistema a un nivel ms alto es muy comn que
surja algn tipo de problema. Si consideramos la escalabilidad con respecto al
tamao de un sistema, nos encontramos con las limitaciones que presentan
los servicios, los datos y los algoritmos centralizados.
En muchos sistemas distribuidos es comn encontrar servicios centralizados,
es decir, que son implementados en un mismo servidor, lo que puede
ocasionar un problema muy obvio: este servidor puede convertirse en un
cuello de botella si el nmero de usuarios crece, y a pesar de tener una
capacidad de procesamiento y almacenamiento virtualmente ilimitada, la
comunicacin con este servidor puede llegar a tener un lmite y eventualmente
impedir el crecimiento del sistema. Desafortunadamente el uso de un slo
servidor puede ser inevitable, ya que por lo general tenemos servicios que
trabajan con informacin muy sensible y que tiene que ser lo ms segura
posible, por lo que el tener esta informacin almacenada en diferentes
servidores puede llegar a poner la informacin en riesgo y hacer el sistema
ms vulnerable.
De la misma manera, el almacenamiento centralizado de la informacin puede
ser un grave problema para un sistema distribuido, ya que a pesar de que un
slo servidor nos puede ofrecer la capacidad de almacenamiento que
necesitamos, es muy poco probable que dicho servidor permita el acceso
simultneo a miles o incluso millones de usuarios que desean consultar la
informacin almacenada en l. Un ejemplo de esto es el Sistema de Nombre
de Dominio, que a pasar de poder almacenar todos los registros en una sola
base de datos de varios gigabytes, no podra dar una respuesta a los millones
de usuarios de Internet que accedan este servicio simultneamente.
El uso de algoritmos centralizados es en teora la solucin ptima a un
problema de computacin distribuida, sin embargo, en la prctica podemos
ver que el uso de este tipo de algoritmos en un sistema distribuido grande no
es una buena idea, ya que colectar y transportar los datos de entrada y salida
del sistema hacia un slo punto en el que se computan dichos datos pudiese
sobrecargar parte de la red con todos los mensajes que necesita enviar y
recibir, adems de que el computo de toda la informacin en una sola
mquina tiene ms riesgo a fallos y puede resultar ms tardada. La solucin a
este problema es el uso de algoritmos descentralizados, los cuales cuentan
con ciertas caractersticas que los diferencian de los algoritmos centralizados,
entre las que podemos mencionar:
Ninguna mquina tiene informacin completa del estado del sistema.
Cada mquina toma decisiones propias basndose solamente en informacin
local.
Problemas o fallos de una mquina no arruinan el procesamiento de todo el
algoritmo.

Sistemas Distribuidos

12

Ing. Einar TURPO AROQUIPA

No necesariamente se cuenta con un reloj global (algoritmos no


sincronizados).
A pesar de que en una LAN pudiese sincronizarse la ejecucin de un algoritmo
descentralizado, este mismo procedimiento pudiese ser muy complicado o
incluso imposible si el algoritmo esta distribuido en una red ms amplia, por
lo que no se debe de depender en la existencia de un reloj global para hacer
posible la ejecucin de un algoritmo de este tipo.
Por otro lado tenemos los problemas de la escalabilidad con respecto a la
localizacin o rea de implementacin de un sistema distribuido. Una de las
principales razones por las cuales resulta difcil escalar los sistemas
distribuidos que existen actualmente, es que dichos sistemas fueron diseados
para trabajar redes de acceso locales (LANs) y que estn basados en una
comunicacin sncrona. En este tipo de comunicacin el cliente hace la
solicitud de un servicio y hace un bloqueo de la comunicacin hasta que
recibe la respuesta. Este acercamiento por lo general trabaja bien en LANs en
las que la comunicacin entre dos mquinas por lo general no toma ms de
algunos cientos de microsegundos. En el caso de las WANs, tenemos que
tomar en cuenta que la comunicacin entre los procesos pudiese tomar varios
cientos de milisegundos, lo que representa un alentamiento muy considerable
del sistema.
Otro problema a considerar es que la comunicacin en una WAN es poco
confiable y en la gran mayora de los casos es punto a punto, al contrario de
las redes locales que generalmente son muy confiables y permiten hacer
difusiones o transmisiones de tipo broadcast, lo que hace mucho ms fcil
el desarrollo de sistemas distribuidos.
La escalabilidad con respecto a la localizacin o rea de implementacin esta
directamente relacionada con los problemas de soluciones centralizadas
comentados anteriormente. Si tenemos un sistema con muchos componentes
centralizados, es muy claro que la escalabilidad del rea de implementacin
ser imitada gracias a los problemas de desempeo y confiabilidad que trae
consigo la implementacin en un rea de redes extensa. Adems, los
componentes centralizados tambin provocan el desperdicio de recursos de
red.
Finalmente, podemos mencionar los problemas que acarrea la escalabilidad de
la administracin de un sistema distribuido. Este problema se da cuando un
sistema distribuido de expande a otro dominio, que por lo general contar con
diferentes polticas de uso y pago de recursos, administracin y seguridad.
Por lo general cuando esto pasa se deben de tomar al menos dos tipos de
medidas de seguridad:
El sistema distribuido tiene que protegerse de ataques malignos provenientes
del nuevo dominio, y restringir el acceso a los servicios y datos que no estn
a disponibilidad de los usuarios del mismo.

Sistemas Distribuidos

13

Ing. Einar TURPO AROQUIPA

El nuevo dominio tiene que protegerse de ataques malignos provenientes del


sistema distribuido. Bsicamente, el nuevo dominio no sabe que tipo de
informacin puede esperar del cdigo enviado por el nuevo dominio por lo
que pudiera decidir limitar los permisos de acceso a dicho cdigo.
Tcnicas de Escalabilidad
Una vez que mencionamos ya los problemas de la escalabilidad, analizaremos
algunas maneras de solucionar dichos problemas. Como los problemas de
escalabilidad de los sistemas distribuidos se manifiestan como problemas de
rendimiento causados por la capacidad limitada de servidores y de las redes
de comunicaciones, existen solamente tres tcnicas de escalabilidad: eliminar
la latencia de las comunicaciones, distribucin y replicacin.
Eliminar la latencia de las comunicaciones es til en el caso de querer lograr la
escalabilidad geogrfica de un sistema, la idea bsica es simple: tratar de
evitar la espera de respuestas a las peticiones que se hagan a servicios
remotos lo ms que se pueda. Esencialmente, esto significa que se tiene que
construir la aplicacin que realiza las peticiones de tal manera que use
solamente mtodos de comunicacin asncronos, es decir, que el cliente enva
la peticin al servidor, mientras espera la respuesta el cliente aprovecha ese
tiempo para realizar tareas locales ms importantes y cuando recibe la
respuesta del servidor, el proceso que se estaba realizando se interrumpe y se
atiende la respuesta recibida. Esta solucin parece fcil, sin embargo, hay
muchas aplicaciones que no pueden hacer un uso efectivo de la comunicacin
asncrona, por ejemplo, aplicaciones interactivas en las que el usuario no tiene
nada mejor que hacer ms que esperar la respuesta del servidor, por que esta
se tiene que dar lo ms rpido que sea posible. En dichos casos, es mucho
mejor solucionar el problema de la latencia reduciendo el trfico generado
entre el cliente y el servidor cuando se comunican entre s; esto lo podemos
lograr moviendo parte de la computacin que normalmente se hace del lado
del servidor al cliente, para que as sea el mismo proceso que hace la solicitud
del servicio quien tenga que procesarlo.
Otra tcnica importante para lograr la escalabilidad es la distribucin, que
consiste en tomar un elemento, separarlo en partes pequeas y distribuir esas
partes en todo el sistema. Un ejemplo de un sistema distribuido que hace uso
de la distribucin es el servicio de nombre de dominio (DNS), el cual esta
distribuido en diferentes servidores que permiten el acceso a la misma
informacin a todos los usuarios, sin necesidad de tener un slo servidor que
proporcione este servicio.
En la mayora de los casos, los problemas de escalabilidad los vemos
reflejados en el rendimiento del sistema, por lo que generalmente la
replicacin de los componentes del sistema distribuido puede resultar ser una
buena idea. La replicacin aumenta la disponibilidad de los componentes del
sistema y adems ayuda a balancear la carga entre los componentes que se
replican, con lo que se logra una mejora del rendimiento del sistema. Si
consideramos un sistema que se encuentra distribuido en una red muy

Sistemas Distribuidos

14

Ing. Einar TURPO AROQUIPA

extensa, el hecho de tener una copia de algn componente ms cerca, tambin


mejora el rendimiento del sistema puesto que soluciona los problemas de
latencia de las comunicaciones que ya mencionamos anteriormente.
Una forma especial de replicacin es el Cacheo, el cual consiste en guardar
una copia de algn recurso (por lo general, de datos) de forma temporal en un
lugar cercano al cliente, para que ste lo pueda acceder ms fcilmente. En
contraste con la replicacin, el cachear un recurso es una decisin que es
tomada por el cliente, y no por los diseadotes del sistema. Un problema muy
serio que puede traer el cacheo, es que las copias que se hacen del recurso (o
de datos) pueden no actualizarse a su debido tiempo, por lo que al haber
varias copias diferentes del mismo recurso, lo que provoca problemas de
consistencia dentro del sistema; el nivel de inconsistencia que pueda ser
tolerado por un sistema depende del uso que se le da a al recurso que se esta
replicando, en el caso de pginas Web estticas, por ejemplo, pudiese ser
bastante tolerable, sin embargo, en el caso de pginas dinmicas o de
sistemas en tiempo real, la replicacin puede traer consigo muchos
problemas.
e) Tratamiento de Fallos:
El fallo tanto del hardware como el software es algo prcticamente inevitable, y
por ms confiable que pueda parecer algn componente, siempre es
importante estar preparado para cuando este falle. En un sistema centralizado
por lo general el fallo de cualquier componente del sistema provoca que todos
los servicios que este ofrece dejen de funcionar, en cambio, en un sistema
distribuido, los fallos son parciales, puesto que solo afectan a los servicios
que el componente que fallo este prestando, mientras que otros servicios que
prestan otros componentes siguen funcionando.
El tratamiento de fallos en un sistema distribuido es una tarea difcil, pero que
se puede lograr si se utilizan las tcnicas adecuadas, segn el sistema que se
desee proteger. Algunas de las tcnicas ms comunes son:

Deteccin de Fallos: obviamente no es posible tratar un fallo si este no se ha

detectado, sin embargo, la deteccin de un fallo dentro de un sistema


distribuido puede no ser tan sencillo como parece, recordemos que adems de
componentes de hardware y software, los sistemas distribuidos operan gracias
a la transmisin de mensajes, y el funcionamiento del sistema depende en
gran parte de estas transmisiones de datos entre los diferentes componentes;
un fallo en la transmisin de datos entre componentes no es fcil detectar,
pero es algo que podemos esperar (dependiendo del medio por el que se haga
la transmisin y otras condiciones) y al saber que existe la posibilidad de ese
fallo, podemos monitorear y aplicar tcnicas que aseguren que dicha
transmisin siempre sea correcta.

Enmascaramiento de Fallos: una vez que un fallo es detectado, es importante

encontrar la manera para que un usuario del sistema no note dicho fallo y que
pueda seguir utilizando el sistema de manera normal, esto es, ocultar los fallos

Sistemas Distribuidos

15

Ing. Einar TURPO AROQUIPA

del sistema y encargarse de que los servicios que se ofrecen al cliente nunca
sean interrumpidos. Son muchos ejemplos del enmascaramiento de fallos, en
el caso de un mensaje que se corrompi al ser enviado, una manera de ocultar
el fallo es haciendo la solicitud de reenvo del mensaje, y de esta manera el
usuario nunca notar que hubo un problema. Otro ejemplo lo dan las tcnicas
de redundancia que explicaremos ms adelante, pero que bsicamente
consiste en tener disponibles varios elementos que puedan dar el mismo
servicio y que en caso de que uno falle, otro este en la disponibilidad de
realizar el trabajo en su lugar, esto puede darse cuando fallan componentes de
un servidor (discos duros, tarjetas de red, etc.), o incluso cuando fallan las
conexiones a la red o los sistemas de bases de datos.

Tolerancia a Fallos: es importante saber cuando un sistema puede llegar a

tener ciertos problemas sin que estos afecten de manera grave al usuario de
los servicios proporcionados, para as, ignorar la ocurrencia de dichos fallos
cuando la aplicacin lo soporte, o bien, hacer saber al cliente que hay un
problema en lugar de gastar tiempo y recursos innecesarios para corregirlo
cuando probablemente el problema no se pueda arreglar rpido y el cliente
termine por abortar el proceso; Pretender arreglar de manera inmediata todos
los problemas que puedan surgir en un sistema puede resultar incluso daino
para el mismo sistema, puesto que hay problemas que mientras son
arreglados pueden afectar el rendimiento de otros componentes del sistema
que s estn trabajando.

Recuperacin Frente a Fallos: Una vez que fue detectado un fallo y que se ha

decidido arreglarlo, hay que encontrar la mejor manera de hacerlo, y adems,


de recuperar el estado del sistema antes de que ocurriera el fallo; esto requiere
del software adecuado para poder reconstruir o bien retractar los cambios que
no fueron completados al momento en que fue interrumpido el sistema, un
ejemplo de esto lo podemos ver en los sistemas manejadores de bases de
datos, que se sirven de una bitcora de las transacciones que se realizan y de
acuerdo a esta bitcora se decide reconstruir o retractar las transacciones
hechas sobre la base de datos antes de que se interrumpiera el
funcionamiento de la misma.

Redundancia: un sistema distribuido puede lograr ser tolerante a fallos gracias


a la utilizacin de componentes redundantes dentro del sistema. La
redundancia se logra con la replicacin de dichos componentes y con la
habilidad del sistema de recurrir a los componentes de respaldo en caso de
que el componente de uso primario falle, todo esto por supuesto, sin que el
usuario se percate de lo que esta sucediendo. La redundancia se puede dar en
muchas partes del sistema: componentes internos de los servidores,
servidores de aplicaciones, de Web, de archivos, de correo o de bases de
datos, sistemas de almacenamiento, conexiones a la red de comunicacin, etc.
Es muy importante tomar en cuenta que todos los componentes que estn
replicados en el sistema deben mantenerse actualizados para evitar problemas
de consistencia, y adems, la actualizacin de la informacin entre dichos
componentes no debe de tener un efecto significativo para las necesidades de
transmisin de datos del sistema.

Sistemas Distribuidos

16

Ing. Einar TURPO AROQUIPA

Las tcnicas antes mencionadas no son las nicas, pero si las ms utilizadas,
estas tcnicas deben de proporcionar las herramientas necesarias para
aumentar el grado de disponibilidad de cualquier sistema distribuido, ya que al
saber como tratar un fallo del sistema, tambin es posible encontrar la manera
de reconfigurar el sistema para que los servicios que este proporciona no sean
interrumpidos, o que en el peor de los casos slo sean afectados los servicios
proporcionados por los componentes afectados.
f) Concurrencia:
El control de concurrencia trata con los problemas de aislamiento y
consistencia del procesamiento de transacciones. El control de concurrencia
de un sistema distribuido asegura que la consistencia de los datos que se
almacenan y que se procesan en el sistema se mantienen en un ambiente
distribuido multiusuario. Si las transacciones son internamente consistentes, la
manera ms simple de lograr este objetivo es ejecutar cada transaccin sola,
una despus de otra. Sin embargo, esto puede afectar mucho el desempeo
de un sistema distribuido dado que el nivel de concurrencia se reduce al
mnimo. El nivel de concurrencia, es decir, el nmero de transacciones
simultneas activas, es probablemente el parmetro ms importante en
sistemas distribuidos. Por lo tanto, los mecanismos de control de
concurrencia buscan encontrar un balance entre el mantenimiento de la
consistencia de los datos y el mantenimiento de un alto nivel de concurrencia.
Si no se hace un adecuado control de concurrencia, se pueden presentar dos
anomalas. En primer lugar, se pueden perder actualizaciones provocando que
los efectos de algunas transacciones no se reflejen en los datos almacenados.
En segundo trmino, pueden presentarse recuperaciones de informacin
inconsistentes. Las tcnicas que se utilizan para asegurar un control de
concurrencia de un sistema distribuido, como hilos, semforos, candados,
etc., se discutirn ms adelante, en la parte de anlisis de la arquitectura de
clienteservidor.
g) Transparencia:
Se dice que un sistema distribuido es transparente, cuando este es capaz de
presentarse ante los usuarios y las aplicaciones como si fuese un sistema que
corre en una sola computadora, y no como un sistema cuyos procesos y
recursos estn distribuidos fsicamente en varias computadoras.
Tipos de Transparencia:
Segn el Manual de Referencia ANSA y el Modelo de Referencia para el
Procesamiento Distribuido Abierto de la Organizacin Internacional de
Estndares (ISO 1995), el concepto de transparencia de puede aplicar a 8
aspectos diferentes de un sistema distribuido:
o Transparencia de Acceso: oculta las diferencias entre la representacin
de los datos y la manera en que los recursos son accedidos.

Sistemas Distribuidos

17

Ing. Einar TURPO AROQUIPA

o Transparencia de Ubicacin: oculta la localizacin de los recursos y


permite el acceso a los mismos sin la necesidad de conocer su
localizacin.
o Transparencia de Migracin: oculta que un recurso o un cliente del
sistema sea reubicado, lo que permite hacer dichas reubicaciones sin
afectar la operacin de los usuarios y los servicios.
o Transparencia de Recolocacin: oculta que un recurso o un cliente del
sistema pueda moverse a una ubicacin diferente mientras estn en
uso.
o Transparencia de Replicacin: oculta la existencia de mltiples
ejemplares del mismo recurso.
o Transparencia de Concurrencia: oculta que un recurso sea compartido
por varios usuarios sin interferir entre ellos mismos.
o Transparencia Frente a Fallos: oculta el fallo y recuperacin de un
recurso dentro del sistema, dejando que los usuarios terminen sus
tareas a pesar de los fallos de hardware o software que pudieran
presentarse.
o Transparencia de Persistencia: oculta si un recurso (de software) esta
almacenado en memoria o en disco.
Desde el punto de vista de los usuarios, la transparencia se logra cuando:
o Sus pedidos se satisfacen con ejecuciones en paralelo en distintas
mquinas.
o Se utilizan una variedad de servidores de archivos.
o El usuario no necesita saberlo ni notarlo.
La transparencia desde el punto de vista de los programas significa disear la
interfaz de llamadas al sistema de modo que no sea visible la existencia de
varios procesadores.
No es transparente un sistema donde el acceso a los archivos remotos se
realice mediante:
El establecimiento explcito de una conexin en la red con un servidor remoto.
El envo posterior de mensajes, donde el acceso a los servicios remotos ser
distinto al acceso a los servicios locales.
Con todo esto en mente es posible disear un sistema que cuente con las
caractersticas necesarias para lograr la transparencia en tantos aspectos como
sea posible. Los dos ms importantes son la transparencia de acceso y la
transparencia de ubicacin, la primera se relaciona con la forma en que
representamos los datos en un sistema distribuido, es importante presentar al
usuario o a los programadores el acceso indistinto a recursos locales o
remotos, sin que este se de cuenta de la ubicacin de los mismos, lo que al
mismo tiempo nos conduce a tener transparencia de ubicacin dentro del
sistema.

Sistemas Distribuidos

18

Ing. Einar TURPO AROQUIPA

Como no se sabe donde estn localizados los recursos, tampoco se debe de


saber si estos se mueven a una nueva ubicacin, se este o no utilizando el
sistema, esto es lo que se conoce como transparencia de Migracin y
Recolocacin respectivamente.
Ejemplos de transparencia de acceso, ubicacin y migracin es el sistema de
nombre de dominio utilizado por los usuarios de Internet, estos utilizan un
nombre de dominio como dominio.com para acceder este sitio, sin importar
en donde este localizado el sitio de Internet, el usuario podr acceder al
servidor en el que se este hospedando la pgina, y si se decide mover este
sitio a otro servidor, basta con redireccionar al cliente al servidor adecuado,
sin que el cliente lo note. Por su lado, si el cliente esta accediendo al sitio
desde una conexin inalmbrica dentro de su lugar de trabajo y esta en
movimiento, es posible seguir proporcionando servicios sin interrupciones al
cliente siempre y cuando el sistema sea transparente a la recolocacin y
permita que el cliente siga conectado a pesar de cambiar su ubicacin fsica.
Por otro lado, la replicacin juega un papel muy importante dentro de un
sistema distribuido, en el caso de los nombre de domino, los servidores DNS
trabajan en un sistema de replicacin distribuida organizado jerrquicamente
que hace posible el acceso simultneo a millones de usuarios que requieren
de la informacin que contiene esta base de datos, sin embargo, la
transparencia de la replicacin en el sistema consiste en esconder que existen
varias copias de un mismo recurso, y por lo general implica que dentro del
mismo sistema se cuenta con transparencia de ubicacin, puesto que de otra
manera sera imposible acceder a las copias de los recursos con que se
cuenta.
La idea de un sistema distribuido es poder proporcionar a sus usuarios un
servicio simultneo a un mismo recurso; es entonces muy comn que varios
usuarios intenten hacer uso del mismo recurso al mismo tiempo y que traten
de competir por el uso de dicho recurso; en estos casos la transparencia de
concurrencia nos ayuda a ocultar al usuario que adems de l, hay otros
usando o intentando usar el mismo recurso. El reto ms interesante de esta
parte del diseo de un sistema distribuido es que tambin se tiene que
considerar la consistencia de los datos que se almacenarn en el sistema, por
lo que habr que tomar decisiones en cuanto a las tcnicas de candados y de
uso de semforos a utilizarse para lograr tener un sistema concurrente y a su
vez consistente.
La transparencia frente a fallos consiste en esconder cualquier falla que ocurra
en el sistema para que el usuario pueda hacer uso del mismo a pesar de que
alguno de sus componentes no este trabajando como es debido, uno de los
retos ms desafiantes de esta tarea es saber distinguir entre recursos que
estn fallando y recursos que simplemente estn siendo accedidos por
muchos usuarios y cuya respuesta puede alentarse. Es importante tener un
buen esquema de replicacin y de balanceo de cargas para evitar estas
situaciones, pero al ser prcticamente inevitables es necesario considerar que
hacer cuando el sistema esta en una situacin como la antes mencionada, y

Sistemas Distribuidos

19

Ing. Einar TURPO AROQUIPA

sobre todo determinar que tipo de respuesta enviar al cliente para que este no
se de cuenta de las fallas del sistema.
Grado de Transparencia:
A pesar de que la transparencia es una caracterstica generalmente deseable
para cualquier sistema distribuido, hay situaciones en las que el pretender
enmascarar todos los aspectos relacionados con la distribucin de los
componentes del sistema puede no ser lo ms ptimo; en algunas ocasiones
es mejor hacer del conocimiento del usuario que el sistema esta compuesto
por varios elementos y que por ms ptima que sea la transmisin de
mensajes o la distribucin y replicacin de componentes, habr cierto tiempo
de respuesta mnimo entre cada transaccin que es imposible evitar.
Hay tambin una relacin directa entre el nivel de transparencia y el
rendimiento de un sistema distribuido, por lo que lo ideal es encontrar un bien
equilibrio entre ambos factores. Por ejemplo, si pretendemos garantizar la
transparencia de replicacin en un sistema, es necesario que el usuario sepa
que para garantizar la consistencia de la informacin es necesario actualizar
todos los componentes replicados cuando se hace un cambio, por lo que el
acceso al sistema puede verse interrumpido por algunos segundos mientras
esta operacin se lleva a cabo.
Es muy importante considerar la transparencia como uno de los principales
objetivos del diseo e implementacin de un sistema distribuido, sin embargo,
es importante tener en consideracin otros factores que pueden ser afectados
por la transparencia, principalmente el desempeo general del sistema.
1.2. Ventajas y Factores de Distribucin:
En general, los sistemas distribuidos exhiben algunas ventajas sobre los sistemas
centralizados que se describen enseguida.
a) Factores Estratgicos:
Hoy en da, los clientes, proveedores y compaas se encuentran
generalmente en diferentes localidades alejados los unos de los otros.
Debido a que todos estos utilizan computadoras, las redes de informacin
que los unen y que les permiten interactuar pueden ofrecer a las empresas
mayor competitividad.
b) Costos de Equipo:
El cociente precio/desempeo de la suma del poder de los procesadores
separados, contra el poder de uno solo centralizado, es mejor cuando estn
distribuidos, esto lo podemos calcular con base al costo promedio de MIPs
(Millones de Instrucciones por Segundo), el cual es mucho mayor en

Sistemas Distribuidos

20

Ing. Einar TURPO AROQUIPA

mainframes que en un nmero fijo de estaciones de trabajo. Sin embargo,


cabe mencionar que los mainframes soportan cientos de dispositivos y
permiten que miles de clientes compartan los mismos recursos
computacionales del mismo, aunque la diferencia en costos es enorme.
c) Conocimiento y control de los usuarios:
La gran mayora de los usuarios de los servicios computacionales son cada
vez ms cultos y competentes por lo que dichos usuarios desean operar sus
propios sistemas, a su manera, por lo que no estn contentos con los
sistemas centralizados que llevan el control sobre los sistemas que son
desarrollados, cundo, cmo y por quines son operados. La computacin
distribuida ofrece a los usuarios estar ms cerca de los procesos y de los
datos.
d) Costos de Desarrollo:
Cuando se trabaja con un sistema distribuido que cuenta con diferentes
mdulos de software que pueden integrase como parte de un solo sistema,
los usuarios finales interesados en desarrollar sus propias aplicaciones
pueden hacerlo utilizando sus propias mquinas, lo que trae como
consecuencia la reduccin del costo y tiempo de desarrollo de una nueva
aplicacin.
e) Interfaces de Usuarios:
La mayora de las estaciones de trabajo que se utilizan hoy en da soportan
el uso de interfaces grficas sofisticadas con dispositivos de sealamiento y
sistemas de audio y video; esta tecnologa resulta ser muy atractiva
especialmente para usuarios con diferentes estilos de aprendizaje que por lo
general se decepcionan por los tradicionales repotes o interfaces
presentadas en formato de texto o con grficos de poca calidad.
f) Flexibilidad y Facilidad de Configuracin:
Los sistemas distribuidos, y en general la computacin descentralizada,
ofrece muchas opciones para mejorar el desempeo y la fiabilidad de un
sistema mediante el uso de procesos y datos redundantes.
g) Explotacin del Hardware:
Las estaciones de trabajo y computadoras personales permiten el desarrollo
de software especializado que hace uso de las caractersticas especficas del
hardware de la estacin de trabajo, cada una de estas estaciones puede ser

Sistemas Distribuidos

21

Ing. Einar TURPO AROQUIPA

utilizada como un servidor especializado (por ejemplo, de correos, de Web,


de archivos, de bases de datos, etc.) y estos servidores con los que
satisfacen las peticiones de clientes que desean hacer uso de los servicios
con los que cuenta dicho servidor. A esta configuracin se le conoce
comnmente como configuracin cliente-servidor y se explicar a detalle
ms adelante.
h) Nuevas aplicaciones:
Muchas aplicaciones nuevas de tiempo real requieren ser procesadas y
acceder datos de manera local, lo cual es posible solamente si se utiliza un
sistema distribuido con estaciones de trabajo distribuidos en los lugares que
ms se requiera.
i) Crecimiento:
El poder total del sistema puede irse incrementando al aadir pequeos
sistemas, lo cual es mucho ms difcil en un sistema centralizado y caro.
Por otro lado, los sistemas distribuidos tambin exhiben algunas ventajas
sobre sistemas aislados. Estas ventajas son:
Compartir datos: un sistema distribuido permite compartir datos ms
fcilmente que los sistemas aislados, que tendran que duplicarlos en cada
nodo para lograrlo.
Compartir dispositivos: un sistema distribuido permite acceder dispositivos
desde cualquier nodo en forma transparente, lo cual es imposible con los
sistemas aislados. El sistema distribuido logra un efecto sinergtico.
Comunicaciones: la comunicacin persona a persona es factible en los
sistemas distribuidos, en los sistemas aislados no.
Flexibilidad: La distribucin de las cargas de trabajo es factible en el sistema
distribuido, se puede incrementar el poder de cmputo.

1.3. Desventajas y Factores a Considerar:


As como los sistemas distribuidos exhiben grandes ventajas, tambin se pueden
identificar algunas desventajas, algunas de ellas tan serias que han frenado la
produccin comercial de sistemas distribuidos en la actualidad.

Sistemas Distribuidos

22

Ing. Einar TURPO AROQUIPA

a) Falta de Estndares:
La falta de estndares y herramientas de desarrollo para ambientes
distribuidos pueden crear graves problemas de compatibilidad, portabilidad e
interconectividad en los sistemas distribuidos. Esto se da cuanto se crean
muchas copias incompatibles de la misma aplicacin. El desarrollo y uso de
estndares para aplicaciones, computadoras y redes son desarrolladas en
lugares, por personas y en tiempos diferentes, lo cual resulta muy
complicado, y es por eso que es comn ver este tipo de problemas en un
sistema distribuido.
b) Complejidad del Diseo:
Los grandes sistemas de computadoras pueden distribuirse en muchas
computadoras, sin embargo, separar el sistema en muchas partes y decidir
en que lugar van a residir dichas partes, no es una tarea trivial. Los
problemas de compartir datos y recursos son tan complejos que los
mecanismos de solucin generan mucha sobrecarga al sistema hacindolo
ineficiente. El verificar, por ejemplo, quines tienen acceso a algunos
recursos y quines no, el aplicar los mecanismos de proteccin y registro de
permisos consume demasiados recursos. En la actualidad, las soluciones
para estos problemas son incipientes.
c) Falta de Infraestructura en Soporte y Administracin:
Hasta ahora muchos de los problemas de administracin y soporte que
demanda un sistema distribuido no han sido solucionados, y las soluciones
que existen para algunos otros problemas son limitadas. Algunos ejemplos
de estos problemas son la planeacin de sistemas de informacin de
acuerdo a la cambiante tecnologa que hay hoy en da, el manejo de recursos
distribuidos y el diseo de la estructura organizacional para la computacin
distribuida.
d) Seguridad e Integridad:
La distribucin de datos y de programas en mltiples localidades pueden
crear muchos problemas de seguridad e integridad que no con fciles de
solucionar y que por lo general requieren tambin de un proceso paralelo
que ayude a solucionar dichos problemas, por lo que la carga del sistema
aumenta y el rendimiento en general puede verse afectado.
e) Opciones:
La disponibilidad de muchas opciones y decisiones puede ser tanto buena,
como mala. En ocasiones tener muchas opciones nos quita tiempo, puesto

Sistemas Distribuidos

23

Ing. Einar TURPO AROQUIPA

que tenemos que analizar, entender y probar todas las que estn disponibles
antes de llegar a tomar una decisin cobre cual es la mejor. Por el lado
contrario, el tener muchas opciones nos permite disear un sistema que este
conformado.

2. Arquitectura Cliente Servidor


1.1. Fundamentos de Arquitectura Cliente Servidor
Definiciones Bsicas
Para entender el concepto de la arquitectura de cliente servidor, antes es
necesario conocer algunas definiciones. Entre las principales definiciones se tiene:
a) Desde un punto de vista conceptual:
Es un modelo para construir sistemas de informacin, que se sustenta en la
idea de repartir el tratamiento de la informacin y los datos por todo el
sistema informtico, permitiendo mejorar el rendimiento del sistema global de
Informacin
b) En trminos de arquitectura:
Los distintos aspectos que caracterizan a una aplicacin (proceso,
almacenamiento, control y operaciones de entrada y salida de datos) en el
sentido ms amplio, estn situados en ms de un computador, los cuales se
encuentran interconectados mediante una red de comunicaciones.
c) IBM define al modelo Cliente/Servidor
Es la tecnologa que proporciona al usuario final el acceso transparente a las
aplicaciones, datos, servicios de cmputo o cualquier otro recurso del grupo
de trabajo y/o, a travs de la organizacin, en mltiples plataformas. El modelo
soporta un medio ambiente distribuido en el cual los requerimientos de
servicio hechos por estaciones de trabajo inteligentes o "clientes'', resultan en
un trabajo realizado por otros computadores llamados servidores.
Para entender mejor las definiciones antes mencionadas, analizaremos ahora
algunos de los conceptos mencionados en dichas definiciones:
Un Cliente es el que inicia un requerimiento de servicio. El requerimiento inicial
puede convertirse en mltiples requerimientos de trabajo a travs de redes LAN o
WAN. La ubicacin de los datos o de las aplicaciones es totalmente transparente
para el cliente.
Un Servidor es cualquier recurso de cmputo dedicado a responder a los
requerimientos del cliente. Los servidores pueden estar conectados a los clientes
Sistemas Distribuidos

24

Ing. Einar TURPO AROQUIPA

a travs de redes LANs o WANs, para proveer de mltiples servicios a los clientes
tales como impresin, acceso a bases de datos, fax, procesamiento de imgenes,
etc. Es importante mencionar que un servidor no es necesariamente un dispositivo
fsico (una computadora) sino que hay que entender al servidor como un proceso
que se encarga de atender las peticiones de un cliente.
Con estos elementos podemos ya darnos una idea de lo que es el modelo cliente
servidor, sin embargo, es necesario analizar ms a fondo las caractersticas de la
arquitectura si queremos llegar a entender por completo el funcionamiento de la
misma.
Elementos de la Arquitectura Cliente/Servidor
Una arquitectura es un entramado de componentes funcionales que aprovechando
diferentes estndares, convenciones, reglas y procesos, permite integrar una
amplia gama de productos y servicios informticos, de manera que pueden ser
utilizados eficazmente dentro de la organizacin.
Debemos sealar que para seleccionar el modelo de una arquitectura, hay que
partir del contexto tecnolgico y organizativo del momento y, que la arquitectura
Cliente/Servidor requiere una determinada especializacin de cada uno de los
diferentes componentes que la integran.
En esta aproximacin, y con el objetivo de definir y delimitar el modelo de
referencia de una arquitectura Cliente/Servidor, debemos identificar los
componentes que permitan articular dicha arquitectura, considerando que toda
aplicacin de un sistema de informacin est caracterizada por tres componentes
bsicos:
o Presentacin/Captacin de Informacin
o Procesos
o Almacenamiento de la Informacin
Y se integran en una arquitectura Cliente/Servidor en base a los elementos que
caracterizan dicha arquitectura, es decir:
o Puestos de Trabajo
o Comunicaciones
o Servidores
De estos elementos debemos destacar:
El Puesto de Trabajo o Cliente Una Estacin de trabajo o microcomputador (PC:
Computador Personal) conectado a una red, que le permite acceder y gestionar
una serie de recursos, el cual se perfila como un puesto de trabajo universal. Nos
referimos a un microcomputador conectado al sistema de informacin y en el que
se realiza una parte mayoritaria de los procesos.

Sistemas Distribuidos

25

Ing. Einar TURPO AROQUIPA

Se trata de un fenmeno en el sector informtico. Aquellos responsables


informticos que se oponen a la utilizacin de los terminales no programables,
acaban siendo marginados por la presin de los usuarios. Debemos destacar que
el puesto de trabajo basado en un microcomputador conectado a una red,
favorece la flexibilidad y el dinamismo en las organizaciones. Entre otras razones,
porque permite modificar la ubicacin de los puestos de trabajo, dadas las
ventajas de la red.
Los Servidores o Back-End. Una mquina que suministra una serie de servicios
como Bases de Datos, Archivos, Comunicaciones,...). Los Servidores, segn la
especializacin y los requerimientos de los servicios que debe suministrar pueden
ser:
o Mainframes
o Minicomputadoras
o Especializados (dispositivos de red, imagen, etc.)
Una caracterstica a considerar es que los diferentes servicios, segn el caso,
pueden ser suministrados por un nico Servidor o por varios Servidores
especializados.
Las Comunicaciones en sus dos vertientes:
Infraestructura de redes: Componentes Hardware y Software que garantizan la
conexin fsica y la transferencia de datos entre los distintos equipos de la red.
Infraestructura de comunicaciones: Componentes Hardware y Software que
permiten la comunicacin y su gestin, entre los clientes y los servidores.
La arquitectura Cliente/Servidor es el resultado de la integracin de dos culturas.
Por un lado, la del Mainframe que aporta capacidad de almacenamiento, integridad
y acceso a la informacin y, por el otro, la del computador que aporta facilidad de
uso (cultura de PC), bajo costo, presentacin atractiva (aspecto ldico) y una
amplia oferta en productos y aplicaciones.
Caractersticas del modelo Cliente/Servidor
En el modelo Cliente/Servidor podemos encontrar las siguientes caractersticas:
a) El Cliente y el Servidor pueden actuar como una sola entidad y tambin
pueden actuar como entidades separadas, realizando actividades o tareas
independientes.
b) Las funciones de Cliente y Servidor pueden estar en plataformas separadas, o
en la misma plataforma.
c) Un servidor proporciona servicio a mltiples clientes en forma concurrente.

Sistemas Distribuidos

26

Ing. Einar TURPO AROQUIPA

d) Cada plataforma puede ser escalable independientemente. Los cambios


realizados en las plataformas de los Clientes o de los Servidores, ya sean por
actualizacin o por reemplazo tecnolgico, se realizan de una manera
transparente para el usuario final.
e) La interrelacin entre el hardware y el software estn basados en una
infraestructura poderosa, de tal forma que el acceso a los recursos de la red
no muestra la complejidad de los diferentes tipos de formatos de datos y de
los protocolos. Un sistema de servidores realiza mltiples funciones al mismo
tiempo que presenta una imagen de un slo sistema a las estaciones Clientes.
Esto se logra combinando los recursos de cmputo que se encuentran
fsicamente separados en un sistema lgico, proporcionando de esta manera
el servicio ms efectivo para el usuario final.
Tambin es importante hacer notar que las funciones Cliente/Servidor pueden
ser dinmicas. Ejemplo, un servidor puede convertirse en cliente cuando
realiza la solicitud de servicios a otras plataformas dentro de la red. Tiene
capacidad para permitir integrar los equipos ya existentes en una organizacin,
dentro de una arquitectura informtica descentralizada y heterognea.
f) Adems se constituye como el nexo de unin ms adecuado para reconciliar
los sistemas de informacin basados en mainframes o minicomputadoras, con
aquellos otros sustentados en entornos informticos pequeos y estaciones de
trabajo.
g) Designa un modelo de construccin de sistemas informticos de carcter
distribuido.
h) Su representacin tpica es un centro de trabajo (PC), en donde el usuario
dispone de sus propias aplicaciones de oficina y sus propias bases de datos,
sin dependencia directa del sistema central de informacin de la organizacin,
al tiempo que puede acceder a los recursos de este host central y otros
sistemas de la organizacin ponen a su servicio.
En consecuencia, parte del control de las aplicaciones se transfieren del
computador central (servidor) a los PCs o estaciones de trabajo (clientes),
adquiriendo estas plataformas, entonces, un papel protagonista en conjunto del
sistema de informacin.
En conclusin, Cliente/Servidor puede incluir mltiples plataformas, bases de
datos, redes y sistemas operativos. Estos pueden ser de distintos proveedores, en
arquitecturas propietarias y no propietarias y funcionando todos al mismo tiempo.
Por lo tanto, su implantacin involucra diferentes tipos de estndares: APPC,
TCP/IP, OSI, NFS, DRDA corriendo sobre DOS, OS/2, Windows o PC UNIX, en
Token-Ring, Ethernet, FDDI o medio coaxial, slo por mencionar algunas de las
posibilidades. Dependiendo de estas caractersticas y de su combinacin, es el
grado de complejidad de una solucin C/S.

Sistemas Distribuidos

27

Ing. Einar TURPO AROQUIPA

Ventajas y Desventajas del modelo Cliente/Servidor


El esquema Cliente/Servidor posee las siguientes ventajas:
a) Uno de los aspectos que ms ha promovido el uso de sistemas
Cliente/Servidor, es la existencia de plataformas de hardware cada vez ms
baratas. Esta constituye a su vez una de las ms palpables ventajas de este
esquema, la posibilidad de utilizar mquinas considerablemente ms baratas
que las requeridas por una solucin centralizada, basada en sistemas grandes.
Adems, se pueden utilizar componentes, tanto de hardware como de
software, de varios fabricantes, lo cual contribuye considerablemente a la
reduccin de costos y favorece la flexibilidad en la implantacin y actualizacin
de soluciones.
b) El esquema Cliente/Servidor facilita la integracin entre sistemas diferentes y
comparte informacin permitiendo, por ejemplo que las mquinas ya
existentes puedan ser utilizadas pero con interfaces ms amigables al usuario.
De esta manera, podemos integrar PCs con sistemas medianos y grandes, sin
necesidad de que todos tengan que utilizar el mismo sistema operacional.
c) Al favorecer el uso de interfaces grficas interactivas, los sistemas construidos
bajo este esquema tienen mayor interaccin ms intuitiva con el usuario. El
uso de interfaces grficas para el usuario, el esquema Cliente/Servidor
presenta la ventaja, con respecto a uno centralizado, de que no es siempre
necesario transmitir informacin grfica por la red pues esta puede residir en
el cliente, lo cual permite aprovechar mejor el ancho de banda de la red.
d) Una ventaja adicional del uso del esquema Cliente/Servidor es que es ms
rpido el mantenimiento y el desarrollo de aplicaciones, pues se pueden
emplear las herramientas existentes (por ejemplo los servidores de SQL o las
herramientas de ms bajo nivel como los sockets o el RPC).
e) La estructura inherentemente modular facilita adems la integracin de nuevas
tecnologas y el crecimiento de la infraestructura computacional, favoreciendo
as la escalabilidad de las soluciones.
f) El esquema Cliente/Servidor contribuye adems, a proporcionar, a los
diferentes departamentos de una organizacin, soluciones locales, pero
permitiendo la integracin de la informacin relevante a nivel global.
El esquema Cliente/Servidor tiene algunos inconvenientes que se mencionan a
continuacin:
a) Tiene escasas herramientas para la administracin y ajuste del desempeo de
los sistemas.

Sistemas Distribuidos

28

Ing. Einar TURPO AROQUIPA

b) En el desarrollo de aplicaciones Cliente/Servidor se deben considerar los


aspectos, que se mencionan a continuacin:
o Los clientes y los servidores debern utilizar el mismo mecanismo (por
ejemplo sockets o RPC), lo cual implica que se deben tener mecanismos
generales que existan en diferentes plataformas.
o Adems, hay que tener estrategias pare el manejo de errores y para
mantener la consistencia de los datos. La seguridad de un esquema
Cliente/Servidor es muy importante. Por ejemplo, se deben hacer
verificaciones en el cliente y en el servidor. Tambin se puede recurrir a
otras tcnicas como el encripcin.
o El desempeo. Problemas de este estilo pueden presentarse por
congestin en la red, dificultad de trfico de datos, etc.
o Un aspecto directamente relacionado con lo anterior es el de cmo
distribuir los datos en la red. En el caso de una organizacin, por
ejemplo, ste puede ser hecho por departamentos, geogrficamente, o de
otras maneras. Hay que tener en cuenta que en algunos casos, por
razones de confiabilidad o eficiencia, se pueden tener datos replicados, y
que puede haber actualizaciones simultneas.
o A otro nivel, una de las decisiones que deben tomar las organizaciones es
la de si comprar o desarrollar los diferentes componentes.
Servicios basados en Cliente/Servidor
IBM ha orientado sus esfuerzos de desarrollo de productos ha satisfacer los
siguientes servicios:
a) Servicios de Datos e Impresin: Servicios que permiten compartir archivos,
bases de datos, impresoras y graficadores (plotters). Administracin de las
colas de impresin en diferentes dispositivos.
b) Servicios de Comunicaciones: Aseguran que cada componente fsico de la red
sea capaz de comunicarse exitosamente con otros componentes, tales como
LAN a LAN y LAN a WAN. El sistema puede incluir dispositivos de
comunicaciones que manejen diferentes tipos de protocolos para conectar
sistemas heterogneos.
c) Servicio de Administracin: Administracin de Sistemas involucra
administracin de cambios, de problemas, operaciones, configuracin y
rendimiento.
Administracin de Cambios: es definida como las actividades involucradas en
la planeacin, programacin, distribucin, instalacin y registro de hardware y
software en una red distribuida.

Sistemas Distribuidos

29

Ing. Einar TURPO AROQUIPA

Administracin de Problemas: involucra la determinacin de los mismos, la


identificacin de su origen en una red y su solucin.
Administracin de Operaciones: es definida como la administracin del uso de
los sistemas y de los recursos para soportar la carga de trabajo de la
organizacin, la cual incluye operaciones automatizadas y remotas.
Administracin de Configuracin: es el manejo de las relaciones lgicas y
fsicas entre los recursos de la red.
Administracin del Rendimiento: es un conjunto de actividades tales como la
recopilacin de datos de desempeo, afinamiento, distribucin de carga de
trabajo y el planeamiento de la capacidad para las redes distribuidas.
Administracin de Sistemas: tambin incluye servicios de respaldo,
recuperacin de datos, seguridad de recursos de cmputo y distribucin y
mantenimiento de software.
d) Servicios de Aplicacin: Si el recurso compartido es una parte de una
aplicacin (una funcin de la aplicacin), estamos hablando de servicios de
aplicacin. Cada uno de los procesadores participantes en un ambiente
Cliente/Servidor puede mantener parte del cdigo de la aplicacin, el cual debe
ser compartido por todos ellos (interoperabilidad). Esto significa que las
partes de una aplicacin pueden ser distribuidas en varios procesadores,
locales o remotos.
El diseo de las funciones de la aplicacin no debe estar ligado a un computador,
lo que permite transportar la aplicacin de un procesador a otro, sin
modificaciones (portabilidad).
Una ventaja derivada de esto, es que la aplicacin puede estar ptimamente
ubicada dentro de una red en base a las necesidades: de recursos de cmputo y
de la organizacin.

Sistemas Distribuidos

30

Ing. Einar TURPO AROQUIPA

Programacin por capas


La programacin por capas es un estilo de programacin en el que el objetivo
primordial es la separacin de la lgica de negocios de la lgica de diseo; un
ejemplo bsico de esto consiste en separar la capa de datos de la capa de
presentacin al usuario.

La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en


varios niveles y, en caso de que sobrevenga algn cambio, slo se ataca al nivel
requerido sin tener que revisar entre cdigo mezclado. Un buen ejemplo de este
mtodo de programacin sera el modelo de interconexin de sistemas abiertos.
Adems, permite distribuir el trabajo de creacin de una aplicacin por niveles; de
este modo, cada grupo de trabajo est totalmente abstrado del resto de niveles,
de forma que basta con conocer la API que existe entre niveles.
En el diseo de sistemas informticos actual se suele usar las arquitecturas
multinivel o Programacin por capas. En dichas arquitecturas a cada nivel se le
confa una misin simple, lo que permite el diseo de arquitecturas escalables
(que pueden ampliarse con facilidad en caso de que las necesidades aumenten).
El diseo ms utilizado actualmente es el diseo en tres niveles (o en tres capas).
Capas y niveles
a) Capa de presentacin: es la que ve el usuario (tambin se la denomina "capa
de usuario"), presenta el sistema al usuario, le comunica la informacin y
captura la informacin del usuario en un mnimo de proceso (realiza un
filtrado previo para comprobar que no hay errores de formato). Esta capa se
comunica nicamente con la capa de negocio. Tambin es conocida como
interfaz grfica y debe tener la caracterstica de ser "amigable" (entendible y
fcil de usar) para el usuario.
b) Capa de negocio: es donde residen los programas que se ejecutan, se reciben
las peticiones del usuario y se envan las respuestas tras el proceso. Se
denomina capa de negocio (e incluso de lgica del negocio) porque es aqu
Sistemas Distribuidos

31

Ing. Einar TURPO AROQUIPA

donde se establecen todas las reglas que deben cumplirse. Esta capa se
comunica con la capa de presentacin, para recibir las solicitudes y presentar
los resultados, y con la capa de datos, para solicitar al gestor de base de
datos para almacenar o recuperar datos de l. Tambin se consideran aqu los
programas de aplicacin.
c) Capa de datos: es donde residen los datos y es la encargada de acceder a los
mismos. Est formada por uno o ms gestores de bases de datos que realizan
todo el almacenamiento de datos, reciben solicitudes de almacenamiento o
recuperacin de informacin desde la capa de negocio.
Todas estas capas pueden residir en un nico ordenador, si bien lo ms usual es
que haya una multitud de ordenadores en donde reside la capa de presentacin
(son los clientes de la arquitectura cliente/servidor). Las capas de negocio y de
datos pueden residir en el mismo ordenador, y si el crecimiento de las
necesidades lo aconseja se pueden separar en dos o ms ordenadores. As, si el
tamao o complejidad de la base de datos aumenta, se puede separar en varios
ordenadores los cuales recibirn las peticiones del ordenador en que resida la
capa de negocio.
Si, por el contrario, fuese la complejidad en la capa de negocio lo que obligase a
la separacin, esta capa de negocio podra residir en uno o ms ordenadores que
realizaran solicitudes a una nica base de datos. En sistemas muy complejos se
llega a tener una serie de ordenadores sobre los cuales corre la capa de negocio,
y otra serie de ordenadores sobre los cuales corre la base de datos.
En una arquitectura de tres niveles, los trminos "capas" y "niveles" no significan lo
mismo ni son similares.
El trmino "capa" hace referencia a la forma como una solucin es segmentada
desde el punto de vista lgico:
Presentacin/ Lgica de Negocio/ Datos.
En cambio, el trmino "nivel" corresponde a la forma en que las capas lgicas se
encuentran distribuidas de forma fsica. Por ejemplo:
o Una solucin de tres capas (presentacin, lgica del negocio, datos) que
residen en un solo ordenador (Presentacin+lgica+datos). Se dice que la
arquitectura de la solucin es de tres capas y un nivel.
o Una solucin de tres capas (presentacin, lgica del negocio, datos) que
residen en dos ordenadores (presentacin+lgica, lgica+datos). Se dice
que la arquitectura de la solucin es de tres capas y dos niveles.

Sistemas Distribuidos

32

Ing. Einar TURPO AROQUIPA