2013-02-07 13 views
11

Ruby on Rails è stato ampiamente criticato per la mancanza di opzioni di scalabilità e l'alternativa è in genere la migrazione a una qualche forma di webapp Java o qualcosa di simile. Ma tutte le preoccupazioni sembrano essere alquanto arbitrarie, in un certo senso.A che punto la scalabilità diventa un problema per un'applicazione Rails distribuita su Heroku?

Esistono numeri concreti per quando una determinata applicazione deve essere riscritta in una lingua diversa? Heroku offre varie opzioni di ridimensionamento con il numero di dynos disponibili per l'app, ma a che punto i rendimenti decrescenti, se presenti, saranno evidenti? O a che punto il costo di avere così tanti dynos supererà i costi della semplice scrittura di una nuova app?

Quanti utenti concorrenti attivi posso aspettarmi di poter supportare senza subire problemi di prestazioni sul piano di hosting gratuito di base a Heroku?

risposta

20

Il mito "Rails non scala" semplicemente non morirà ...

Citando architetto principale di Twitter:

Le spinte prestazioni associati con un linguaggio “più veloce” ci darebbe un Miglioramento del 10-20%, ma grazie alle modifiche architettoniche apportate a Ruby e Rails, Twitter è più veloce del 10000%.

Non riesco a darvi un numero fisso, ma è quasi assolutamente garantito che vi imbattete in colli di bottiglia di database o architettonici molto prima che Ruby o Rails stiano iniziando a diventare colli di bottiglia.

Teflon Ted ha creato a nice collection of blog posts per quanto riguarda questo argomento.

+2

Per aggiungere a questo: non importa ** quale ** lingua stai usando. Ad un certo punto di alto volume ti imbatterai SEMPRE negli stessi problemi e quasi sempre richiederanno modifiche architettoniche. IE: Quali pezzi di dati possiamo servire da cache distribuite? Quali parti dell'applicazione stanno accedendo in modo inefficiente al database? Se ti ritrovi a pensare di cambiare linguaggio solo per aumentare le prestazioni, dovresti considerare quale sia il vero problema. – nzifnab