Shared vs Server

Many people who build Websites and applications have been at a point where they have to consider the best place for their project to live. Do they want to use a shared webhost? Or, do they need (or want) to run on their own servers. The majority of simple websites, blogs, and whatnot can run perfectly fine on a shared host. Millions of websites run on shared hosting, and for most it is the correct choice.

Other projects may rely heavily on custom software stacks, or non-standard modules, or just not function properly on a shared host. These folks typically need to run in their own servers. Sometimes, though, it’s not so much a need, as it is a desire to run on your own servers. Maybe it’s  just a matter of having  a greater degree of control of the environment. Maybe you just prefer to get your hands dirty, just to make sure the job is done right.  Whatever the reason, let’s take a look at the pros and cons of running your own server.

There is a third category, it is kind of half way between shared hosting, and running your own server. The managed server may be a viable option for large sites that run standard software. Typically, however, these services do not support nonstandard configurations very well, or are limited to only hardware issues and OS/security updates. While some of the drawbacks to shared hosting can be mitigated with managed server solutions, they still do not offer the flexibility of a fully DIY solution. This article is focusing on the pros and cons of running your own unmanaged server.

Pros

  • Control. Running your own servers you can control every aspect of the environment your project runs on. If you run on your own hardware (on premise or colo) you can control the hardware and networking as well.
  • Custom Software. This goes with control. Running your own servers Cloud/virtual or physical will allow you to run custom software/stacks. It also allows you to utilize operating system and hardware features, which simply would not be available in a shared environment.
  • Resources. The system resources are all yours to use, not split between multiple users. Even in a cloud environment, you are guaranteed a certain piece of the resources.
  • Security. This one is specifically for on premises hosting. The security on your server is as good as you design it. You don’t have to trust a hosting company to get it right. This only applies to servers you physically  own.  With rented, virtual or cloud servers the provider can likely access any unencrypted data. Also, if you don’t change it they will have the default root password.
  • Fun and Educational. So this one is subjective, but I enjoy building and administering my servers. Not to mention it sharpens your skills, and sometimes lets you build new skill sets. This is not to say that if you are an inexperienced admin you should put your business website on your own server, just to learn. But if you are just messing about with something like, maybe, your personal blog, by all means use it as a learning tool. Even for an experienced admin though, running your own server keeps those skills sharp.

Cons

  • Servers require upkeep. With shared hosting you don’t have to worry about keeping the server up to date, because your provider does it. When you run your own servers keeping up with updates is your job. If you own your hardware you also need to make sure that it is properly maintained, and hosted in a proper environment.
  • You are responsible for the security of your servers. You have to set up the firewalls, the fail 2ban, etc. You have to monitor the logs. Most of all you have to make sure passwords and keys are secure.
  • Software install and Config. Unless you use a server wizard that pre-installs stacks and apps, you have to do it all yourself. Then you have to configure all the various pieces to play nice together. It can be a very time consuming project.
  • Backups. You have to be responsible for ensuring that you backup your servers regularly, and make sure that you store the backups for safe keeping. If you forget to backup, and experience a server casualty that data is gone, baby, gone. Typically, in a shared environment the provider will do this for you (although I recommend you do it there too.)
  • Redundancy. When you run your own server you have to build your own redundancy. If you have anything close to a serious project you should always have a fully mirrored backup server ready to go in case of an emergency. In an ideal situation this server would be in a completely separate location. If you also own your hardware, you will need to keep spare parts as well.

There are pros and cons to both shared hosting and running your own server. These points are just a few that I came up with off of the top of my head. The idea is you if you don’t have the experience, or the need, then running your own server is just unnecessary. If you just want to run  server to learn that is fine, but unless you need to don’t run your production environment on it until you are fully prepared.

If you can think I missed something, post it in the comments.