The simple answer to running Ruby on Rails applications on different hosting services is that if you have access to the underlying operating system, you will be able to run the apps.
The core requirements (well, two core requirements) that are essential for Rails applications, and missing from most "traditional" hosting services include …
- Deployment mechanism (typically GIT)
- Viable application server that supports Rails (Puma or Passenger)
The first issue can generally be overcome with the help of FTP (not the most effective solution, but still works).
The second is much more problematic, and why most people end up using VPS solutions to deploy Rails apps (VPS servers give you unrestricted access to the underlying infrastructure).
VPS servers are basically what the "cloud" providers are giving people access to. Contrary to "traditional" hosts – who literally allocated space on a single server, the new "cloud" infrastructure setup basically splits the load across an entire datacenter of servers.
This not only brings the cost down but ensures that the buyer can actually * scale * their compute resource without having to physically pay for a new server. In any case, if you absolutely want to host a "rails" based application on a "cloud" VPS. The only problem with this is that you are responsible for getting the server provisioned (which is another story in itself).
To this end, the most important thing to realize is that if you're looking at this list – ANY VPS server will be able to run a Rails app. You just need to ensure you know how to install the various applications (which I'll cover in another article). For now, let's look at the most effective & cost-effective hosts:
- Digital Ocean
The undisputed KING of low-cost "cloud" VPS providers. Founded in 2011, it was the first to provide a single-priced VPS infrastructure for developers. From $ 5 / mo, you get access to a multitude of data-centers and many different server configurations. The most important thing to realize about DO – as with most other "cloud" VPS hosts – is that spinning up a VPS server literally gives you access to a Linux box running in a data center. You are responsible for setting up everything else (unless – of course – you pay for the pre-compiled images etc). Regardless of this – this is by far the most effective "budget" VPS provider for Rails apps.
A lesser-known, but still highly effective, cloud VPS service – Vultr is basically a "mini-me" to DigitalOcean. It has data-centers in a number of different locations (ranging from the US to Japan and even Germany & the Netherlands) – allowing for broader coverage. The most important thing to appreciate with Vultr is that it's basically designed to be the equivalent of DigitalOcean – without any of the extra frills that the former may have. For example, it doesn't have any inbuilt monitoring software (which DigitalOcean includes for free), and The big claim-to-fame of Vultr came from its $ 2.50 / mo VPS server (which is currently "sold out"). This was highly effective for developers who just wanted to push simple apps (either to test in a staging environment or to keep costs low). You still have to provision servers as you do with DigitalOcean.
Touted as the "fastet" cloud VPS provider, the Finnish UpCloud essentially provide the same services as the first two providers (DigitalOcean + Vultr) – except with a much deeper focus on support. Providing an API along with a myriad of other services, the system provides users with the ability to deploy VPS servers across a number of data-centers around the world. Again, the main difference with this is the proported speed of the servers they operate. This is apparently down to their MaxIOPs technology, which basically allows them to hold a lot of data in memory (hence speeding it up). Prices start from $ 5 / mo and – yes – you'll still need to provision the servers yourself.
European "cloud" hosting – based in Switzerland, they specialize in the provision of euro-centric infrastructure. With 4 data-centers (2 in Switzerland, 1 in Austria and 1 in Germany), the company has chosen to be extremely specific in its approach to providing infrastructure for various application developers. Whilst their pricing is very competitive, the most important thing to realize about this company is the efficiency they bestow. Being Swiss, they benefit from the ingrained culture of efficiency which pervades the majority of the Swiss community. This means you'll not only get rapid email responses, but deep and well-thought-out responses. They tend to provide services to many banks & financial institutions across Europe. Their niche-level targeting allows them to specialize in ensuring the speed, reliability and efficiency of their service is optimal for the clients they end up working with.
- Hetzner (Cloud)
Hetzner are a German hosting company with two data-centers in the country. Whilst they were founded as a "traditional" hosting, meaning they essentially allocated their data-center around who was paying for servers. Since 2017, the company started to offer a "cloud" service – whereby you could provision VPS servers in exactly the same way as DigitalOcean, Vultr and the swathe of other providers. With comparable pricing, the most important element to Hetzner's business is that it's almost exclusively focused on the German market. This is not to say they don't serve international clients – but in terms of their data-center availability and how they deal with support etc, it's an entirely German operation. Obviously, with prices starting from ~ $ 5 / mo, they only provide the ability to deploy servers – the onus is upon you to get them provisioned.
Not as well known as DigitalOcean or Vultr, but no less effective – Linode is a favorite of many smaller developers, as it was one of the first to offer low-cost "cloud" VPS servers. Linode is effective, with prices starting from $ 5 / mo – it's got a number of datacenters around the world and is pretty much on a par with the more popular "cloud" services. As ever – you don't get any frills with the service. You still have to provision and maintain the servers yourself.
The "daddy" of online hosting, RackSpace has been a major player in the hosting world since its inception in 1998. As you'd imagine, they were involved with the "cloud" game very early on, too. The problem with Rackspace – like Microsoft – is that it's expensive. Designed predominantly for larger organizations, their "cloud" servers start from $ 50 / mo – but are offset with the "fanatical" support the company will provide. This support is actually very good, and allows users to really rely on them to keep things running as effectively as possible. I would not recommend Rackspace for any smaller projects. It's just not worth the price, especially when you have the likes of DigitalOcean who do the same thing but for a fraction of the cost.
- Microsoft Azure
Microsoft's "cloud" VPS offering is arguably the most effective out of the big 3 (Google, Amazon, Microsoft). Azure is packed with extra services which help developers to launch applications across a huge number of Microsoft-owned data-centers. Fully supporting Linux and Windows VPS systems, the company is one of the few to provide deeper insights into how the various servers are operating. They give access to a rich dashboard, through which you're able to track everything from resource usage to how many requests different servers have received. Whilst this sounds nice, it's expensive. And it's really designed to help huge organizations adopt "the cloud" – which puts it out of the scope of most smaller developers. If you are interested in using it, you should certainly look up about it first.
- AWS (EC2)
AWS is good but expensive (especially if you need more compute resources). Hailed as the "original" cloud provider, every EC2 instance you spin up is basically acts as an independent VPS. The problem with AWS is that since it's so broad, it's difficult to know what you actually need with it. Further, like Microsoft Azure and Google Cloud Platform – the sheer scale of the infrastructure at play is massive. To this end, it should be no surprise to learn that the majority of popular web based applications (especially those which rely on the likes of S3) rely on EC2 & AWS to operate. Because of this, the service is typically seen as a supporting larger implementations, which require multiple server clusters, DB servers and CDN management (Amazon actually own "CloudFlare"). Ultimately, if you're looking to deploy a large & popular application, the AWS infrastructure certainly would help you. Pricing isn't great, but it's supported well and is backed by Amazon's mammoth infrastructure (which it uses for its own operations).
- Google Cloud Platform
Google's entry into the "cloud" space, its "cloud platform" is used by the likes of Apple and Twitter. Much like Azure & AWS, it's used by larger organizations to streamline their infrastructure requirements. Because Google uses the platform for their own infrastructure, it's obviously the case that you should be able to trust the system – and their community is actually very strong & active. The big difference with Google's platform is the pricing. They offer a very competitive set of prices, which allows a number of different developers to deploy software without incurring huge expenses in doing so.
The key with all of these – as mentioned – is that you will typically have to provision the various servers. This means installing the web + application server software, libraries and any ancillary services (SSL certificates etc).
If you're prepared to use a service such as Nanobox, Hatchbox, RailsHosting or VPSDeploy – you should be able to avert the pain of having to set up a valid web host … but in the end, it's entirely up to you what you do.
To be clear – the beauty of "traditional" / "shared" hosting has not yet been captured in the "cloud" arena. Rather than providing a simple platform to deploy apps, you pretty-much are left to your own devices.