[pyar] Benchmark de frameworks python

Alfonso de la Guarda alfonsodg en gmail.com
Lun Jun 8 21:02:42 ART 2015


Ariel,


Yo creo que los benchmarks sí son importantes porque te permiten
establecer un techo para tu aplicación, así como que tengas en claro
en el corto, mediano o largo plazo las estrategias que tendrás que
seguir para atender "n" usuarios en determinado tiempo.  Obviamente no
puedes considerar todos los escenarios pero sí hacer números sobre la
base de usuarios posibles en un futuro cercano, la cantidad de datos
que vas a manejar, etc. todo eso influye en como vas a lidiar con la
escalabilidad de tu aplicación pero lo que no puedes predecir es el
crecimiento de esta porque esto depende de factores exógenos.

Para mi caso, mi solución maneja  100 MB de datos diarios y se ve
afectada por la cantidad de usuarios que acceden a dicha data, si
hacemos una simple multiplicación tenemos que en 30 días tendré 3 GB
de data (sin incluir índices ni datos procesados o inferidos), cómo
haces para buscar información dentro de esta data que no está
estructurada? qué pasa cuando tengas 3 meses (9 Gb teóricos) y 100
usuarios diarios? Los frameworks se ven afectados siempre por la
persistencia de sus datos, es decir la base de datos y es entonces que
todo tiene que valer en tus decisiones, no puedes simplemente decir:
lo voy hacer en tal tecnología porque me gusta, no al menos en
negocios donde hay una inversión económica.

Conozco bastante bien las experiencias de muchos usuarios en el mundo
que han escalado sus aplicaciones para servir miles o millones de
usuarios pero -precisamente- es en esos casos que aplicas el
conocimiento vertido por ellos para evitar en el muy corto plazo estar
haciendo refactoring o simplemente rehaciendo todo.
Saludos,

--------------------------------
Alfonso de la Guarda
Twitter: @alfonsodg
Redes sociales: alfonsodg
   Telef. 991935157
1024D/B23B24A4
5469 ED92 75A3 BBDB FD6B  58A5 54A1 851D B23B 24A4


2015-06-08 18:48 GMT-05:00 Ariel Camino <arielcamino en gmail.com>:
> On 08/06/15 19:02, Alfonso de la Guarda wrote:
>>
>> Hola,
>>
>> Como estoy terminando un proyecto que requiere procesar muy
>> rápidamente la información (machine learning) y aunque -últimamente-
>> empleo #web2py para casi todo, me encontré con la disyuntiva de
>> dividirlo en una solución que implemente un backend basado en REST y
>> un frontend basado en web2py, el asunto era determinar que solución
>> era actualmente la más rápida para evitar en el corto plazo hacer un
>> refactoring del proyecto y es así que encontré la cama de pruebas de
>> rendimiento de TechEmPower
>>
>>
>> https://www.techempower.com/benchmarks/#section=data-r10&hw=ec2&test=fortune
>>
>> Y me propuse completar el resto de frameworks web basados python y
>> tomar una decisión basada en rendimiento, dado que lo único que
>> necesito es un implementar un API rest que trabaje solamente con el
>> frontend.
>>
>> Es así que les comparto el resultado de dicho benchmark, el mismo que
>> ha sido generado según las especificaciones descritas en el
>> repositorio de TechEmPower empleando vagrant para replicar su entorno
>>
>> http://codebeautify.org/jsonviewer/2e0aac
>>
>> El resultado es similar al del URL de la cama de pruebas aunque
>> incluye casi todos los frameworks web que han agregado varios usuarios
>> y la sorpresa del caso fue falcon, aunque fue también un gusto ver que
>> mi querdio Bottle sigue siendo rápido por su diseño minimalista.
>>
>>
>>
>> Saludos,
>>
>> --------------------------------
>> Alfonso de la Guarda
>> Twitter: @alfonsodg
>> Redes sociales: alfonsodg
>>     Telef. 991935157
>> 1024D/B23B24A4
>> 5469 ED92 75A3 BBDB FD6B  58A5 54A1 851D B23B 24A4
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
> Hola Alfonso, en mi humilde opinión las comparaciones de rendimientos de
> frameworks en general no son muy útiles porque a la hora de escalar los
> escenarios pueden ser muy distintos.
>
> Cuando te encontrás con un escenario donde realmente necesitás mucha
> velocidad, terminas tomando decisiones sobre determinados recursos de tu API
> para lograrlo que impactan muchísimo sobre el rendimiento, ajustando cada
> uno de los detalles.
>
> Te recomiendo leer este artículo que tiene un par de años pero me parece muy
> descriptivo al respecto:
>
> http://www.dabapps.com/blog/api-performance-profiling-django-rest-framework/
>
> el gráfico es bastante impresionante:
>
> http://www.dabapps.com/assets/blog/profiling-rest-framework.png
>
> Hablo desde la ignorancia porque no tengo ni idea de qué hace tu aplicación
> más allá de lo que contaste.
>
> Yo particularmente a la hora de elegir un framework para una API REST,
> incluso en escenarios donde determinados recursos de mi API deberían
> responder de manera instantánea a decenas de hits por segundo, se que hay
> cosas que se pueden ajustar, y cosas que no.
>
> Las cosas que normalmente no podes ajustar son la madurez de un proyecto, la
> comunidad, la documentación, la cantidad de personas que contribuyen al
> repositorio, la calidad de código, el lenguaje, etc.
>
> Suerte!
> --
> Ariel Camino
>
> PD: Conozco el test y leí las preguntas frecuentes acerca de las pruebas:
>
> https://www.techempower.com/benchmarks/#section=motivation
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar


More information about the pyar mailing list