apuntes_alexbm8_20_02_09

Comenzamos la clase haciendo un repaso por los diferentes recursos disponibles para editar y acceder a todos los contenidos relacionados con la asignatura. Por ejemplo, para publicar los apuntes de clase existen tres alternativas básicamente: crear nuetro propio wiki (en **http://www.wikispaces.com** ), hacerlo desde nuestro blog (tal y como yo estoy haciendo) o directamente en la wiki de la asignatura (aún no oy miembro y por eso no estoy haciéndolo de esta forma: **http://aap-ugr-2007.wikispaces.com/** ). Una forma de centralizar todo el contenido que los alumnos creen es mediante el planet de la asignatura: ( [|**http://geneura.ugr.es/~jmerelo/asignaturas/AAP/planet.cgi**] ). El planet se compone de dos elementos principales: una base de datos y una "araña", la cual se encarga de consultar periódicamente (mediante un "demonio" o "cron") los feeds RSS de cada blog personal. Un aspecto importante a resaltar del planet es que cuando se edita un post, no se notifican dichos cambios, de forma que sólo aparecerán las nuevas publicaciones. Después de esta introducción, se continuó con el apartado 1.2 de computación distribuida, dentro del cual se habló de la computación nube. En la computación remota tradicional estamos limitados por los servicios contratados (si por ejemplo tenemos un pico de demanda se debe pasar a un nivel de hosting superior), sin embargo, en la computación nube pagas por lo que usas. Es usada en webs tan conocidas como la de slideshare, y de hecho, el portal de Amazon también ofrece estos servicios (Elastic Compute Cloud), donde se pueden comprar instancias y pagar por tiempo de CPU, de forma que si se alcanza un uso elevado, se pueden instanciar más CPUs. Para guardar todo el trabajo generado existen los servicios de almacenamiento (S3), donde se cobra por espacio y por transferencia. Tmabién existe la posibilidad de gestionar bases de datos con los resultados. La utilidad social twitter usa estos servicios de computación nube, descargndo recursos del S3 de Amazon. El siguiente punto del que se habló fue los nuevos tipos de hosting. Anteriormente existían dos tipos de hosting: compartido (una misma máquina aloja diferentes sitios web) y dedicado (housing, que no tiene mucho que ver con el "sìmpático" doctor). Hoy día existe otra posibilidad, los servidores privados virtuales (ver más información en [|**http://www.hispaweb.net/servidor-privado.html**]). Un apunte importante que se comentó en esta clase fue la posibilidad de crear "mochilas", es decir, almacenar en una memoria portátil una determinada configuración del SO, creando algo así como un "ordenador virtual". Aquí podéis encontrar un completo tutorial sobre MojoPac ([|**http://www.mojopac.com/**]), un ejemplo de esta interesante aplicación: [|**http://www.idg.es/pcworld/(Tutorial)_Mojopac._Lleva_contigo_tu_PC_en_cualqui/art187492.htm**]. Por último, y tras saltarnos la parte de computación paralela y SMP (que ya vemos en otras asignaturas como Arquitectura de Computadores), pasamos a comentar algunas de las "falacias" de la computación distribuída, que vienen a decirnos cosas tan importantes como:
 * La red no es fiable (siempre debemos capturar excepciones y prevenir los errores).
 * La latencia es no nula y además variable (de ahí la gran utilidad de AJAX, que no bloquea al navegador mientras hacemos peticiones, aprovechando mejor el tiempo de conexión).
 * Aunque hoy día el ancho de banda se ha incrementado notablemente, no es infinito, los canales se pueden saturar, por lo que es importante hacer una gestión eficiente del mismo.
 * La red es insegura en todos sus niveles, por lo que debemos tener en cuenta todo tipo de mecanismos de encriptación, autenticación, comprobación de errores, etc. Sirva como ejemplo el proyecto SETI de búsqueda de vida extraterrestre, el cual envía el mismo trabajo a varios destinatarios, de forma que se pueda cerciorar de que los resultados devueltos no han sido manipulados adrede.
 * La computación distribuída no tiene una topología fija porque el comportamiento de los clientes no es estático, si bien la red, de forma estadística, se puede comportar con regularidad. No podemos saber exactamente cuántos enlaces hay, pero sí podemos saber qué nodos van a tener más enlaces y cúantos serán aproximadamente. En relación co este punto está el concepto de "mundo pequeño", es decir, podemos crear topologías cerradas que hagan que incluir nuevos nodos no incremente significativamente la distancia media entre ellos (el crecimiento de la distancia es logarítmico). Las redes P2P se basan en este concepto, lo que las hace muy robustas frente a la caída o la supresión de nodos. Un ejemplo de red pura P2P es la red Kademlia de Emule (más ejemplos de redes P2P en [|**http://ciberperro.blogspot.com/2009/02/sistemas-p2p-nuevas-tendencias.html**]).
 * No existe un único administrador, por lo que tenemos que tener en cuenta que diferentes administradores implican diferentes versiones de protocolos en clientes, servidores, etc., es decir, debemos ser adaptativos. Por ejemplo, crear código diferente en función de si el acceso se realiza desde PDAs, móviles o desde PCs.
 * EL consumo de energía en los tiempo que corren es crítico, si no te lo crees mira estos posts: [|**http://eliax.com/index.php?/archives/5404-Google-pensando-en-granjas-de-servidores-oceanicos.html**] y [|**http://felixjtapia.org/blog/?p=2100**]
 * La red no es homogénea, y de hecho, debemos aprovechar esta heterogeneidad para ue diferentes nodos realicen distintas tareas en base a sus capacidades, tal y como se trabaja con los recursos humanos.
 * (Continuará en la próxima clase...)