Hosting, what is it? why do you need it? what are the different types of hosting and which is best suited to your project? Hopefully in this article I’ll answer those questions.
What is hosting?
Think of hosting like a drawer in a filing cabinet that’s shared with everyone in the world. You put your documents in the filing cabinet and everyone can easily access them.
If you’re building a website, you need somewhere to put your website files so that they can be accessed by everyone. This is where hosting comes in. Hosting is a computer that acts like a filing cabinet, it holds all of the files that are needed for your website, and makes them available to anyone with an internet connection.
In our case, our domain name shepparddigital.co.uk points to a specific filing cabinet where the files for our website are stored. Hence you can access this page.
Before we delve into the different types of hosting, it’s worthwhile briefly talking about operating systems. Chances are, you’re reading this article on a computer that’s running either Microsoft Windows, or Apple OS X. Hosting servers are similar in that they’ll either run Microsoft Windows or something called Linux.
Microsoft Windows servers can run websites built in many different languages, including ASP.NET and PHP. Windows hosting and servers tend to be more expensive than other server, mainly due to a licence being required for the operating system.
Linux on the other hand can’t generally run ASP.NET websites or applications. It also can’t run MSSQL database software either, but can run MySQL. This may not ‘technically’ be correct with the introduction of Mono and ASP.NET being open-sourced, but for the average application I would still say Linux can’t run ASP.NET application. Linux is a free operating system, so you tend to find that linux hosting is cheaper than Windows.
The above is useful, because if you have a website or application developed in ASP.NET, then Linux hosting won’t be suitable for your application.
Let’s talk about the different types of hosting available.
This is usually the cheapest of hosting options. Think of it again as a filing cabinet, but the filing cabinet not only contains your files, but it contains the files of lots of other random people too. You only have a small number of documents, you don’t need a filing cabinet drawer all to yourself, so you share it with other people, which makes perfect sense.
The advantages of this is it’s cheap and generally quick and easy to setup. Most shared hosting accounts come with POP or IMAP email too, so you get everything in one place for a fairly small cost. Great for small businesses who require a simple online presence.
The biggest downside is that because you’re sharing with other people, there’s a chance that someone else in the same cabinet as you will do something that could cause your website to go offline or perform slowly. An example of this is lets say a filing cabinet can hold 100 files, and each person is allowed to store 10 files each in the cabinet, which seems perfectly fine. Now say one of the people that you’re sharing the filing cabinet with stores a document that’s very popular one day, you find the people wanting to get access to your documents can’t because there’s 100 or so people crowded around the filing cabinet trying to get the other users document. People who want your documents end up in a queue and find getting access to your documents slow. You could find visitors giving up and leaving your website.
The good thing is that most shared hosting providing give you the option to choose your filing cabinet, including how much space you need, this will help you keep your website up and running.
With shared hosting you usually get access to a control panel with various options, and an FTP account to upload your files. You can’t install your own software on the server, but you can upload and setup packages such as Wordpress, Magento and create databases.
Shared hosting is mostly suited to static websites and fairly low traffic dynamic site (Wordpress/CMS sites).
This is a little like shared hosting, except you’re allocated a larger amount of the file cabinet, and you can choose who uses up your space. You may have a drawer in the filing cabinet all to yourself, and you can create accounts for other people so they too can store files in your filing cabinet. In most cases it’s up to you to provide support to your customers, and to bill them for the space they’re using.
Think of the dedicated server as you’re own file cabinet. Somewhere you’ll have a filing cabinet in a room all to yourself. You have complete access to it, just as if it was in the same room as you. Only you can use up the space and you get to decide how the space is used up, whether it’s all to yourself, or you share it with others.
The benefits of a dedicated server is that you generally get more space than shared hosting, and the resources are not shared with anyone else. Think of it like water and electricity to a house. Shared hosting is like a block of flats all sharing the same water supply, when one person runs a shower, the water pressure can sometimes drop for other residents. A dedicated server is like a house with it’s own supply.
Dedicated servers however can be expensive, and you may be left responsible for the setup of the operating system and the necessary software to run your application. This is great if you know what you’re doing, but not so great if you’re not very technical.
Many dedicated server providers give you the option of managed and non-managed servers. A managed server will cost more, but someone else will look after and support it. With un-managed, keeping the server up to date and secure it all up to you.
A dedicated server may be useful to you if you need to perform CPU intensive tasks, get a lot of visitors, need a lot of storage space or need the security of knowing that only you can access the data you’re storing on the server. There’s also the bonus that it’s completely yours, and it’s performance shouldn’t be affected by other websites.
In my view, dedicated servers are less popular than they used to be, especially with the introduction of VPS and cloud servers, which have brought prices down and provide similar benefits plus more.
Virtual Private Server (VPS)
A virtual private server is like a filing cabinet with 5 drawers, and you get a whole drawer to yourself. Not only that, your drawer gets it’s a guaranteed amount of resources that can’t be used by other people in the filing cabinet.
A VPS is really a dedicated server that’s running special software that splits the single server up into smaller ones (virtualisation). When a VPS is created, it’s usually allocated a set amount of memory(RAM), disk space and CPU. This means that if there’s 5 VPS’ on a dedicated server, then in most cases a single VPS can’t have any affect on another.
When you create a VPS, you have the choice of operating system, and like a dedicated server you can choose to have a managed VPS or an un-managed VPS.
With a VPS, you can either be billed per month, per year, or received a monthly bill for only the number of hours your server has been up and running. This can be good if you only need a server for a few hours.
This option is great if you need something bigger than reseller hosting, but don’t need to the expense of a dedicated server.
One of the downsides of a VPS is that when you outgrow it, it can be difficult to upgrade, although most providers do provide the option for you to simply upgrade and download your VPS and their system will handle moving your data to a larger VPS.
A VPS is suited to those that need full control, maybe you need to install software that’s not usually available on shared hosting. With a VPS you could set yourself up as a hosting reseller, and resell space on your VPS.
I debated whether or not to put cloud servers and VPS under the same section, but decided against it.
Cloud service providers may have thousands of servers all connected together in one super large system. These systems can be spread across multiple countries.
When you create an account, like a VPS you’d choose it’s size and a cloud server would be created for you on a server somewhere in your desired country. Like a VPS you can choose your operating system, install your own software and you get dedicated resources. You would again get full control of the server as if it were your own.
With cloud servers, you are usually billed monthly for only the number of hours that your server has been up and running. Depending on the size of your chosen server, you’ll be given an hourly rate, and this is used to calculate your bill. This can be good if you only need a server for a few hours.
The added advantage here is that many cloud server providers also provide what’s called cloud file storage and cloud database instances.
With cloud file storage, think of it like an external hard drive with unlimited size, and that can be connected to from almost any server. Using cloud storage means that as people are accessing your files, you’re server isn’t really involved, so your server has to do less work. In may cases your files are spread multiple countries, so a user in the UK might get your files from a server based in the EU, where as a user in the US will get the files from a US computer, greatly increasing speeds. Another bonus here is you only pay for the storage space you actually use.
Cloud databases are much the same as cloud storage. Your databases are stored off-server and again can be accessed from almost any server. As with cloud storage, your databases may also be spread across multiple countries and are generally automatically backed up by the service provider.
Amazon, Google and Microsoft have all moved into this area in recent years, providing some absolutely fantastic solutions.
Application hosting in most cases is really a cloud server behind the scenes, but the service providers system handles setting up the server software required to run your application. Take PHP as an example. With a cloud server/VPS you would generally be responsible for installing Apache, PHP and MySQL, but with application hosting, this is taken care of for you. All that’s left for you to do it upload your application.
Your database and application resource files would be stored in a cloud database and cloud file server, as the application server only stores your application. This may sound odd, but it has a huge benefit.
To me, this type of solution is best suited to web applications. Lets say an invoicing tool. You upload your application files to your application server. Put your database on the cloud database service, and any PDF invoices that your application creates, put these on a cloud storage service. This leaves you with an application server, a database server and a file server, each doing what they’ve been specifically designed to do.
Now say your application gets some great publicity and you see a large increase in visitors. Don’t worry, the application server can be set to auto-scale, and it does this in one of two ways. The first is it can auto-increase and decrease in size to match demand, or for me the preferred option is that your application server is duplicated as many times as is needed to cope with demand. This means you could end up with traffic spread across 10 different application servers, but that’s ok, because each application server has direct access to your database and file server. So it doesn’t matter to the end user which application server they’re being sent to, everything will be the same.
As you can see, there's many different types of hosting, all with different budgets and aimed at different projects. It's key to know which hosting solution is best for you before you start your project, because getting it wrong can be costly, especially when it comes to web applications.