jueves, 26 de abril de 2007

3er (4to) y último día de la conferencia.

La mañana partió con interesantes discursos keynote del creador de php, el dba de youtube, y otro no tanto del CEO de Zmanda.
- PHP on Hormones: Rasmus Lerdorf nos habló un poco de la historia de php, y algunos tips para pensar en la web 2.0. Los sitios de ahora los construyen los usuarios, y eso es lo que los hace volver de la forma más barata. Hay que pensar en performance, y la clave de eso es el CACHE (no dejo de escuchar eso). Mencionó una interesante herramienta de profiling Callgrind. No sé si nos servirá pero se ve muy buena. Hay que pensar en seguridad, y habló de varias formas de crackear un sitio con javascript x-scripting. No es una vulnerabilidad que afecte directamente, pero puede significar una fuente de desconfianza para una víctima.

- Scaling MySQL at YouTube: Youtube muestra más de 100 millones de videos al día, y ellos si que manejan todos sus datos con MySQL. Fue interesante ver que partieron con un Master read/write y varios slaves read y esa es su forma de escalar. El problema de ellos era conseguir que los datos del master llegasen lo más rápido posible al slave. Mostró un montón de técnicas y dificultades para hacer la replicación lo más rápida posible. No creo que esto sea hoy un problema para nosotros, pero es bueno tenerlo en cuenta. Además volvió a mencionar que lo más importante es la memoria. 16GB por server es la opción, aunque haya menos cpus. Y después de eso la velocidad de los discos. Y eso lo obtienen con un RAID gigantesco. Lamentablemente no alcanzó a terminar su presentación, me hubiera gustado ver como lograron escalar los masters.

- De la sesión de Zmanda me salí en la mitad porque estaban vendiendo el producto y estaba más interesante la conversación afuera con el tipo de Youtube.

Sesiones:

- The innotop Workshop: El autor (tiene un blog bien completo de las sesiones que va a complementar con el audio en el futuro) de esta herramienta hizo un walkthrough de sus opciones y posibilidades. No la conocía y me pareció muy útil, llegando le voy a hechar una mirada. Es como lo que el mytop nunca logró ser y está hecha entera en PERL. Algunos tips: ^abre el editor de tablas. El mismo autor tiene otras herramientas interesantes, como una para sincronizar tablas de un master a un slave eficientemente.

- What Happens After You're Scalable: Capacity Planning for LAMP: Otra charla de la gente de flickr, ahora desde otro punto de vista. Algunas cosas que anoté:
  • Capacity planning != tuning: no confundirse. Según el tipo es mucho más efectivo concentrarse en la capacidad, ya que con el tuning uno se puede perder en los detalles.
  • Olvidarse de los temas de universidad (redes de markov, modelos estocásticos, etc) y planear con datos de verdad (ojalá de producción)
  • Conocer los techos: cuanto throughput podemos tener con niveles aceptables de respuesta, en esto los gráficos son imprescindible (up.time quizás). Ellos usan Ganglia.
  • Familiarizarse con el "Application Usage"
  • Monitorearlo todo, hacer predicciones, y usar herramientas automáticas de deployment (install_procedure.txt no creo que cumpla con lo de automática :)). Alguien del público nombró Puppet, me parece que vale la pena un vistazo.

Sólo falta una sesión. Estaba entre SQL Kitchen: Spicing Up Everyday SQL y InnoDB Performance Optimization, porque puede ser más útil la segunda, pero Heikki habla tan mal que mejor me quedo con los slides y voy a la primera no más. Finalmente fui a las 2. :)

Al principio entré a la de SQL. Ahora el presentador era un franchute orgulloso de sus “hacks”con sql. Mostró varios bien simpáticos, algunos con enum, formas de guardar datos más compactos, varios usos para una tabla de integers. Es la segunda persona que habla de guardar las direcciones IP como integers para optimizar espacio y búsquedas, creo que debemos hacerles caso (la forma de manipularlos es con las funciones INET_NTOA() / INET_ATON(). En la mitad hubo un receso (era una sesión extra larga) así que aproveché de ver qué estaba pasando en la otra sala. (Siempre se puede ver los slides para aprender nuevos trucos).

En la otra sesión, Heikki esta vez estaba acompañado lo que hizo las cosas bastante más dinámicas y entendibles. Llegué justo cuando estaban terminando de hablar de optimización y consideraciones para los query y se pusieron a hablar de los parámetros de servidor. En este contexto, analizaron las diferentes variables innodb_% dando una explicación y consideraciones de cada una. Volvieron a repetir la importancia del buffer_pool_size, ojalá toda la memoria disponible que no use el SO. Ojo con la variable log_file_size, se supone que hace todos los write mucho más rápidos a medida que sea más grande, a costa de tener un mayor tiempo de recovery en caso de caída. (En un modelo como el nuestro que tenemos backup en caso de caída, creo que vale la pena aumentarle el tamaño). Otros comentarios: conviene aumentar el tamaño del auto_extend para evitar fragmentación, se puede tener el espacio innodb en archivos separados por tabla (por ejemplo para tener tablas en diferentes particiones), conviene apagar el xa si no lo usamos, para obtener ganancias de hasta 5% en uso de cpu. Hablaron de hartas cosas más, pero no alcanzaron a terminar así que dejaron harto pendiente. Todos los detalles están en el powerpoint que espero publiquen pronto.

Y eso fueron todas las sesiones de la conferencia. Finalmente un programador de Yahoo! Mostró un nuevo programa que estaba desarrollando, pipes.yahoo.com. Encontré que la interfaz del programa está increíble, aunque fue raro haber terminado la conferencia con eso que como que no tenía nada que ver.

Debo decir que estos 4 días fueron bastante intensos. Al principio era tanta la información que me saturó un poco, pero a medida que fui absorbiendo los conceptos y el “espíritu”, creo que el provecho que fui sacando es invaluable. Ahora sólo falta poder transmitir lo mejor posible esta experiencia para que todo el equipo se vea beneficiado (para lo que espero este blog ayude), y poder aplicar lo aprendido con éxito. Se me ocurren algunas cosas que sería bueno aplicar que voy a poner en el siguiente artículo.

No hay comentarios.: