Curso sobre aplicaciones de Internet

Para aquellos que no entiendan muy bien esto de las aplicaciones en internet, os publico un curso sobre el tema que he realizado con todo cariño.


Índice:

- 1 )Introducción
- 2) Requisitos de las aplicaciones
- 3) Cliente/Servidor
- 4) Peer-to-peer
- 5) Grid
- 6) Código Móvil
- 7) Bibliografía



1) Introducción

Internet ha ido evolucionando desde sus orígenes (desde lo que se dió en llamar ARPANET) , primero interconectando redes existentes y después desarrollando una enorme capacidad de soportar de forma eficaz las diferentes aplicaciones que han ido apareciendo – y que no cabe duda que seguirán haciéndolo- y de las que vamos a hablar en este módulo.
Dentro de estas aplicaciones podemos distinguir aquellas que tienen una Ubicación Única; como podría ser el campus virtual de cualquier organización (el de la UOC, por ejemplo) . O las que están distribuidas a través de la red. Estas últimas requieren que diferentes equipos se pasen datos de una forma u otra entre ellos y logra que estos equipos ejecuten procesos de forma independiente. Entre las aplicaciones más populares podemos encontrar algunas como, E-mule, Bit Torrent o Napster, entre otros.
Antes de describir los requisitos que debe tener cualquier aplicación o sistema en una aplicación o ubicación distribuida, es conveniente realizar un breve repaso a la forma en que identificamos cada aplicación o sus componentes. Tenemos en primer lugar la dirección IP (dirección en Internet) que es única y viene especificada por 4 números, separados por puntos, pudiendo cada uno de ellos ir del 0 al 255 . Averiguarla es sencillo, por ejemplo; la ip de nuestro ordenador la podremos averiguar mediante el comando “ipconfig/all”. En mi caso –éste ordenador- mi ip es 192.168.1.36. Y es única; normalmente existe un “servidor de direcciones” DCHP al que el ordenador, de forma automática, le solicita una IP y evita las duplicidades. Hay otras opciones pero no son objeto de este trabajo.
Un concepto muy importante es el “Domain Name Solver” o DNS que nos va a facilitar las cosas, ya que se podría traducir por un “nombrador de IP’s. Este servicio está organizado de forma que existe una jerarquía de dominios u subdominios. La DNS traducirá el nombre a la dirección de internet correspondiente y a nuestro TCP y de, esta forma, nuestro PC sabrá donde ir. Hemos visto el concepto “ dirección IP” pero hay otro concepto básico; el puerto.
El puerto es el lugar, dentro de la máquina, donde podemos ir vía TCP y tiene dos bytes por lo que puede ser desde el 0 al 65535 (estándar del 0 al 1023 y específicos del 1024 al 65535). La comunicación entre los PC’s precisa de una dirección y puerto origen y otra dirección y puerto destino, este canal de comunicación lo llamamos “Socket”. Esta capacidad de comunicarse entre las máquinas consigue que, desde el más potente ordenador al mas modesto PC conectado a internet, todas las maquinas sean “hosts”; ofrezcan servicios a otros ordenadores conectados entre si.


2) Requisitos de las aplicaciones

Como paso previo a la exposición de las diferentes aplicaciones que tenemos en la red, sus sistemas y arquitecturas, expondré de forma breve los requisitos que deberán ser tenidos en cuenta dichos sistemas y aplicaciones. El conocimiento de ellas nos permitirá evaluar su impacto y permitirá escoger el diseño mas adecuado:
· Heterogeneidad: Diferentes redes, sistemas, plataformas o lenguajes deben poder interactuar entre sí
· Apertura: Debe posibilitar su crecimiento y extensión por la red.
· Seguridad: Una aplicación distribuida en la red es vulnerable. Deberemos considerar tres aspectos; confidencialidad, integridad y disponibilidad.
· Concurrencia: El número de usuarios, la demanda simultanea de aplicaciones (transacciones por ejemplo) no debe bloquear los recursos.
· Escalabilidad: El sistema debe permitir crecer en recursos y usuarios.
· Comportamiento ante fallos: En el caso de sistemas distribuidos debe permitir que, aún fallando un componente, el resto del sistema continúe funcionando.
· Topología de redes: Deberemos considerar el tipo de red para considerar si la aplicación será accesible o no.

Desde los comienzos, Internet se mostró como una herramienta de comunicación muy eficaz, siendo utilizada desde el principio por personas dispersas geográficamente. Si al principio fue un elemento estratégico militar, pasando a intercambio de datos entre centros universitarios; el desarrollo de protocolos (especialmente el citado TCP/IP) y herramientas ha ido mejorando y aumentando sus capacidades.
Empezando por el correo electrónico, las primeras listas de distribución, los grupos de noticias (los newsgroup), los inicios del Telnet, hasta los protocolos FTP. Y llegando a los navegadores y la tecnología WAP. Internet hoy en día ya forma parte de nuestras vidas.
Procedo a comentar las diferentes aplicaciones que podemos encontrar en Internet, como observaremos a lo largo de la exposición; la evolución de Internet se va plasmando en aplicaciones cada vez mas complejas.


3) Cliente-Servidor

Comenzaremos por la mas tradicional; la Cliente-Servidor.
En este modelo el proceso de trabajo se divide en, como mínimo, dos procesos que cooperan entre sí. Uno se encarga de proporcionar los datos que se le solicitan y de procesar los datos que se le envía. Este proceso se llama Servidor y lo llamamos así tanto al proceso en sí como al equipo que lo soporta. El otro proceso, el Cliente, se ejecuta en el equipo del usuario que maneja la aplicación e inicia la comunicación con el servidor. Sus principales funciones son; demanda de datos, presentación al usuario y enviar cambios, si procede, al servidor.
Para realizar todas estas funciones precisamos los dos componentes ya citados, Cliente y Servidor. Y por supuesto la infraestructura de comunicaciones.
Con esta definición, prácticamente cualquier aplicación distribuida, podría considerarse una aplicación cliente-servidor. Sin embargo reservamos éste término para designar la arquitectura interna de ciertas aplicaciones en las cuales los componentes lógicos de los procesos se distribuyen de la forma más sencilla. EL cliente valida, presenta y manipula datos mientras que el servidor actúa como “almacén” de datos. Este modelo en su sencillez presenta ciertas ventajas, por un lado la existencia de plataformas de hardware cada vez más económicas, con la ventaja de que se pueden integrar diferentes sistemas, sin la necesidad de que tengan que utilizar el mismo sistema operativo. Los clientes pueden ser de dos tipos en función de aquel que envía la petición; Cliente navegador o Cliente robot. Y aunque en ambos casos el usuario/cliente solicita y recibe la información que envía el servidor son, en origen, diferentes. En el primer caso es el usuario el que dirige la petición a través de navegadores como el Explorer o Firefox. Estos programas permiten una presentación amigable de los resultados, utilizan por defecto el protocolo http y suelen manejar cookies. En el segundo las peticiones son automáticas y se utilizan spiders y agentes inteligentes los cuales parte de una página principal y examinan los enlaces que encuentran; la información se utiliza posteriormente en otras aplicaciones de búsqueda como google o yahoo. Este tipo de cliente tiene, a veces, problemas de acceso a sitios web que no desean ser indexados y controlan el acceso al cliente robot.
Y en cuanto al servidor que da servicio a los clientes se trata de un programa (hablamos tanto de hardware como de software) que contesta y genera la respuesta http a la petición del cliente, involucrando múltiples elementos (bases de datos o sripts, por ejemplo). La secuencia básica es sencilla, el cliente se conecta y envía petición al servidor que recibe el mensaje http de petición; lo procesa y envía en forma de mensaje también http el resultado. Son capaces de manejar múltiples conexiones individualizando cada conexión. Los servidores más populares son Apache e IIS.
.
De forma resumida, ser observa como puntos fuertes de la aplicación;
1. Coste de implementación baja
2. Mejor rendimiento al tener la información disponible.
3. Menor cantidad de software, lo que mejora la rapidez.
4. Posibilidad de usabilidad tanto desde el PC, como una PDA o Teléfono (wap)
Obviamente también plantea puntos débiles; precisamente la interactuación de diferentes elementos de software y hardware puede generar errores y fallos en la comunicación. Hay escasas herramientas eficaces para la administración de los procesos; por lo que se puede llegar a una congestión de la red. Sin contar con la limitación de contenidos en el servidor, que puede limitar la cantidad de información disponible. Algo que no ocurre en el modelo que veremos a continuación y que comparte la información entre los diferentes nodos que componen la aplicación. Y por supuesto existe la preocupación de la seguridad.
Por ello, como aspectos que penalizan esta aplicación se observa;
1. Cada estación de trabajo está consumiendo recursos del servidor.
2. Menos eficiente al tener que esperar la iniciativa del cliente.
3. Una aplicación propia en cliente o servidor dificultará la comunicación.
4. Requiere cierto software entre equipos cliente.
La aplicación basada en este modelo gestiona la información ubicada en los servidores web y utiliza como interfaz páginas web. La colección de páginas se gestiona mediante dinámicas tipo ASP o PHP, por ejemplo, y están agrupadas de forma lógica para dar servicio al usuario. Los ejemplos más claros serían la venta de libros o música por la red ,o la venta de billetes de avión.
Por tanto, una aplicación cliente servidor tiene cada vez mas un ámbito de actuación mas limitado y deberá escogerse en casos muy específicos en los que lo que valoremos sea el rendimiento y la simplicidad. Si precisamos compartir funcionalidades o mejorar la distribución, por ejemplo, deberemos optar por un modelo más abierto y más distribuido.


4) Peer-to-peer

Pasamos a observar otra aplicación distribuida; la peer-to-peer (o P2P).
En el modelo P2P todos los componentes de una aplicación pasan a ser “iguales”. Los “iguales” (peers) pueden actuar como clientes o como servidores, según requiera la aplicación. Hablamos en este caso de redes centralizadas y distribuidas en las que las aplicaciones pueden comunicarse entre si, intercambiando información sin que intervenga ningún servidor central (ya vimos al principio que todos los PC’s pueden funcionar como hosts). En “peer to peer” todos los nodos son tratados de igual forma, lo que permite una colaboración global, compartiendo información y recursos. Normalmente existe un directorio (distribuido) que facilita el intercambio. Este tipo de arquitectura se hizo muy popular gracias a Napster. Se trataba de un sistema sencillo y práctico, al margen del tema legal que empezaba a preocupar (y preocupa). Tras Napster vinieron Gnutella, KaZaa y otros que, como E-mule, tienen gran aceptación.
Dentro de la aplicación podemos entender también varias formas de tipo de red P2P; las centralizadas, las descentralizadas y las híbridas. En el primer caso un servidor sirve de nexo de enlace entre todos los nodos y distribuye a petición de los nodos; “reparte juego”. Napster es el referente.
La descentralizada permite a todos los nodos ser cliente y servidor, no existe un enrutador y obviamente menor control. Aquí nos encontramos con los citados Gnutella o FreeNet.
El híbrido o mixto tiene un servidor que únicamente sirve de enrutador, ya que la información está almacenada en los nodos. Aquí encontramos Bit-Torrent como claro ejemplo.
En estos tipos de aplicación los usuarios tienen la posibilidad de ofrecer, pedir y recoger todo tipo de información y esto hace de este tipo de servicio sea muy popular. Un ejemplo claro es E-mule, el cual posee un código abierto y ofrece la opción de colaborar en el proyecto, siendo los servidores un punto de entrada a recursos y contenidos. Este programa permite comprobar errores al descargar y realizar intercambio con usuarios amigos. El éxito ha generado la aparición de muchos otros programas de corte similar; Limewire, Soulseek, Groove, WinMx, Edonkey2000, o el citado al inicio; Bit-Torrent.
Diferente a lo anterior es la mensajería instantánea que, aunque no exactamente de igual a igual si se realiza dentro de una misma plataforma de cliente a cliente. El caso mas conocido es el Messenger.
Las características principales de este modelo de manera general son:
· La ausencia de un servidor Central para el control.
· Los usuarios pueden comunicarse entre si.
· No existe organización jerárquica.
· La información puede estar alojada en diversos servidores.
· Se equilibra la carga entre los participantes.
· Utiliza mejor las redes de comunicación.
· Se duplica la información para hacerla mas accesible.
· La caída de un nodo no bloquea el servicio.
· Optimiza los recursos.
· Escalabilidad y disponibilidad alta.
· Privacidad y anonimato por todas las partes.
· Robustez
Con una aplicación así ya mejoramos considerablemente la anterior de cliente/servidor y observamos claras ventajas:
1) Al incorporarse un nodo a la red se le da lo mismo que al resto, por tanto no obliga a reestructurar la red cuando se añaden nodos.
2) La Comunidad P2P tiene la capacidad de organizarse de forma natural en miles de redes más pequeñas, también virtuales, que pueden agruparse en función de sus intereses específicos. Si añadimos que los nodos no precisan estar conectados generamos una red con gran potencial de crecimiento.
3) Al haber una menor posibilidad de congestión y auto organización se crea una escalabilidad más sencilla.
4) Al ser conexiones punto a punto y de igual a igual no existen cuellos de botella.
Pero también puede plantear problemas:
1. Una mala calidad del servicio, al no haber control que puede derivar en :
- Datos corruptos
- Pérdida de datos
- Peticiones sin respuesta
- Corte del servicio si el nodo interrumpe su actividad

2. La estructura tan descentralizada lleva a una gestión mas compleja, mas cara y mas insegura como pueden ser:
- Virus
- Gusanos
- Troyanos
- Spyware
- Adware
Observamos una evolución clara frente al cliente/servidor, pero también sigue ofreciendo inconvenientes que deben ser tenidos en cuenta por el usuario. Y que, aunque a nivel social está teniendo mucho auge, a nivel comercial evoluciona lentamente.



5) Grid

Llegamos a uno de las últimas aplicaciones que nos están llegando; el Grid.
Leyendo diferentes artículos, se relaciona el Grid con la nueva generación de Internet, especialmente a partir de la aparición del nuevo protocolo Ipv6, que desarrolla un internet más rápido y accesible. Ello es debido a la importancia que tiene una elevada conectividad para esta aplicación, como veremos mas adelante.
El Grid (computación grid o “grid computing”) tiene elementos diferenciados con el resto de aplicaciones: Básicamente ofrece acceso a recursos computacionales sin que el usuario conozca la máquina que esta ofreciendo estos recursos. Es como si un ordenador fuese parte de un enorme ordenador. Esto permite aprovechar los momentos de baja carga de todos los ordenadores conectados. Una plataforma Grid de altas prestaciones permite involucrar a un conjunto heterogéneo de nodos que pueden estar en ubicaciones diferentes, poseer estructuras diferentes e incluso aplicaciones distintas.
El sistema permite el uso simultáneo de muchos ordenadores para aprovechar su potencia conjunta y realizar cálculos complejos. El caso más conocido es el programa SETI@home, en el que millones de personas están conectadas en un experimento científico en búsqueda de Inteligencia extraterrestre, o el programa Great Internet Mersenne Prime Search (GIMPS) cuyo objetivo es descubrir el mayor número primo.
La tecnología grid posibilita la resolución de problemas que serían demasiado costosos a nivel de infraestructura computacional y gestión para ser resueltos por una única máquina o un único clúster de estaciones de trabajo.
La analogía con la red eléctrica es evidente. Cualquier nodo conectado, desde cualquier lugar, con funcionamiento adecuado es asequible y usable. En pocos años esta tecnología debería permitir usar todo tipo de recursos que se encuentren distribuidos por la red, sean discos, red o dispositivos. Esta potencia deberá generar nuevas ideas de negocio, especialmente cuando hablamos de desarrollo de organizaciones virtuales, proveedores de recursos o demanda de los mismos. Imaginemos que varias empresas quieren forman una organización con el objetivo de colaborar en un proyecto común, compartiendo aplicaciones, datos y recursos computacionales. El trabajo conjunto logrará resolver problemas que, de forma individual, serían inabordables, al margen – pero no menos importante - de que los recursos propios se podrán amortizar antes e incluso utilizar aquellos que se encuentren infrautilizados. Las posibilidades para empresas que solicitan servicios en Tecnologías de Información son enormes, con la posibilidad cierta, mediante esta aplicación, de “subcontratar” recursos y servicios. El sistema grid se incrementa en escala y esa potencia requiere una constante autoconfiguración, tolerancia a caída de nodos conectados y tiene una gran escalabilidad, parámetros todos estos, en los que está bastante por delante de la aplicación peer to peer.

Las ventajas que ofrece la aplicación grid, por tanto, son claras;
· Una red grid no puede quedar obsoleta ya que todos los recursos se aprovechan.
· Esta aplicación brinda a sus usuarios velocidad, lo que en muchos aspectos supone una ventaja competitiva, sea en productos o servicios
· La posibilidad de compartir, acceder y gestionar información mediante la colaboración y la flexibilidad operacional es sencilla; ofreciendo recursos, personas y datos heterogéneos que pueden ser usados cuando sean necesarios.
· Seguridad a través de los “intergrids”
· Incremento exponencial de la potencia computacional sumando ordenadores de pequeño o mediano nivel.
· Tolerancia a fallos, si un nodo se colapsa, transmite su tarea a otro, con lo que se cumple la condición de red flexible y resistente.
Pero no está exenta de ciertos incovenientes, entre ellos:
· El paralelismo a la hora de ofrecer servicio puede ser un problema para aplicaciones locales.
· Para que el grid sea plenamente operativo precisa de servicio a internet con conexión 24 horas durante 365 días y con banda ancha.
· Además si hablamos de “Grid computing” necesitamos disponer de cierta seguridad propia, VPN, firewalls, encriptación (algo que no soportaba por ejemplo la primera aplicación citada; cliente/servidor), políticas de seguridad, etc.…
· La aplicación Grid debe posibilitar el manejo de cualquier recurso, sino deja de ser eficaz.
Es evidente que la aplicación Grid supone un avance con relación a otras aplicaciones, debido a su versatilidad, usos posibles y combinación de potencia, capaz de lograr una capacidad global inviable para un solo ordenador, aunque su dificultad todavía para sincronizar los procesos de todos los equipos de forma simultanea le resta capacidad, pero es escalable y tiene posibilidades de mejora. Su uso en el campo de la investigación se aprecia evidente: la simulación numérica tiene un enorme valor tanto en procesos de diseño como en cálculo de estructuras. Sea para aplicaciones meteorológicas, bioinformáticas u otro tipo, la precisión depende de la potencia total que podamos conseguir de los ordenadores tanto en almacenamiento como en proceso. Teniendo en cuenta los desafíos a los que nos enfrentamos durante los próximos años, es una aplicación a la que se prevé un gran crecimiento, que requerirá una labor de investigación y desarrollo que permita aprovechar toda esa potencia en red que estamos citando. Parte con una ventaja importante; no pretende competir con tecnologías existentes, al contrario, se trata de interconectar todos los recursos de los diferentes nodos y este despliegue de capacidades debe facilitar la superación de problemas científicos y técnicos.


6) Código Móvil

Finalmente comentaremos la influencia del código móvil en este tipo de arquitecturas.
Básicamente, el código móvil reside en un servidor WEB que cuando recibe la petición de un navegador (cliente o nodo) se descarga desde ése servidor ejecutándose en el cliente. Es una forma de superar las limitaciones a las que pueden enfrentarse algunas aplicaciones y puede mejorar de forma considerable el proceso de datos. Muchas de esas aplicaciones precisan de esa maquina virtual para poder ejecutarse. Las formas de código móvil más ampliamente utilizadas en Internet (sea la red, extranet, diferentes tipos de hosting o actividades comerciales) son los applets de Java, los controles ActiveX y VBScript.
Este tipo de tecnología que funciona de forma activa en el proceso no esta exenta de riesgos. Por un lado es complicada la protección, ya que puede vulnerar elementos de seguridad como podrían ser los firewalls o la encriptación de datos. Por otro puede controlar los movimientos del cliente, privándole de la confidencialidad.
Este tipo de herramientas puede, además, contener contenidos activos como virus, troyanos, gusanos, applets de Java y controles ActiveX maliciosos, o contenidos pasivos consistentes en correos electrónicos ofensivos, inapropiados o spam.
Tras todo lo citado y como resumen de, podemos concluir que cada aplicación puede tener un uso específico. Con sus puntos a favor y en contra todas ellas poseen argumentos para tener su público cliente, en función de lo que precisemos en cada momento. Si buscamos sencillez y economía de estructura, no compartiendo más información de la precisa, con mucha usabilidad, de forma rápida y con un servidor potente; el sistema cliente/servidor clásico nos podrá resolver la situación. Si la disponibilidad de grandes servidores dedicados a distribuir contenidos y recursos resulta compleja, podemos dispones de la arquitectura Peer-to-peer, donde los ordenadores clientes, funcionando como nodos interconectados, son servidores y clientes a la vez. Pero debemos asumir las dificultades que aporta su seguridad y gestión. Lo último, la tecnología Grid, aunque todavía en fase de crecimiento, aporta una potencia que sería impensable obtenerla de forma individual, pero es exigente con la infraestructura que debe disponer cada nodo, tanto en comunicaciones, como en hardware y software. El código móvil, por último, ayuda a completar la ejecución de tareas, pero hay que valorar los riesgos que corremos si ejecutamos algunas aplicaciones corruptas.



7) Bibliografía:

Artículos :
-Conceptes tecnològics bàsics d’Internet. Joan Manuel Marquès i Puig (Document UOC)
-Sistemas de ficheros distribuidos. Universidad del País Vasco
-Una visión global de la tecnología grid. Universidad Complutense de Madrid
-Computación Grid. Universidad Politécnica de Madrid.
-Conceptes Avançats de Sistemes Operatius. Universitat Politécnica de Catalunya
-Arquitecturas, paradigmas y aplicaciones de los sistemas distribuidos. Joan Manuel Marquès i Puig y otros.
-Sistemas Peer to Peer y Grid. Facultad de Informática de Universidad Nacional de La Plata
-Introducción a la programación distribuida. Universidad Europea de Madrid.
-research.calit2.net/cibio/archived/thegrid.pdf –
Webs:
- http://setiathome.ssl.berkeley.edu/
-http://www.emule-project.net/home/perl/general.cgi?l=17
-http://www.gridcomputing.com/

© Ramón García Espeleta
.








Comentarios

Anónimo ha dicho que…
Muy interesante!

Entradas populares de este blog