apuntes+santiggd+27-2-08

Tras comprobar el funcionamiento, ahora sí, del programa en ruby sobre geonames comenzamos con el nuevo termino de cloud computing.

La idea del cloud computing es que puedas comprar recursos computacionales y pagar según el uso. El uso se hace de una especie de nube de recursos, de donde vas cogiendo los recursos. En la práctica lo que se utiliza es la virtualización, de forma que según los recursos que necesites abres más o menos ordenadores virtuales. El cobro se suele realizar según transferencia y tiempo de computación, teniendo ventajas como que únicamente pagas por el uso que le das, además de la escalabilidad.

Amazon por ejemplo tiene un servicio de cloud computing, Amazon EC2 (Amazon Elastic Computing Cloud). Paginas como Twitter utilizan este tipo de servicios, de forma que al final pagan por las transferencias realizadas, ofreciendo gran escalabilidad dependiendo de la demanda. Esto está cambiando un poco la forma de ver la red, ya que en lugar de comprarte un servidor, puedes contratar un lugar para almacenarlo. Esto esta haciendo que las grandes empresas como google o yahoo esten apostando por este sistema.

Los sistemas distribuidos se pueden clasificar por la forma de acceder a los recursos, de forma que el acceso se compone de tres fases, descubrimiento, disponibilidad y comunicación.
 * Tipos de sistemas de computación distribuida**


 * Descubrir un recurso consiste en conocer de su existencia por medio de algún mecanismo. El descubrimiento se puede hacer de diferentes formas, como en la red emule donde hay servidores donde se encuentra la información sobre los pares, o se podría hacer de forma centralizada como sucedía con napster, donde toda la información se almacenaba en un servidor central, lo que realmente lo hace muy vulnerable. La distribución en los nodos se suele hacer como redes de potencia, que se ven en la naturaleza, y que también se da en las redes de comunicación.


 * La disponibilidad se refiere a la relación de un recurso con uno o varios nodos. Por ejemplo un URL solo está disponible en un nodo. Vemos la forma de un URL, donde podemos distinguir distintos parámetros protocolo:sitio:puerto/camino#fragmento?query. Sin embargo en redes P2P los recursos tienen un hash ya que el recurso está distribuido.


 * En tercer lugar, debe darse la comunicación del recurso a través de la red. En el caso de P2P esta comunicación se produce de forma distribuida. Por ejemplo, en los sistemas de chat la comunicación se puede dar de forma centralizada como IRC o MSN Messenger, en contraposición de por ejemplo el chat de Jabble, donde cada usuario se identifica junto con el servidor en que esta, de forma que la comunicación cuando hay mucha gente puede darse de forma descentralizada.

A partir de la clasificación anterior, podemos ver distintos tipos de sistemas distribuidos.


 * **Bittorrent:** se trata de un sistema que requiere de un tracker para descubrir recursos, pero luego la red de pares se forma en torno a cada fichero.


 * **Chord:** utiliza tablas de hash distribuidas, de manera que la red tiene una topología fija, con una interfaz simple.


 * **SETI@Home:** se trata de un proyecto que se compone de un sistema centralizado para realizar cálculos sobre las emisiones recibidas del espacio.