2010-02-07 5 views
7

No voy a hacer esto en una discusión de Rails vs Framework X, ya hay muchas de esas. Después de considerar seriamente qué marco voy a utilizar para mi próxima implementación, decidí que es muy difícil dejar de lado la exposición de REST REST Rails te ofrece un trabajo mínimo. Esto es algo que requiere un poco más de trabajo en Django, y teniendo en cuenta que estoy poniendo mayor énfasis en la porción API de la aplicación, Rails tiene más sentido esta vez. Teniendo en cuenta lo importante que es para mí escribir una aplicación que contenga clientes heterogéneos (iphone/android/tabletas) a los que pueda acceder (no solo navegadores web), necesito poder crear API RESTful con la mínima resistencia desde cualquier marco que esté utilizando.¿Ruby 1.9.1 está realmente listo y es más rápido para una nueva implementación de Rails?

Mi pregunta es, ¿está listo Rails para manejar una aplicación de tamaño de Twitter, pero algo que hace aproximadamente 75,000 visitas únicas al día? ¿Ruby 1.9.1 realmente mejora las cosas? Hay muchas historias de pesadillas e igualmente historias de éxito dependiendo de a quién le preguntes. Joel Spolsky (uno de los fundadores de stackoverflow.com), believes Ruby itself is just not ready for prime time porque todavía es considerablemente más lento que otros lenguajes interpretados. No me preocupa llegar al tamaño de Twitter (es un problema que deseo tener algún día), pero por la misma razón, tengo un sitio con un promedio de 75,000 usuarios únicos por día. Me pregunto qué tipo de problemas de escalado me encontraré al decidir usar Ruby 1.9.1 + los últimos Rails (costos de CPU + huella de memoria) como parte de mi stack de API frente a solo tomarme el tiempo para realmente hacer un poco más trabajar en Django para construir una API RESTful. Como Joel menciona en su artículo, no quiero comprar 100 servidores cuando puedo comprar 10. Me encantaría estar convencido de por qué Rails ahora está listo para cumplir con mis requisitos.

+0

Quizás también deba considerar Rubinius (http://rubini.us) /) Creo que el objetivo de Rubinius es una implementación de Ruby y más escalable. – adamse

+0

Como nota al margen, Rails todavía estaba en su infancia en 2006 cuando Joel escribió ese artículo. En aquel entonces fcgi era el camino a seguir. Además, la mayoría de los problemas de twitters no se debían a que los rieles son lentos, sino que los rieles solo pueden acceder a una base de datos. Claro que usaron sql simple, pero cualquier capa de abstracción agrega sobrecarga independientemente del lenguaje utilizado. Cuando pones todo en perspectiva incluso si ruby ​​1.9.x es el doble de rápido, la velocidad general de la aplicación solo aumentará ligeramente. – vise

+0

Además de Django, también hay web2py, en lo que respecta a los marcos basados ​​en Python; el autor diseñó web2py para incluir características de django y conveniencias de rieles. –

Respuesta

6

Experimentamos con 1.9 hace un par de meses y estábamos tan impresionados con las mejoras de velocidad que casi de inmediato comenzamos el proceso de migrar hacia ella. Las únicas bibliotecas que no funcionaron sin problemas fueron Facebooker, que uno de nuestros desarrolladores pudo parchar en un par de días (el complemento ahora es completamente compatible con 1.9), y VPim (biblioteca iCalendar) que pudimos cambiar fácilmente con el plugin RiCal mucho más nuevo.

Rails 2.3 está completamente listo para ejecutarse en 1.9 y en nuestra experiencia resultó en una mejora de más del 60% en los tiempos de solicitud. Nuestras pruebas de integración también recibieron el mismo beneficio. Tuvimos 1200 pruebas que funcionan a 300 segundos para ejecutarse ahora, tomando solo 110 segundos sin más cambios que el cambio de Ruby 1.8.7 a Ruby 1.9.1. Esto también significa que pudimos duplicar la cantidad de carga que podía manejar cada uno de nuestros servidores.

Es posible que utilice una gema que no sea compatible con 1.9, pero la gran mayoría de ellos son o pueden ser compatibles con cambios menores.

Definitivamente no experimentará ningún problema con 75,000 visitantes únicos, y un solo servidor debería ser capaz de alojar una aplicación de rieles con al menos diez veces ese nivel de tráfico a menos que su aplicación esté escrita muy mal.

+0

Estoy de acuerdo en que 1.9 es impresionante, pero viendo que solo 2 versiones atrás el pasajero comenzó a trabajar y todavía bastantes gemas no funcionan, o requieren cuidados especiales (por ejemplo, mestizo) no le estaría dando una recomendación a un novato para que comience en 1.9 a resolver un problema de rendimiento que él/ella no tiene. –

2

No es realmente una cuestión de si Ruby 1.9 está listo para Rails, sino más bien si Rails está listo para Ruby 1.9. Por lo que he leído, parece que Rails (ActiveRecord, etc.) funciona bien en él. Puede tener problemas con cualquier gema de rubí que pueda usar que no esté lista para 1.9. Consulte http://isitruby19.com/ para ver si alguien ha comentado las gemas específicas que está utilizando.

+0

Rails 2.3 y superior es compatible con Ruby 1.9. Su última actualización, 2.3.5, corrige (parafrasea) "problemas con Ruby 1.9 que probablemente no notarías ya que son muy pequeños". – Trevoke

1

Mi pregunta es, es Rieles listo para mango no es un Twitter dimensionada aplicación, pero algo que hace aproximadamente 75.000 visitas únicas al día?

¿Qué servidor estás utilizando? ¿Qué hace cada solicitud? Si está ejecutando en un solo segmento de 128 megas, entonces probablemente no.

Ruby 1.9.1 es de hecho mucho más rápido que Ruby 1.8.X y también tiene menos memoria. 1.9.2 está a la vuelta de la esquina, de hecho, Rails 3 realiza todo su trabajo Dev en 1.9.2 trunk.

En mi servidor puedo manejar 80k vistas de página por día sin pasarme por alto y sin implementar ningún sofisticado almacenamiento en caché, si construyo un almacenamiento en caché inteligente con redis o memcached me sentiría cómodo sirviendo 10-20x esa cantidad.

Puede diseñar aplicaciones web que funcionen maravillosamente con Ruby and Rails (incluso en REE 1.8.7). Puede diseñar aplicaciones web que funcionan horriblemente escritas en C++.

Si conoce su plataforma y sabe cómo optimizarla, puede obtener un gran rendimiento.

Probablemente me mantendría alejado de Ruby 1.9.1 (a menos que se considere un experto en Ruby) simplemente debido a que un puñado de bibliotecas no funcionan y al hecho de que la gran mayoría de las aplicaciones de Rails no se ejecutan en él. Intenté con 1.9.1 hace unas semanas y logré que mi aplicación funcionara, pero sí requirió un poco de Ruby foo.

4

La publicación de Joel es de DOS MIL Y OCHO. Eso fue hace CUATRO años. Las cosas han cambiado, afortunadamente :) Ruby 1.9 está listo para el horario estelar. Es compatible con Rails 2.3.5, y Rails 3 está diseñado con Ruby 1.9 en mente, por lo que será totalmente compatible con él.

"Mi pregunta es, ¿rieles listo para mango no es un Twitter dimensionada aplicación, pero algo que hace aproximadamente 75.000 visitas únicas al día?"

Eso es más o menos como preguntar si crees que diez mil huevos te ayudarían a hacer un omelet, no para una ciudad, sino para una familia.

+1

Me gusta su analogía: la respuesta es por supuesto ** no **, ya que sabemos que los pollos no tienen escamas, por lo tanto, los huevos no pueden nadar - QED –

1

No deberías tener un problema con Ruby 1.9.1; Sólo quería tener problema con esto:

75.000 usuarios únicos al día

Esto significa absolutamente nada. No sabemos cuántas solicitudes por segundo se traduce para su aplicación. Si realmente quiere decir 75,000 solicitudes por día, eso es trivial: es menos de una solicitud por segundo. Cualquier marco que no pueda garantizarle que antes de alcanzar los límites impuestos por la base de datos o la arquitectura de su aplicación tiene mayores problemas que la plataforma en la que se ejecuta :-)

Cuestiones relacionadas