Construyendo webs escalables

«Building Scalable Websites» es el nombre del libro de moda en Silicon Valley. Un libro que todo desarrollador web debería tener en la mesa de trabajo y que servirá para que tu proyecto «web2.0» no se venga abajo por tener demasiado éxito.

Si algo he aprendido desde que estoy trabajando en Technorati es que es muchísimo más difícil y costoso desarrollar y mantener una aplicación web que es usada por varios millones de personas al día que una aplicación web usada por «tan solo» unas decenas de miles de personas al día.



Para no fracasar en el paso de ser una web de pocos usuarios a ser una web usada por millones hay que saber «escalar» de forma correcta, con el mínimo dinero posible, y rápidamente. Los que mejor saben hacer esto son la gente de Google, Yahoo y similares que dan servicio a miles de millones de peticiones al día sin apenas problemas. Por ejemplo, en este artículo tenéis la apasionante historia de la evolución del código – infraestructura – servidores de Myspace, quizás una de las aplicaciones web que más rápidamente ha tenido que «escalar» en los últimos años.

El libro «Building Scalable Websites» está escrito por el programador jefe de Flickr (La mente principal que ha trabajado desde el comienzo de Flickr), otra aplicación web con una estabilidad y capacidad de procesar enormes cantidades de datos sin precedentes. Lo bueno del libro es que está escrito en un estilo muy directo, sin andarse con rodeos, explicando problemas con los que se encontraron al montar Flickr y cómo los solucionaron con ejemplos concretos reales (Mostrando código fuente de Flickr). Explica cómo montar un API, como montar un entorno de desarrollo, cómo escalar Mysql, balanceo de cargas, protección contra ataques, internacionalización sin morir en el intento, sindicación, escalando Apache y Php, caching, messaging services etc.

Flickr sirve 5.000 páginas por segundo, tiene 100.000 líneas de código php en funcionamiento, y sus usuarios generan 60.000 transacciones en las bases de datos por segundo. Aun así es una de las aplicaciones web más estables que conozco. Aprender de la mente que ha creado tal maravilla es un placer, sin duda uno de los mejores libros técnicos que conozco.

33 respuestas a «Construyendo webs escalables»

  1. Hmm… parece interesante, sobre todo viendo las chapuzas con las que convivimos día a día xD. Eso sí, ¡la portada no me atrae NADA!

  2. no soy desarrollador web (tiro mas para la rama de software) y siempre me pregunte cuantos servidores necesitaban aplicaciones webs que tienen tanta demanda como flickr , youtube , etc.
    y como se hace para sincronizarlos.. se usan clusters ? o para eso sirven los «messaging services» que mencionas ? , o acaso un frontend principal que deriva a los usuarios a los child servers que estan mas desocupados ? (creo que se entiende esta ultima idea)

    gracias si alguien puede responder mi duda.

  3. Hola Hector…
    Estoy deacuerdo en que la escalabilidad es clave hoy en dia para todo proyecto web medianamente serio, ya que la internet es una red accesible por millones de personas y el numero de peticiones a la aplicacion puede pasar de unos ordenes de magnitud a otros «sin que te des cuenta».

    De hecho en I D en siempre la escalabilidad es uno de los fatores mas prioritarios para el exito o aceptacion de un proyecto en todos los paises.

    En Japon, concretamente en mi laboratorio, al ser dedicado a la internet (http://inet-lab.naist.jp/) son especialmente exigentes con este requisito. Lo que pasa que normalmente no estamos hablando a nivel aplicacion.

    La verdad Kirai es que me gustaria que publicaras un poco por donde van los tiros de la arquitectura propuesta por el autor cuando acabes de leerte el libro… has despertado mi inquietud cientifica !! (o tan solo curiosa, quien sabe…).

    Ademas… los post de ciencia los tienes un poco abandonados ultimamente.

    Un abrazo y buenas noches.

  4. AH! que se me olvidaba

    Para KARAK…

    Yo no estoy seguro al 100% pero casi seguro que se debe usar algo parecido a lo que tu propones (por cierto,si, se te entiende), pero algo mas completo.

    Supongo que entre medias del front-end y los server de backend (childservers) deberia de haber unas caches y balanceadores de carga para asegurar los niveles desde el 3 hasta el 7.Y en el front end una red de varios servidores con las tipicas medidas de back-up y mirroring.

    Respecto al algoritmo interno de la aplicacion web ya no estoy tan seguro, yo no soy ni de web, ni de software yo soy un «IP-man» hasta la medula 😉 pero supongo que la arquitectura de HA sera algo asi.

    Un saludo desde Japon !!

    PD : Hector… aunque no este siendo muy comentado, para mi este es el mejor post de la semana sin duda !!

  5. Flirck cayó ayer por la noche cuando quería subir las fotos de carnaval… para una vez que cae, me toca a mí… (al menos es mejor que fotolog que cae un día sí otro también…)

  6. Nacho, los libros de O´Reilly son editados en castellano por Anaya, pero no estoy seguro si este ya lo habrán publicado. En inglés podrás encontrarlo probablemente en http://www.cocodrilolibros.com, una tienda de libros de tecnología en Madrid que da servicio a toda España. Por cierto que O’Reilly tiene otros geniales libros como el Camel Book de Perl 🙂

  7. «Si algo he aprendido desde que estoy trabajando en Technorati es que es muchísimo más difícil y costoso desarrollar y mantener una aplicación web que es usada por varios millones de personas al día que una aplicación web usada por “tan solo” unas decenas de miles de personas al día.»

    Para eso hace falta irse a Japon y trabajar en Technorati???
    Vaya tela….que aprendiste en la carrera?

    Por cierto, dudo mucho que Technorati la usen millones al dia.

  8. gracias por la aclaracion flapy ^^
    voy a tener que leer un poco mas sobre «pingüinos» e «indios apaches» 😛

  9. perdon por el doble comentario.

    Para «Manuel» : para fortalecer los conocimientos teoricos siempre se necesitan conocimientos practicos y la mayor cantidad de experiencia posible.
    Acaso sabes exactamente cual es la diferencia de inversion entre un proyecto de servicios web «normal» (por asi decirlo) y uno de la gama de Technorati , youtube , flickr ?
    Para que lo sepas , hoy en dia se inician cientos o miles de proyectos webs en internet que poseen similitudes con proyectos existentes y muchos fracasan , a lo que se refiere hector con la utilidad del libro , es que de un dia para el otro tu web que originalmente fue un proyecto de prueba preparado para soportar un maximo de cientos de miles de personas , puede llegar a fracasar en pleno exito solamente por que inicialmente , No fue preparado para tenerlo 🙂

    en cuanto a tu comentario sobre Technorati , me gustaria que leas antes de poner en duda las palabras de los demas.
    http://es.wikipedia.org/wiki/Technorati

  10. Estoy teniendo problemas de escalabilidad y administración de proyecto. Ambos a escala microscópica, pero la verdad es que me podría hacer mucho bien este libro y muchos más, porque me estoy dando cuenta de que no tengo ni idea de ingeniería del software.

    Cosas del intrusismo profesional.

  11. Realmente interesante. Hace poco puede ver un powerpoint de como creció Ebay. Creo que se puede aprender mucho de todos estos sitios tan enormes y aplicar algunas ideas a sitios menos grandes. Gracias por la información Kirai.

  12. «Si algo he aprendido desde que estoy trabajando en Technorati es que es muchísimo más difícil y costoso desarrollar y mantener una aplicación web que es usada por varios millones de personas al día que una aplicación web usada por “tan solo” unas decenas de miles de personas al día.»

    ????????
    no es obvio hector???

  13. Karak,sabes tu esa difencia de inversion? Yo si, entre otras cosas porque trabajo en uno de los Big3….

    Crees realmente que es necesario trabajar en Technorati para saber que es mas dificil y costoso hacer una cosa para miles que para millones????
    Una cosa es reafirmarte en algo que es obvio, pero decir que gracias a Technorati has aprendido esa leccion me parece de los mas pelotero y penoso que he leido hace tiempo, viniendo de un tipo como Hector.
    Si tu sigues pensando que eso es normal (no se porque esa mania de defender a los demas, como si ellos no pudieran hacerlo solitos), no merece la pena seguir discutiendo contigo…
    Yo aprendi cuando era joven que era mas caro celebrar una fiesta para 10, que para 1000, pero a lo mejor no es lo mismo.

    Respecto a Technorati, el que deberias de leer mejor eres tu, aparte de que tu enlace de la wikipedia esta desfasado.Tienes que actualizarte un poco amigo.
    Una cosa es «trackear» millones de blogs, que hoy en dia son mas de 60, y otra que te usen VARIOS millones de personas al dia como dice Hector…que es bien diferente.Y de lo que dudo.
    Entiendo como VARIOS, siendo bueno, mas de 2 millones de usuarios unicos al dia.

  14. Ultimamente estoy algo enganchado a Flickr, es sorprendente lo que llegas a ver por ahi y encima lo bien que va.

    Es cierto que hoy día si no haces las cosas escalables mueres el primer día por así decirlo, nadie se quiere pillar los dedos cuando alguien necesita un producto nuevo sobretodo si es una empresa si luego no puedes expandirlo a tus necesidades (ya sea código cerrado o abierto).

    Como off topic, ¿Flickr se queda con los derechos de tus fotos al subirlas o se reserva el derecho a utilizarlas en lo que quiera? Lo digo porque estaba pensando en empezar a subir fotos mias, pero paso de regalarlas al primero que llega y que las use para temas comerciales por ejemplo.

  15. Pues he estado mirando en la web de Anaya y no encuentro ese libro.. no se si es por que aun no lo han editado en castellano o si es que la web esta desactualizada…

    Sería interesante leerlo, mas que nada por tener otro punto de vista más sobre nuestro pan de cada día.

    Yo creo que cada uno tiene que «montarse» su propio punto de vista de como y hacia donde ha de dirigir su/s trabajos y de que manera, todo lo que puedas leer o te puedan decir son puntos de vista.

    Por mucho que te cuenten en un libro, en lo que vas a creer con efusividad es en lo que TU te creas, por mucho que intentes llevar a cabo algo semejante, nunca será igual.

    Eso si, siempre aceptando criticas constructivas y consejos, que nunca están de menos y eso no hay dinero que lo pueda pagar 😉

    Saca tu punto de vista my friend!

  16. «Crees realmente que es necesario trabajar en Technorati para saber que es mas dificil y costoso hacer una cosa para miles que para millones????» -> Yo no he dicho eso, hay cosas que se pueden aprender de muchas maneras.

    Una cosa es reafirmarte en algo que es obvio, pero decir que gracias a Technorati has aprendido esa leccion me parece de los mas pelotero y penoso que he leido hace tiempo, viniendo de un tipo como Hector. -> Tampoco he dicho que sea gracias a Technorati, he dicho que trabajar en esa empresa me ha permitido aprender sobre ciertas cosas en más profundidad. Si NO APRENDIERA nada, me largaría inmediatamente.

  17. Solo una pregunta a Manuel… más que nada por curiosidad: ¿Y tu en la carrera estudiaste lo que en la ciencia económica se conoce como utilidad marginal?

    Yo sí y por eso entiendo que hacer una fiesta para 1000 es más cara que para 10 no es siempre obvio ya que en este caso lo que pasa es que el invitado #990 es más caro que el invitado #3 y de ahí viene lo sorprendente y lo que no siempre se produce y que por lo tanto es bueno remarcar. De hecho lo “normal” es que ocurra al revés, que mantener un servicio para mucha gente sea más barato que para poca gente.

    Mantener un servicio para millones es proporcionalmente al número de personas que lo usan diariamente más caro que mantener un servicio para miles.

    Antes de que me lo digas… no defiendo personas, defiendo ideas y argumentos.

    Saludos

  18. Hola,

    Yo debo reconocer que al leer «tal cual» lo de miles y millones me ha parecido igualmente una perogrullada, aunque leyéndolo de forma más amplia se entiende mejor, pese a que por deformación profesional me siga pareciendo obvio :).

    Hidalgo, eso de que mantener un servicio para millones sea mas caro por persona que para mantenerlo para miles no lo veo muy claro, no digo que no sea cierto, pero es que extrapolando sería ciertamente imposible mantener algunos servicios, ya que su coste sería impagable, que hoy en dia se usan, funcionan y alguien los paga. ¿Algun estudio o referencia para que lo pueda entender?

    «no soy desarrollador web (tiro mas para la rama de software)» ¿Y que crees que hace un desarrollador web? 🙂 ¿Paginitas HTML con el Dreamweaver?

    Interesante el libro, habra que echarle un ojo.

  19. Se me queda cara de pez sólo viendo la portada… Estos de Oreilly se lucen siempre con las portaditas. Un día ponen a la Carmen de Mairena ya verás…

Los comentarios están cerrados.