Shared Hosting, VPS, Dedicated and Cloud Servers
Before comparing VPS (Virtual Private Server), Shared Hosting, Dedicated and Cloud Servers we need to first know what they are and how they work. Any one of them can be suitable for your particular web application depending on the resources needed by the application, number of visitors per day using your application, the technologies you use to build the app and the level of performance, scalability and reliability you want from your server against the cost involved in buying and managing the server. Lets have a brief look at each one of them and then lets compare them to find out the one you will need. Though this article concentrates more on why should you use a VPS server and manage it yourself, but still it can also help you to choose the right option for you.
A shared hosting service refers to a web hosting service where many websites reside on one web server connected to the Internet. Each site “sits” on its own partition, or section/place on the server, to keep it separate from other sites. This is generally the most economical option for hosting, as many people share the overall cost of server maintenance. ~ Wikipedia
There will be hundreds of other sites residing on the same machine, sharing the same resources. This is the cheaper and at the same time performance and reliability will generally be less than other options. Though most of the shared hosting service providers will offer you almost everything unlimited! They will provide cpanel for free and tons of other things pre-installed, though most of which you won’t use ever. Those extra software and features along with many other sites hosted in the same environment will only slow down the overall performance of your hosted website or web application. Most of them will advertise unlimited disk space, unlimited bandwidth, unlimited databases and so on. But what they don’t advertise is the limits in CPU usage, memory consumption and database queries at a time. As your site traffic increases, you’ll eventually find out that the invisible database query limit will make your site unavailable to many visitors and though some of your visitors will see the site’s content but some others will see an error page with saying “unable to establish a database connection”. And if your site has more traffic, then they will shut down your account saying your application is using too much CPU or memory!
So ultimately there will be no use of those so called unlimited space and bandwidth. You will have your account suspended or your web application unable to serve visitors, long before you have even used 50GB of transfer per month. But still if you are just starting up, don’t have a good amount of traffic (say less than 500 visits/day) then it’s a good deal to host your web application in a shared hosting environment as it is generally a cheaper solution. If you want me to recommend a shared web host, I’ll recommend turnkeyinternet. Though there are leaders like iPage, Bluehost, FatCow, InMotion, HostMonster and HostGator. You may try any one of them, but I found turnkeyinternet to serve much better in terms of performance, functionality and customer care. I used it for some time before I’ve switched to Linode VPS Servers. Remember it’s your choice based on your needs :)
VPS (Virtual Private Server)
A virtual private server or VPS is a partitioning of physical server computer into multiple servers such that each has the appearance and capabilities of running on its own dedicated machine. Each virtual server can run its own full-fledged operating system, has their own dedicated memory, diskspace, Bandwidth and CPU Share. Each server can be independently rebooted and can have their own set of softwares and services installed.
With a VPS you can have root access to the system using ssh remote login capability. You can choose your own operating system distribution, can have your own mail server or can use google apps for email addresses on your own domain. I prefer to have an unmanaged VPS because a managed VPS will cost much more and things are beyond your control. The next pages of this tutorial is for helping those that want to setup their own unmanaged VPS from scratch to make it a high performance web server.
There are many VPS hosting providers, but in terms of cost and reliability there are mainly two leading providers, Linode and Slicehost. But recently Slicehost is acquired by Rackspace and seems to me is concentrating more on cloud servers than just VPS Slices. You may want to read this article for more information. Linode on the other hand is reliable and cost effective. It has Xen-Powered servers containing lesser amount of nodes per physical machine. Supports well known 64 and 32 bit linux distributions. I prefer 32 bit versions as they are better for low memory nodes, but if your web application needs more CPU intensive calculations and tasks (which is not the case for most web applications) then you might consider installing a 64 bit distribution.
Linode currently has the following features in brief:
- Full ssh and root access
- Guaranteed Resources
- 4 processor Xen instances
- Out of band console shell
- Dedicated IP address, premium bandwidth
- 5 datacenters in US and Europe
- HA and Clustering Support
- Bandwidth pooling
- Managed DNS with API
- Several Packages to choose from
- Burstable CPU/Memory usage
- Can also add more resources later if needed
A dedicated server is where you occupy the entire computer resources alone. If you have a site that needs to do heavy processing, with millions of complex database queries per day, then you need a dedicated plan. But they can be high on costs and also poorly supported. Sometimes you’ll find you are the only person that worry about the uptime of your server.
Also, poorly supported or low-budget dedicated servers are less powerful than many VPS options. As is the case between poor VPS providers and quality shared servers, there is a lot of cross-over. But for sure, if you don’t have a huge CPU requirement but do need a lot of RAM, then a VPS is an option and, particularly for unmanaged, because it’s cheaper. Have a look at this excellent article comparing dedicated and virtual servers. And atlast if you really have a site with huge amount of traffic and greater processing power is needed for your web application then I would rather suggest cloud servers instead of dedicated ones.
Cloud server is like a VPS which is dynamic (that is, it can be changed at runtime). Key attributes for this are:
- Additional hardware resources can be added at runtime (CPU, RAM)
- Server can be moved to other hardware while the server is running (automatically according to load in some cases)
Cloud computing provides computation, software, data access, and storage services that do not require end-user knowledge of the physical location and configuration of the system that delivers the services. Parallels to this concept can be drawn with the electricity grid, wherein end-users consume power without needing to understand the component devices or infrastructure required to provide the service. So simply imagine there are lot of power servers connected into a grid and your application will run being in a virtual standalone server where the CPU, memory and other resources will be coming from the cloud of computing devices. You’ll get your fair share of CPU, memory etc just like it would be in a dedicated server machine.
There are mainly two leaders in the cloud hosting world. They are Amazon EC2 and Rackspace. There is a good comparison chart available here for you. In Brief they are costly solutions but for handling really huge traffic and better processing performance they are the best service providers.
Articles in this Step by Step VPS Setup Guide
Getting Started with VPS – The Beginners Tutorial
Introductory concepts on web servers and virtual private servers. Introducing you to the world wide web from a technical point of view.
Shared Hosting, VPS, Dedicated and Cloud Servers
Comparing the popular server hosting solutions. Basic understanding of shared, dedicated, vps and cloud servers.
Deploy a Linux VPS Server using Linode
Tutorial on deploying your linux distribution in your VPS server and setting up hostname and initial configurations
Setup NginX Web Server (Not Apache!) on Ubuntu 10.04
Analyzing why NginX web server is better for you instead of the mostly used Apache. Demonstration on how to setup and configure NginX on Ubuntu server.
Enable HTTPS (HTTP+SSL) in NginX Web Server
Tutorial on enabling secure http connections for NginX web server. Demonstrating how to self sign your SSL certificate for the VPS server.
NginX Password Protect Web Directory
Helping you to protect specific web directories with passwords for restricting access to administration section or important private files that need to be accessed through the web.
Setup PHP-FPM with APC on Ubuntu 10.04 for Faster Performance
Installing and Configuring PHP5 with Fast CGI Process Manager along with the excellent op-code cache solution APC for faster and optimized PHP backend.
Setup MySQL with PHPMyAdmin on Ubuntu 10.04
Setting up MySQL database server and configuring for better performance in low memory environment. Also setup a web based database management front-end named PHPMyAdmin.
Configure Domains and Subdomains in your VPS Running NginX
Tutorial on DNS setup for adding additional domains and subdomains. Also configuring NginX for handling each domains/subdomains.
Domain Emails for Free Using Google Apps
Setup domain specific email addresses without installing any email server in your VPS. Google Apps seems to be a better solution in this regard.