Costo de escalamiento de Rails versus costo de escalado de PHP contra frameworks de Python

Supongo que esta pregunta se ha preguntado mucho alrededor. Sé que Rails puede escalar porque he trabajado en ello y es increíble. Y no hay muchas dudas al respecto en lo que respecta a los marcos PHP.

No quiero saber qué marcos son mejores.

¿Cuál es la diferencia en el costo de la escala de Rails en comparación con otros marcos (PHP, Python) que suponen una aplicación grande con 1 millón de visitas por mes?

Esto es algo que me piden mucho. Puedo explicarle a la gente que “Los Rails se escalan bastante bien”, pero a largo plazo, ¿cuáles son los aspectos económicos?

Si alguien puede proporcionar algunas métricas, sería genial.

Un factor importante en esto es que la elección del marco no se ve afectada por el acceso a la base de datos. No importa qué enfoque adopte, es probable que coloque los datos en una base de datos relacional. Entonces la pregunta es qué tan eficientemente puede obtener los datos de la base de datos. Esto depende principalmente del RDBMS (Oracle vs. Postgres vs. MySQL), y no del marco, excepto que algunas bibliotecas de mapeo de datos pueden hacer un uso ineficiente de SQL.

Para el parámetro puro “número de visitas”, la pregunta realmente es qué tan rápido funciona su sistema de plantillas HTML. Entonces, la pregunta es: ¿cuántas páginas puede representar por segundo? Haría de esto las métricas primarias para determinar qué tan bueno se escalaría un sistema.

Por supuesto, diferentes páginas pueden tener diferentes costos; para algunos, puede utilizar el almacenamiento en caché, pero no para otros. Entonces, al medir la escalabilidad, divida sus 1 millón de visitas en páginas baratas y caras, y mídalos por separado. Juntos, deben dar una buena estimación de la carga que puede soportar su sistema (o la cantidad de sistemas que necesita para satisfacer la demanda).

También está el tema del uso de la memoria. Si tiene los datos en SQL, esto no debería importar, pero con el almacenamiento en caché, es posible que también deba considerar la posibilidad de escalabilidad. Uso de la memoria principal.

En mi humilde opinión no creo que el costo de la escala sea diferente entre esos tres porque ninguno de ellos tiene “baterías de escalabilidad” incluidas. Simplemente no veo grandes diferencias arquitectónicas entre esas tres opciones que podrían causar una diferencia significativa en la escala.

En otras palabras, la architecture de su aplicación va a dominar la forma en que la aplicación se escala independientemente de cuál de los tres idiomas.

Si necesita almacenamiento en memoria caché, al menos va a utilizar memcached (o algo similar que se interconectará con los tres idiomas). Tal vez ayude a su escalabilidad utilizando nginx para servir directamente desde memcache, pero obviamente eso no va a cambiar el rendimiento de php / perl / python / ruby.

Si usa MySQL o Postgresql, todavía tendrá que diseñar su base de datos correctamente para escalar sin importar el idioma de su aplicación, y cualquier herramienta que use para iniciar la agrupación / creación de reflection estará fuera de su aplicación.

Creo que en términos de uso de memoria, Python (con el modo de demonio mod_wsgi) y Ruby (ruby de empresa con pasajero / mod_rack) tienen huellas bastante decentes al menos comparables a PHP bajo fcgi y probablemente mejores que PHP bajo mod_php (es decir, apache MPM Prefork + php en todos los procesos de apache chupan mucha memoria).

Donde esta pregunta podría ser interesante es tratar de comparar esos 3 idiomas con algo como Erlang donde usted (supuestamente) tiene una escalabilidad integrada barata automáticamente en todos los procesos de Erlang, pero incluso entonces tendrá un cuello de botella en la base de datos RDBMS a menos que su aplicación sea muy agradable. encaja en una de las formas de hacer cosas de la base de datos de Erlang, por ejemplo couchdb.

Desafortunadamente, no conozco ninguna comparación de costos de Rails, PHP y Django. Pero sí conozco una comparación de costos de algunos Java Web Frameworks: Spring (9k $), Wicket (59k $), GWT (6k $) y JSF (49k $).

Tienes la conferencia original aquí:

http://www.devoxx.com/display/DV11/WWW++World+Wide+Wait++A+Performance+Comparison+of+Java+Web+Frameworks

Ahí tienes un post al respecto (más corto):

http://blog.websitesframeworks.com/2013/03/web-frameworks-benchmarks-192/

Si quieres intentar infere sobre este costo. Podrías cruzar estos datos con el bencharmk propuesto por Techempower:

http://www.techempower.com/benchmarks/

Entonces, si sabe que la spring es bastante barata en comparación con Wicket y Django / Rails tienen peores calificaciones en comparación con Wicket y Spring, es probable que esto signifique un costo mayor.

Espero eso ayude.