Hosting per Ruby on Rails

In questo post vorrei raccogliere qualche dettaglio in merito alla scelta di un hosting per ospitare un progetto in Rails. Avevo già introdotto l’argomento in tempi non sospetti con l’articolo hosting gratuito per Ruby on Rails, lo riprendo oggi ad un paio d’anni di distanza pubblicando alcuni contributi personali.

La prima parte dell’articono contiene alcuni consigli e considerazioni in merito alla scelta di un hosting per Rails. La seconda parte è invece una lista dei principali hosting per Ruby on Rails disponibili.

Considerazioni per la scelta di un hosting per Rails

Prima di lavorare attivamente con Ruby e Rails la mia esperienza sul web aveva riguardato soprattutto progetti in PHP e ASP. Per questo tipo di applicazioni, molto spesso è sufficiente creare il progetto e pubblicarlo online senza troppe pretese aggiuntive. Scegliere tra un hosting, un VPS o altre soluzione è quindi spesso questione di costi ed esigenze.

Con Rails il discorso è un po’ diverso. Anche se la recente introduzione di soluzioni come mod_rails permettono un deploy relativamente agevolato, non è raro aver necessità di accedere alla console di amministrazione del server per creare un utente, installare una GEM, compilare una libreria o eseguire azioni di amministrazione. Non è quindi un caso che nella lista di provider che segue sono molto limitati i piani di hosting condiviso, ammesso che non offrano un accesso da shell.

Inoltre, sebbene Ruby e Rails supportino diverse versioni del sistema operativo Microsoft Windows, utilizzare Rails su un server Windows è un’abitudine rara. Praticamente tutti gli strumenti a disposizione per migliorare e monitorare un’applicazione Rails, da Capistrano a God passando per altre popolari GEM, si basano sul requisito fondamentale che l’applicazione disponga di un accesso SSH ed una shell di tipo POSIX. Non è scopo di questo post entrare troppo nei dettagli del tipo di server, quindi concluso consigliandovi vivamente di non utilizzare mai server Windows per un progetto Rails.

Navigando alla ricerca di soluzioni per Rails mi è capitato spesso di impattermi in provider apparentemente compatibili con Rails che spesso offrivano poco più di un pannello di controllo standardizzato come CPanel e qualche caratteristica Rails-oriented. Diffidate da questi provider! Nella mia esperienza, ogni provider seriamente coinvolto con Rails è normalmente specializzato in questo tipo di soluzioni e non offre centinaia di altri servizi. Inoltre, a memoria non ricordo un hosting specifico per Rails che utilizzi CPanel o i classici pannelli di controllo che siete abituati ad utilizzare ad esempio con PHP. Spesso si tratta di pannelli di controllo personalizzati, scritti apposta per venire in contro alle esigenze di Ruby e Rails.

Requisiti di un hosting per Rails

Come anticipato, ci sono alcuni requisiti che un hosting che si dichiara Rails-compatibile non può non offrire. Tutte le soluzioni proposte di seguito supportano pienamente i seguenti requisiti.

  • Sistema operativo Unix-based
  • Supporto per Ruby e Rails
  • Accesso SSH via shell (no Jail-shell)
  • Possibilità di installare GEM
  • Possibilità di configurare in modo flessibile virtual host
  • Supporto per un sistema di versioning (almeno Subversion)
  • Supporto database MySQL e/o PostgreSQL (eventualmente SQLite3 per test)
  • Supporto Passenger (mod_rails) e/o FastCGI e/o Mongrel

Alcuni di questi requisiti non sono soddisfatti nativamente ma grazie all’account SSH è possibile installare nella propria home directory eventuali requisiti mancanti.

Tipi di Hosting per Rails

Fino ad ora ho continuato ad utilizzare il termine hosting in modo improprio. Per i motivi sopra anticipati, infatti, difficilmente possiamo parlare di hosting per Rails così come normalmente lo si intende ad esempio per PHP. E’ molto probabile che il vostro progetto Rails sarà ospitato su un piano frazionabile o, nella maggior parte dei casi, su un VPS o server fisico.

Nella lista seguente non cercate dunque un provider di hosting ma valutate la soluzione più adatta alle voste esigenze in termini di risorse, costi e capacità. Molte soluzioni vi daranno ampia libertà di azione ma richiedono quindi anche competenze di sysadmin poiché sarà affidato a voi il compito di installare e configurare attraverso shell il webserver e/o eventuali virtual host.

Spero mi scuserete ma per comodità continuerò ad utilizzare anche in seguito il termine hosting per riferirmi ad un provider che offra servizi per il deploy di un’applicazione Rails.

Senza perdere altro tempo, ecco la lista di provider certificati per Ruby on Rails. Alcuni di questi ho avuto modo di provarli direttamente, per altri mi sono invece attenuto alle numerose considerazioni raccolte frequentando forum, mailing list e conferenze Rails.

(1). Provato di persona.

Hosting non gestiti per Ruby on Rails

Difficile trovare un termine corretto per classificare questi provider. Alla fine ho scelto il termine “non gestiti” per distinguerli da quelli che offrono servizi e consulenza integrata per Rails. Attenzione, questo termine non è riferito al mancato supporto da parte del provider che è comunque sempre presente ed in quasi tutti i casi ha competenze specifiche legate alla risoluzione di problemi su Rails.

I provider seguenti offrono nella maggior parte dei casi eccellenti soluzioni per Rails ed offrono ampia flessibilità ma questo richiede che il cliente abbia competenze di sysadm e gestione di un server per configurare al meglio la propria macchina.

Unbit

Unbit Logo Unico provider italiano che mi sento di citare parlando di Ruby on Rails, Unbit si è da sempre distinto per offrire servizi di qualità anche per soluzioni Ruby e Python, con pieno supporto a Rails e Django. Non ho mai provato direttamente Unbit ma ne ho sempre sentito parlare molto bene.

Supporta GIT, Subversion e Mercurial, offre accesso SSH, database MySQL e PostgreSQL oltre a numerosi servizi aggiuntivi.

Slicehost (*)

Slicehost LogoSlicehost offre VPS a prezzi estremamente competitivi. I ragazzi di Slicehost sono particolarmente attenti a Rails così come la comuniti che si è formata intorno. Infatti, Slicehost è diventato uno dei provider VPS di riferimento per chi utilizza Rails.

E’ possibile scegliere tra diverse configurazioni VPS e numerose distribuzioni Linux. L’installazione avviene in pochi click ma la configurazione è completamente a carico del cliente, dal web server alle librerie. Si dispone di un completo accesso root al server ed una gestione completa di DNS e della propria slice.

Slicehost è un’ottima soluzione per una o più applicazioni Rails anche di medio grande dimensioni. In qualsiasi momento è possibile eseguire l’upgrade di una slice se l’applicazione cresce ed il consumo di risorse aumenta. Richiede un’elevata competenza di sysadm ed una buona confidenza con la gestione e l’amministrazione di Ruby e Rails. L’area tutorial è piena di articoli per guidarvi nella configurazione del vostro server.

Linode

Linode LogoLinode è un altro eccellente provider di VPS con ampio supporto a Ruby on Rails e prezzi estremamente interessanti. Il pannello di controllo è estremamente intuitivo e ricco di funzionalità per la gestione del server.

Anche in questo caso è richiesta una buona competenza di sysadm ed una confidenza con Rails in quanto l’installazione delle librerie necessarie, dal web server al database al linguaggio, è affidata completamente a voi.

PlanetArgon

Boxcar LogoPlanetArgon offre esclusivamente virtual private server configurati specificatamente per ospitare applicazioni Rails chiamato Boxcar. La piattaforma include Phusion Passenger, Ruby Enterprise Edition, supporto a Mongrel/Nginx, supporto a differenti database ed accesso SSH.

Il prezzo è assolutamente in linea con le altre soluzioni VPS presentate con il vantaggio di un’esperienza specifica per Ruby on Rails e l’esigenza di non dover configurare da zero il proprio ambiente.

RailsMachine

RailsMachine LogoRailsMachine è un hosting per Rails di lunga data specializzato per offrire servizi dedicati a Ruby on Rails. Se da una parte l’impegno richiesto per la gestione e l’amministrazione dei server è minore, dall’altra il costo è decisamente elevato rispetto agli altri concorrenti proposti in questa pagina.

RailsPlayground

RailsPlayground LogoRailsPlayground è un altro provider specifico per Rails. Offre soluzioni specifiche per Ruby, Python e PHP che vanno da hosting a server dedicati, inclusi i virtual private server. Ogni account include Trac, SVN ed accesso SSH. Inoltre supporta Passenger (mod_rails) ma anche Mongrel e FastCGI.

HostingRails

HostingRails LogoHostingRails offre supporto a Rails inclusa la possibilità di utilizzare Passenger (mod_rails) in combinazione con Ruby Enterprise edition. Quest’ultima è una caratteristica molto interessante non comune agli altri hoster ma non mi è chiaro se si tratta di un servizio incluso o opzionale.

Inoltre supporta le altre comuni modalità di deployment come Mongrel e FastCGI. E’ possibile scegliere diverse soluzioni, da un piano di hosting avanzato ad un server dedicato, sempre con accesso SSH.

Hosting gestiti per Ruby on Rails

A differenza degli hosting non gestiti, le soluzioni che ho (impropriamente) chiamato gestite includono aziende nate attorno a Ruby on Rails, in grado di offrire servizi altamente specializzati su Rails che vanno dall’ospitare il vostro progetto alla consulenza ed assistenza completa in ogni fase di sviluppo.

Questi provider sono molto di più che semplici hoster. Hanno programmatori specializzati su Rails in grado di individuare problemi e fornirvi soluzioni. In un certo senso è come avere a disposizione del proprio progetto altri programmatori Rails specializzati.

Sono soluzioni generalmente più costose adatte a progetti Rails di grandi dimensioni, spesso sviluppati su cluster di server con esigenza di gestire grandi carichi di utenza.

EngineYard

EngineYard LogoEngineYard è in assoluto il provider più presente nel mondo Rails. Se bazzicate nell’ambiente Rails da un po’ di tempo è praticamente impossibile non averne sentito parlare, a meno di non aver programmato da soli su un’isola deserta insieme a Robinson Crusoe.

Offre soluzioni di alto livello specifiche per applicazioni Rails ad alto traffico. I servizi spaziano a 360°, dalla consulenza alla gestione dei singoli progetti. Tra i suoi clienti annovera nomi del calibro di GitHub, Lighthouseapp, Tender, Uservoice e numerose altri popolari progetti Rails.

RackSpace

Logo RackSpace RackSpace è nel campo da molto tempo e rientra in quella gamma di provider che difficilmente avrete esigenza di consultare per applicazioni di medio-basso consumo. RackSpace è specializzato in soluzioni ad elevata esigenza di calcolo incluso il cloud computing.

Recentemente RackSpace ha acquisito Slicehost facendo così il suo ingresso in un mercato meno d’elite che spesso include aziende di limitate dimensioni o server acquistati da singoli utenti per utilizzi personali.

Joyent

Joyent LogoJoyent è un provider altamente specializzato nell’offrire servizi orientati alla scalabilità ed applicazioni con elevati requisiti. E’ una delle aziende in assoluto più attive nel campo del cloud computing. Tra le soluzioni proposte include anche servizi specifici per Ruby on Rails, particolarmente rivolti ad esigenze di medio-grandi dimensioni.

BrightBox

Brightbox LogoBrightBox è un’azienda estremamente attiva nel mondo Rails, spesso presente a manifestazioni ed eventi anche come sponsor. Offre soluzioni per Ruby e Rails incluso supporto e consulenza. Tutti i piani includono Passenger mentre a partire dal piano 512 è possibile usufruire della piattaforma di monitoraggio offerta da RailsRun grazie ad un accordo tra le due società.

Hosting compatibili con Ruby on Rails

Con il termine compatibili vorrei indicare hoster che potenzialmente permettono il deploy di un’applicazione Rails ma non sono specifici per Ruby on Rails. Questo significa che offrono buona parte dei requisiti elencati ad inizio post ma spesso si tratta di provider generici e di largo consumo che per ovvia esigenza hanno adattato parte dei servizi al supporto Rails. Il loro costo è normalmente inferiore rispetto agli hoster specifici ma allo stesso modo anche il supporto che offrono in caso di problemi riguardanti Ruby e Rails è normalmente minore.

Sono adatti a progetti Rails di piccole dimensioni, in particolar modo se si desidera avere un hoster a disposizione per familiarizzare con Rails prima di decidere di acquistare una soluzione dedicata tra quelle indicate prima. L’elenco è ordinato per preferenza.

Dreamhost (1)

Dreamhost LogoDreamhost è uno dei maggiori hoster del mercato oltreoceano. E’ molto popolare grazie all’offerta di servizi a prezzi estremamente accessibili con numerose funzionalità tipiche di provider di alto livello come un completo accesso via shell ed ampia libertà di personalizzazione del proprio account.

Offre accesso SSH, possibilità di creare più unix user, compatibilità con Ruby e Rails incluso il supporto a Passenger (mod_rails). Quest’ultima caratteristica è particolarmente determinante poiché si tratta della modalità attualmente più semplice e performante per il deploy di un’applicazione Rails. Purtroppo è un hoster molto affollato e spesso è possibile imbattersi in problemi di performance e rallentamenti dell’applicazione.

Adatto per applicazioni di piccole dimensioni, ottimo per prendere familiarità con Rails e con la gestione di un account unix. Offre un pannello di controllo personalizzato ma vi ritroverete ad eseguire buona parte delle configurazioni via SSH.

Site5 (1)

site5 LogoSite5 non è un provider specifico per Ruby on Rails ma ha saputo ricavarsi una discreta fetta di mercato garantendo una serie di servizi essenziali anche per il deploy di un progetto Rails. Dispone di un piano Web Hosting e Reseller ma il primo non è indicato al nostro scopo. I prezzi sono interessanti e quasi sempre è possibile approfittare di un’offerta in grado di ridurre sensibilmente il costro d’acquisto.

Offre l’accesso SSH configurabile ma la gestione dello spazio e degli account avviene attraverso pannello reseller di CPanel e questo, nel caso di un progetto Rails, è sensibilmente penalizzante. Nonostante offra il modulo Rails per CPanel, loro stessi suggeriscono di configurare l’applicazione via FastCGI. La configurazione richiede competenze sysadm e potrebbe non essere alla portata di tutti.

Ideale nel caso in cui si voglia utilizzare un piano frazionabile per altri scopi, ad esempio applicazionei PHP, e contemporaneamente sperimentare con Rails.

BlueHost

Bluehost LogoBlueHost non è un provider specifico per Rails, tuttavia supporta la configurazione di un’applicazione Rails e dispone di alcuni requisiti essenziali come l’accesso via shell.

Purtroppo la gestione dell’account, come per Site5, avviene via CPanel complicando inutilmente il deploy di un’applicazione. Inoltre non supporta Passenger (mod_rails) dunque è possibile utilizzare un’applicazione Rails solo via FastCGI.

LunarPages

Lunarpages LogoLunarPages offre diverse soluzioni tra le quali anche il supporto a Rails. Purtroppo, anche in questo caso il deploy è possibile solo via FastCGI. Inoltre, l’accesso SSH è opzionale e richiede un costo mensile aggiuntivo.

HostGator (1)

HostGator è un altro provider internazionale che ha deciso di mettere a disposizione alcuni servizi per Rails. Purtroppo offre solo accesso tramite JAIL shell ed i moduli per Rails preinstallati in CPanel. Onestamente non è una soluzione che consiglierei per un’applicazione Rails.

Hostmonster

Hostmonster LogoHostmonster come HostGator è un hoster generico che offre alcune caratteristiche utili per un’applicazione Rails cone accesso via shell. Trattandosi di un hoster molto generico, il verdetto è lo stesso di HostGator.

In conclusione

Come avrete intuito, la scelta di un hosting per un progetto Ruby on Rails non è immediata. E’ necessaria una buona conoscenza del framework e dei suoi requisiti per un corretto funzionamento.

Per chi è alle prime armi o in fase di studio, consiglio di cominciare con un provider di test per familiarizzare con il framework e le sue caratteristiche per poi eseguire il passaggio ad un provider dedicato in base all’esigenze del prodotto.

Per chi è alla ricerca di un provider serio per il deploy di un’applicazione professionale la scelta specifica è d’obbligo. A seconda delle proprie competenze ed esigenze è possibile dedicarsi completamente ad un’azienda che offra anche consulenza oppure procedere alla configurazione ed amministrazione in proprio di un server o VPS.