Hosting Services in 2017
Published 2 years ago
There are plenty of options available nowadays when it comes to choosing a hosting option for your application. It depends always on what kind of application you have and what is your goal. In this article, we will take a brief look at what options are available today and how to choose the right option for your specific case. Keep in mind this is not a technical tutorial but rather an introduction to the topic from the business perspective.
So the 3 main categories are Shared Hostings, Virtual Private Server (VPS) and Containers. Historically all these 3 options appeared in this order. Currently, all of them are available and meet specific customer needs. Our goal here is to understand each of them and where to use them. We at ExtremeSetup tend to use right tool in the right place, that's why we will try to have an unbiased overview.
Shared Hosting is bare metal servers with installed OS and multiple clients applications are running inside the same OS. This is the first and oldest type of hosting, but it's still widely used currently because of some important advantages. Companies like Hostgator, Bluehost, Godaddy provide this type of service. Shared hosting usually has preinstalled Cpanel, Wordpress, DNS management tools for easy setup. They are cost efficient, easy to deploy because of available preinstalled tools hosting option. But it also has disadvantages as far as security is concerned, since multiple clients host their apps in the same OS. Other problems are speed and overload of the server. If some or more applications need to consume more resources then all the applications from this server will suffer. So why this type of hosting is still available? A shared hosting still makes sense if you want to test an idea (a startup) or to show it to a client, for small websites with low daily user rate. And if the idea is viable then you move it to the next level which is VPS.
Virtual Private Server as the name suggests is running a virtual server. Virtualization is the possibility to run a guest operating system inside host operating system. So with this option clients can start their own OS inside hostings company OS and this virtual OS will be available only for this client. Companies like Digitalocean, Linode, Vultr provide this type of service. They also provide an easy interface to choose specific OS that you want to deploy. Here price can go as low as $5/month and go up to $1000/month and more, but the good news is that you can easily scale it as you need, if your application grows and needs more resources this means that you grow your revenue and this means that you will be happy to spend a small portion of it for more resources. Since you are the only one who use this virtual machine you can setup your own security policies. It gives you the flexibility to move them around and start/stop them as you need it. For a monolith application, it's a good fit when you pack everything in one machine and start everything at once. The disadvantage comes when you have to run multiple copies of the operating system when you have a microservice application architecture. Even though images for VPS are optimized for virtualization, usually there are a lot of OS related stuff which is not needed to run a specific service. Another disadvantage is that you have to know how te set it up initially and with great power comes great responsibility. So the big disadvantage of VPS are resources allocation, which brings additional costs and it takes the time to start/stop the VPS. This disadvantage is faded a little by hardware and processing costs going down, but still, in some situations, it's a problem, like running a Redis server separately. Here come containers as a solution.
Containers try to combine both worlds of shared hostings and VPS. Multiple containers can be stored on one operating system but at the same time provide minimum virtualisation needed to run it independently from each other. We can start/stop containers in seconds rather that minutes in case of VPS because now we rely on host OS. Resources like CPU, RAM and storage are more cost efficient because you don't have to run multiple copies of OS. OS itself isolates the containers from each other and provide protection. Containers are very easy to scale and upgrade. Like VPS containers also make use of repeatability factor meaning that once one developer setup a project next developers can deploy on their environment exact the same build. To run containers on your system you need a container engine. The most popular container engine by far is Docker. In future articles we plan to go more in depth about containers since it is a very powerful tool when it comes to building applications, so keep in touch with us.
Conclusion: So here is the main idea behind hosting your project and deployment options. I hope it makes sense and we will keep improving this article as we digest more information about the topic. Thaks for reading and see you on the next journey.