Dos formas de programar, optimizar al máximo frente a salvar los problemas de rendimiento a base de hardware. Dos noticias han llamado mi atención últimamente, por una parte Ricardo Galli de meneame.net asegura toda su página está alojada en un sólo servidor, lo que demuestra un gran trabajo de optimización y por otra parte un responsable de Slashdot aconsejó que no debe perderse demasiado tiempo en realizar optimizaciones al precio que está el hardware hoy en día, que es mejor dedicar el tiempo en desarrollar nuevas funcionalidades para nuestros productos.
Optimizar es un trabajo que lleva mucho tiempo (=dinero) pero que a largo plazo si nuestro crecimiento es muy fuerte siempre se verá recompensado. En los casos en que el desarrollo se haga muy rápido y el crecimiento vaya a ser muy limitado está justificado el uso de hardware para suplir la falta de optimizaciones, pero por lo general luego no se tiende a arreglar, por lo que a largo plazo los problemas irán creciendo de forma exponencial.
El principal problema de muchos de los proyectos es que no se organizan a largo plazo, se desarrollan aplicaciones y sistemas para cubrir necesidades puntuales, pero el tiempo va pasando y si no se ha dedicado el tiempo suficiente a optimizar las aplicaciones e identificar los cuellos de botella llegará un momento en que la tarea sea tan abrumadora que no habrá forma de enfrentarse a ella.
Todo proyecto debería comenzarse teniendo en cuenta su máxima escalabilidad, su cliclo de vida y debería tener un trabajo de optimización contínua basado en:
while (true)
{
identify_and_fix_bottlenecks();
drink();
sleep();
notice_new_bottleneck();
}
Así es como vemos triunfar hoy en dia proyectos como meneame.net, Youtube, Wikipedia, Wordpress…