Software developers sometimes have to get involved in choosing an infrastructure partner or web hosting provider, especially if that developer runs their own application or websites, or they work in a small company that can’t afford (or don’t want) to employ separate infrastructure engineers.
In my current role as a technical consultant, I can be called upon by a client to recommend a hosting environment, so it’s important I know what’s available on the market, and who to trust.
This is all very daunting, particularly if you’ve never had to experience it before.
This post explains why I chose Linode to host my new website (this one) and other web applications I use in my day-to-day work – and why I’d fully recommend them to anyone who needs a virtual server (VPS.)
My requirements for a server are fairly standard for anyone that runs their own website: LAMP stack (Linux, Apache, MySQL and PHP) as well as Nginx to serve static assets such as images (as it’s proven to handle more requests than Apache, while Apache provides the dynamic content – powered by PHP.)
Unfortunately low-end hosting (or shared hosting) that is very reasonably priced won’t work for me, as I run 2 open-source applications to manage my work-load: Redmine and Gogs (a Github clone.) These applications require higher specifications and aren’t designed to run on shared hardware – they need an isolated server (i.e. a virtual server.)
In the 13+! years since virtual servers really took off, I’ve hosted with a number of providers, such as:
- 1&1 Internet
- Daily Internet
- Digital Ocean
Of all of these, Linode is by far the most feature-rich and value-for-money – and I’d fully recommend them for anything from a simple virtual server (like mine) to a complete enterprise platform.
What is a Linode?
Linode calls their virtual servers “Linodes” as they started out being pure Linux containers (LInux NODEs?) Thanks to advances in virtualisation technologies in recent years, Linode now also provide Windows and FreeBSD servers. Linode is also the name of the company that runs the Linode platform and hosting service.
A Linode is effectively a fully dedicated server that is running on shared physical hardware. Here are, in my opinion, the killer features of the Linode platform.
One of the most important, and over-looked requirements, is how do you see the server’s console when you’ve lost your remote access? Hopefully this will be a rare occurence, but what if you’ve made a change to your firewall that’s locked you out of your server? What if you’ve rebooted your server but it didn’t come back on?
These situations require what’s termed “out-of-band access” – meaning, accessing the server’s console when, for whatever reason, your remote access (SSH, RDP, VNC) ain’t working any more.
Linode have you covered with 2 tools: Lish and Glish.
In the old days, you could connect another machine to a Linux machine via a serial cable – allowing the remote “head-less” machine to send all console messages to the “terminal” machine, and receive commands from said terminal, through a serial cable. I believe this stems from the days when mainframes didn’t have a graphical output – instead operators controlled it from “dumb” terminals connected by cables to the mainframe.
Nowadays, Linux still includes this functionality – and Linode have taken advantage of it by providing you with a dedicated server (what they call a “Lish server”) that you can connect to using SSH. That server then allows you to interact with your Linode through the virtual serial console – just as if you were logged on to its console.
The recently-released “Glish console” is another tool very similar – except it gets you straight onto the server’s virtual console through a VNC emulator in your browser.
Sadly, another option that is so often over-looked, is your backup strategy. For any strategy to achieve its goal of getting you up and running as quickly as possible after a disaster, it needs to be 3 things:
- fully automated – “set and forget”
- stored elsewhere (your backups are useless if they’re stored on the same server and your hosting provider has had a severe failure that’s removed all trace of your server)
- tested regularly (you can’t recover if your backup process has been failing half-way through and creating corrupt files, or your MySQL script fails on restore). Trust me: it happens; I’ve seen it.
Some hosting providers go down the full enterprise route of implementing something like R1Soft – which is great, unless you’re an individual that can’t afford that level of protection. Others don’t provide any option and it’s up to you to manage another machine and set it all up yourself.
Linode provide a fully automated backup solution that is affordable – starting at just $2.50 per month on a 1GB Linode. In my view, that’s well worth it for peace of mind. The backup system provides 4 “slots” – 3 of which are used for rotational backups so you always have a daily backup, a 2-7 day old backup and an 8-14 day old backup. The 4th slot is “on-demand” – i.e. you can take a snapshot of your server before a major change.
The backup system also allows you to restore a backup at any time – either to the original Linode, or to a new one – for example, to test an OS upgrade on a copy of your server.
Simply setting up and running a server isn’t always enough – if you’re running a public-facing website or web application, it pays to monitor the statistics so you know when are its busiest times, how the individual applications (e.g. MySQL, Apache) are performing under load etc.
There are other services on the market, such as Scout and Zabbix – but Linode’s Longview service is great as it’s integrated into the control panel, and best of all: its free! The caveat of the free plan is that it only maintains your data for 12 hours.
It’s a simple command to install the Longview agent on your server (any Linux server, not just a Linode.) Once installed, the agent immediately starts collecting data and sending it back to Linode for you to view in the dashboard. You can see details such as processes, CPU and memory usage, disk and I/O usage – even MySQL and Apache worker statistics – all without having to logon to your server!
I’m not afraid of paying for a decent service, as long as I can see the value. With Linode, however, I get the value without paying over-the-odds!
The base server specification is 1GB RAM, 1 CPU core, 24GB disk space and 2TB bandwidth/month – and starts at just $10 a month (about £7.) They offer varying specifications up to 96GB RAM and 20 CPU cores!
This is by far one of the best pricing for virtual servers on the Internet – and they bill by the hour, so if you only need a high-spec server for a few hours to do some number-crunching, you won’t have to pay for a full month’s usage. Similarly if you upgrade your Linode half-way through a month, you only pay the higher-rate for the time after the upgrade.
I can’t recommend a hosting company without mentioning support. It’s one of those things you never know how good (or bad) it is until you need it. On the day I set my Linode server up, I contacted support a couple of times – each time they responded within an hour initially, and each subsequent reply was within 10 minutes of me replying back to them.
One of these incidents was to report an issue with their “Glish” console not working – it was resolved and working for me within 24 hours.
Plus the people I “spoke” with (via e-mail) were very courteous and knew their stuff – you could tell they weren’t just reading from a crib-sheet.
Overall, I wholly recommend Linode. If, after reading this, you want to head straight on over and sign-up – please clicky the linky below (it will open in a new window.) It gives me a small kick-back which makes me want to write more articles like this one!