Performaníacos o porqué no hay nada tan ineficiente como la innecesaria eficiencia.

podsonoro 7 Comments »

Mi nombre es <ponaquiminombre> y soy performaníaco.  Nuestro fallo, el pensar que las cosas merecen ser optimizadas siempre y que incluso las funcionalidades han de caparse si con ello consigues un ligero aumento del rendimiento.

Cuando conduzco, al pisar uno de esos abundantes socabones que inundan las ciudades no dudo en soltar un quejido .. auuuuggghhhh. El quejido es resultado del dolor que provoca que una extensión de tu ser, en este caso el coche, haya sido ligeramente maltratado por aquel socabon. Sabes que no hay daños, pero duele.

Cuando comienzas a programar tu “web”, es inevitable pensar soñar que algun día será visitada por millones de usuarios, que día a día pasarán una buena parte de su tiempo en tu web. Los performaníacos enseguida empezamos a pensar lo desastroso de tal situación si nuestra web no estuviera preparada para tanto tráfico. Imaginaros un piloto de rallies soltando quejidos a diestro y siniestro por cualquier bachecillo…., su copiloto no tardaría en darle una buena “colleja” y largarse, sin duda ese piloto no llegará muy lejos.

Los performaníacos lanzamos ligeros quejidos cada vez que desarrollamos un proceso que o bien necesita de algo de CPU o bien necesita de acceder a la base de datos. No nos damos cuenta que no hay nada tan ineficiente como la innecesaria eficiencia.

Con Podsonoro he llegado a realizar bastantes locuras por culpa de mis “performanías“, optimizaciones en muchos casos absurdas que complicaban mucho la arquitectura de Podsonoro y en otros casos “cortaban” muchas de las funcionalidades que debería tener. A modo de ejemplo todas las páginas de Podsonoro estan cacheadas en su totalidad, y el mismo cache es utilizado para un usuario logeado como para el que no lo está y es javascript el que mirando las cookies modifica la página ligeramente en el caso que el usuario este logeado. Puedes navegar por Podsonoro con 0 queries a la base de datos, pero claro con pequeñas inconsistencias… si uno de los podcasts esta marcado como tu favorito no verás el buton de “desfavoritízame” ya que eso no se puede cachear de forma genérica y requiere una query….  es decir, para optimizar he tenido que desinformar. Mala decisión. Podría poner muchos ejemplos de malas decisiones así como de optimizaciones absurdas. Pero es que me dolía cada query a la base de datos, las contaba y recontaba y las reducía a su mínima expresión llevandome por delante todo lo que hubiera en el camino…. “performaníaco”.

De todas formas y antes de continuar me gustaría decir que tan malo es el “performaníaco” como el “ignorante despreocupado” que en cada pageview castiga a la base de datos con 20 queries y duerme por las noches muy tranquilo, ambos de alguna manera ignorantes, aunque el primero aprenderá rápido de sus errores mientras que el segundo no aprenderá nunca ya que ni sabe ni le interesa aprender.

Pasó el tiempo en Podsonoro y nunca tuve esos millones de usuarios, aunque eso sí,  la CPU marcaba un perfecto rendimiento capaz de aguantar 100 veces su tráfico. Y es que la eficiencia mal entendida es una perdida de tiempo y de dinero, como el rico tacaño que no gasta un duro y vive una vida de penurias contando su dinero una y otra vez. El performaníaco es el “tio gilito” de la CPU, mucho libre CPU para nada.

En mi siguiente intento de web (Tengaged), inevitablemente pensé soñé que sería visitada por millones de usuarios, que día a día pasarían una buena parte de su tiempo en mi web. Esta vez, como buen performaníaco decidí no capar las funcionalidades, aunque por supuesto seguir optimizando todo lo demas. Todo un nuevo mundo apareció por delante, nuevas funcionalidades, nuevas posibilidades. Te das cuendo de como, cuanto, donde y cuando has de optimizar.

- Como?. No quites funcionalidades, siempre hay una solucion. Primero optimiza tus queries, Ni una sola querie sin indices!, luego cachea nivel de base de datos, luego en los frontends (Memcached es nuestro mejor amigo), y siempre piensa que los FrontEnds escalan hasta el infinito mientras que las bases de datos sencillamente no escalan. MySQL NO ESCALA (si tienes muchos inserts como en mi caso), cero, 0, ceropatatero, ni esclavos-slaves-readslaves o lo que sea. Así que sencillamente piensa siempre en “sharding”.

- Cuanto?. Lo justo, lo menos posible,… anda que no tienes otras cosas que hacer mejor que escalar tu servicio!

- Donde?. Todo lo que entre dentro de una pageview. Olvídate de optimizar tus procesos de cron, etc.

- Cuando?. Deja para mañana lo que puedas optimizar hoy, pero piensa hoy como optimizar lo que necesitas mañana.

Se acabo lo que se daba

tengaged No Comments »

 

Que rapido pasa el tiempo, se acabaron los 4 meses de dedicación exclusiva a Tengaged y me ha pillado a mitad de camino (como decía Julito) entre las estrellas y los atomos.

[Toma remake....]. Remake del video sobre Tengaged….el “Game reality social network site online multiplayer realtime ovii ovaaa cada día te quiero maaaas” 

Si no puedes ver el video no dudes ni por un momento en hacer click aquí.

http://www.youtube.com/watch?v=I9U2P7TcCEY

 

 

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in