Aviso: este post es simplemente una idea que se me ha ocurrido y que quería compartir, posiblemente no digo más que tonterías, pero bueno, quizás mis tonterías puedan tener algo de sentido común.
Estaba leyendo un post de High Scalability acerca de cómo construir web altamente escalables. El artículo, entre otras muchas cosas habla sobre la posibilidad de crear una red social que tenga la capacidad de soportar miles de millones de usuarios.
Esta magnitud de usuarios puede parecer futurista, pero los datos que aporta sobre Facebook y el crecimiento en número de conexiones a nivel mundial, hacen que estos datos puedan ser posibles en unos cuantos años:
[…] Para hacer este mágico trabajo, Facebook gasta cientos de millones de dólares en datacenters, tienen más de 30.000 servidores, 300 millones de usuarios activos, 80.000 millones de fotografías, sirven 600.000 fotos por segundo, tienen 28TB de caché, generan 25TB de logs por día y su caché sirve 120 millones de queries cada segundo.
A mi estos números me asustan, no sólo por la cantidad en sí de todo: servidores, fotos, queries, … sino porque si por algún casual alguna vez llego a estar metido en un proyecto de esta envergadura no sé si seré capaz de estar a la altura.
Pero si Facebook da miedo, la gente de Google son de otro planeta:
El sistema que Google está construyendo se llama Spanner, La meta de Spanner es soportar 10 millones de servidores, 1013 directorios, 1018 bytes de almacenamiento, extenderlo entre cientos y miles de localizaciones al rededor del mundo para aguantar 109 clientes.
El problema de las redes sociales es que los datos son muy activos: dependen de los usuarios y sus “amigos”, y al estar los usuarios siempre activos, los datos son escasamente cacheables y su recuperación altamente problematica. Si a esto le sumamos la cantidad de usuarios que puede llegar a tener una red social exitosa, hace que me plantee lo siguiente: ¿vamos por el buen camino?
Últimamente se habla mucho de la nube o el cloud computing, pero el planteamiento que a veces se plantea para mí no es el más correcto: desperdigar mi aplicación por Internet (mi aplicación en mi servidor, la BD en Google y las imagenes en Amazon). Yo no estoy en contra de la nube, ni mucho menos, pero quizás en vez del planteamiento guay2.0 que a veces se le da, se podría replantear de distinta forma: el P2P. ¿Por qué es necesario que toda mi información, amigos, fotos y vicios estén en Facebook si no tengo necesidad de ello? En Facebook hay 300 millones de usuarios activos y yo tengo 100 amigos (bueno, yo no tengo ninguno porque no uso Facebook, pero esta es otra historia), eso es el 3×10-5% de la capacidad de Facebook. ¿De verdad necesito Facebook?.
¿Qué idea absurda planteo? La comunicación e intercambio de información entre webs y no entre usuarios. Es decir, yo tengo mis datos en un servicio, y este servicio comparte los datos con un protocolo parecido al P2P (el W2W) con otros servicios (ya sea el mismo u otros distintos). El servicio puede ser Facebook, Twitter, mi propio servidor o blog, una aplicación que tengo en el ordenador conectado todo el día, mi móvil de ultimísima generación, el Kindle, el netbook o una web genérica que se encarga de almacenar mis datos y fotos para que esté siempre online. Cuando yo me conecto a mi servicio y quiero ver lo que han escrito mis amigos o ver sus fotos, mi servicio lee mi lista de amigos (desperdigados en cientos de servicios) y accede a los servicios de cada amigo para recuperar la información. ¿Qué posibilidades ofrece el P2P? que si los datos no los tengo disponibles, se puedan recuperar de otro cliente. En el W2W sería igual, si mis datos no están disponibles porque mi servicio está caído, que se puedan recuperar mis datos de mis amigos, siempre que los permisos lo permitan (ambos son amigos míos o mi perfil es público).
¿Qué se gana con el W2W?
- No tengo que darme de alta en Facebook porque tenga un amigo que está registrado y es allí donde comparte sus fotos, mi servicio se conectará a Facebook para recuperar sus fotos.
- No hay necesidad de grandes aplicaciones con necesidad de soluciones drásticas de escalabilidad porque la información se reparte en muchos nodos/servicios.
- Puedo seguir a mis amigos de Twitter desde otro servicio de microbloggin que me guste más
-
- No hay necesidad de registrarse en cientos de aplicaciones para poder estar conectados con todo el mundo
- Sería algo abierto y distribuido
Quizás a muchos les chirríe esta idea, sobre todo ahora que parece que el futuro está en tenerlo todo en la web, pero viendo la situación actual, los cientos de millones de dólares gastados en datacenters, los problemas de rendimiento de Twitter, los cambios de políticas de privacidad de Facebook, y otras historias, creo que mi idea, a parte de absurda, puede tener algo de futuro.
Aunque el término W2W es algo que me acabo de inventar, no sé si a alguien se le ocurrió lo mismo antes que a mi, no pretendo ser innovador ni original, así que si a alguien conoce algún post que diga lo mismo, por favor que me lo envíe.
Por cierto, interesante web que plantea algo similar para crawlear webs: 80legs.