Risposta breve: è possibile scalare le applicazioni Mare come l'inferno yah
Risposta lunga: nel settore IT, il ridimensionamento è una cosa, ma ha due dimensioni:
- horozontal
- verticale
Quasi tutti hanno pensato di ridimensionare la dimensione verticale. Fino a quando Intel e gli amici hanno raggiunto alcune barriere fisiche e hanno iniziato ad aggiungere core per compensare l'attuale impossibilità di aggiungere MHz.
Ecco quando abbiamo iniziato a essere più consapevoli di ridimensionamento orizzontale come la strada da percorrere.
Perché sto dicendo questo?
Perché Seaside è un'immagine smalltalk in esecuzione su una VM e si tratta approssimativamente della stessa situazione di un sistema in un server di un processore monocore.
Prendendo come base, si ridimensionano le app Web creando un cluster di server. È la cosa naturale da fare, è la cosa tollerante ai guasti, è la cosa topologicamente intelligente da fare, è la cosa flessibile da fare, immagino tu abbia l'idea ...
Quindi, se per il ridimensionamento, tu fare lo stesso intel & amici, si abbraccia il modo orizzontale. Ed è anche più economico il modo verticale (che ti porterà a server IBM e Sun che sono altrettanto costosi).
Le applicazioni RoR vengono generalmente ridimensionate orizzontalmente. Google ha innumerevoli server economici per fare le loro cose. Funziona perfettamente bene, non importa quanto le persone drammatizzate vogliano impressionarti mentre ti lanciano un mucchio di balene twitter dimenticate.
Se si parla con te di che, basta essere gentili e sentire quello che dicono ma ricordate questo:
- perfetto è il nemico del bene
- la perfetta incompiuta non sarà mai come valore la cosa buona fatta
BTW, Amazon fa qualcosa di simile anche (e tipo di coppia di geolocalizzazione in modo da aumentare le possibilità di frequentare le vostre richieste con il cluster che è più vicino a te).
D'altro canto, il modo in cui Avi ha scalato dabbledb (società di applicazioni web basata sul mare acquistato da Twitter) utilizzava un vm per account cliente (all'avvio e all'arresto di quelli su richiesta).
Avere molto stato in un'immagine non rende il ridimensionamento impossibile o complicato.
Semplicemente diverso.
La strada da percorrere è con un servizio di bilanciamento del carico che utilizza sessioni di appiccicosità in modo da poter avere un'immagine che attenti tutte le richieste di una sessione utente. Fai le cose in modo che qualsiasi immagine di lavoro dietro il servizio di bilanciamento del carico possa partecipare a qualsiasi utente di una determinata app. E questo è praticamente tutto.
Per poterlo fare è necessario condividere gli oggetti persistenti tra i lavoratori. Tutti i database degli utenti devono essere accessibili dai lavoratori in qualsiasi momento e devono gestire bene la concorrenza.
Abbiamo progettato un flusso d'aria scalabile in questo modo.
È economicamente conveniente anche perché è possibile iniziare con N molto piccolo (a seconda della RAM del primo server) e aumentarlo su richiesta fino a raggiungere il limite hardware.
Una volta raggiunto il limite hardware, è sufficiente aggiungere un altro host al cluster e riconfigurare il bilanciatore (e l'accesso ai database).
Semplice, economico ed elegante.
Sono sorpreso da un commento che Rails è noto per scalare abbastanza bene. Twitter funziona per lo più a questo punto, ma ho l'impressione che si siano allontanati molto dalle rotaie standard. Tendo a pensare ai binari come l'epica quintessenza non riesce a scalare il quadro. –
Twitter utilizza un database come back-end per qualcosa che è essenzialmente la trasmissione di messaggi. Il ridimensionamento, come ho capito, indica quanto sia facile soddisfare più richieste utilizzando più hardware. Suggerisco che Rails si adatta bene a questa definizione perché DHH, uno degli autori originali di Rails, dice "[...] è possibile aggiungere quasi un numero qualsiasi di server Web e app senza cambiare nulla.", Nel suo [Blog ] [1] Che si adatta alla mia comprensione. [1]: http://www.loudthinking.com/arc/000479.html –
Come ho capito, Twitter si sta muovendo verso l'uso di Scala anziché di Rails. – Mei