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

podsonoro Add 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.

7 Responses to “Performaníacos o porqué no hay nada tan ineficiente como la innecesaria eficiencia.”

  1. Gonza' Says:

    Lo peor es que no se limita a una pagina webs, uno suele buscar la más alta performance es todo. Ejemplo, comprar una nueva cámara fotográfica para un “performaníaco” puede ser el apocalipsis. Yo recuerdo cuando compré la mia en su momento (una Lumix FZ18) lo que me costó decidirme, jamás he fotografiado con ella nada que no hubiera podido fotografiar con una cámara de bolsillo normal. Sin embargo, en aquel momento hasta consideré una adquirir una reflex (¿Para qué quería eso? me pregunto ahora) pero luego me dije que no era cuestión llevar tamaña cámara y sus accesorios a todos lados así que me quedé con la Lumix.

    Yo sinceramente creo que los que sufrimos de “Performanía” pensamos casi obsesivamente en el “por si acaso llego a necesitar..” y estamos dispuestos a realizar esfuerzos innecesarios o gastos extras para cubrir ese “poquito más” que luego se transforma en otro poquito y así al infinito; y lo que es peor, muchas veces, jamás usamos esa “capacidad extra/función adicional/velocidad de respuesta/o lo que sea.”

    Y creo que el origen de ello, está muchas veces en las empresas que nos venden desde alojamiento web hasta Harware/gadgets, etc. Que nos convencen de que ese “poquito más” es “de vida o muerte” para que contratemos un mejor servicio, cambiemos de celular, cámara, PC, GPU, etc.

    Pero lo bueno es que a medida que asimilamos la realidad, la misma experiencia es la que nos cura de la performanía como bien has dicho en el articulo, felicidades..^^ Muy interesante.

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

    [...] Performaníacos o porqué no hay nada tan ineficiente como la innecesaria eficienciawww.vloj.com/124/ por pozibrothers hace pocos segundos [...]

  3. Performaníacos : Blogografia Says:

    [...] – vloj [...]

  4. martingerz Says:

    conozco mucho perfomaniaco :roll:

  5. Jonathan Says:

    Con deseos de imprimirlo y mostrarlo a varios conocidos.

  6. Selección Digital» microsiervos.com » Performaníacos Says:

    [...] – vloj [...]

  7. LuisHaro Says:

    JaJa! Magnífico! me voy a tatuar la frase:

    “las cosas merecen ser optimizadas siempre y que incluso las funcionalidades han de caparse si con ello consigues un ligero aumento del rendimiento”.

    bueno no tanto pero yo prefiero meter mucho más poder en las CPUs XD. Otra clase de performaniaco. XD

Leave a Reply

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