Web hosting models for software development agencies
In order to choose a web hosting solution for a project, what criteria do you take into account? Prefer managed or unmanaged services? Shared or dedicated environments? In this article I explore the alternatives from the viewpoint of a web development agency and argue why a website per cloud server is our preferred option as of this writing.
Many of our customers are web development agencies. They usually provide an integral solution to their clients, including website design, development, and deployment into a production environment. To accomplish the latter, agencies usually have the prerogative to decide how to host the project.
In the remainder of this post I review their main options for web hosting when considering two independent axes: whether the hosting service is managed or unmanaged, and whether the website shares the underlying server with others or not.
|Self/semi-managed||Multiple websites per server||One website per server|
|Fully managed||Shared Hosting Provider||Managed Service Provider|
Fully managed. Managed Service Providers (MSP) take care of maintaining the infrastructure that supports your clients’ websites. That’s great because you can focus on developing websites, plus you have someone to call if something goes wrong.
The cons of this approach are the added cost and the lack of full control – since it’s a managed service, you won’t have a
root account on the underlying servers. If the latter is ok for your website(s) and you can afford it, this is a serious option to consider.
Self-managed. This is just the opposite of a fully managed service – you have to maintain your servers on your own. If your business consists of developing web applications, odds are that you don’t want to do this. Yes, you’d keep full control of the infrastructure, but also a lot of systems administration overhead.
Semi-managed. There’s a trade-off between the former choices. You may manage your servers with the help of a system management tool that also offers technical support (Moss is an option in this case). In this way you can retain full control of your servers without most of the administration burden, at a more affordable cost.
In a shared environment, a same server may host different unrelated websites.
If you choose a shared hosting provider, you’re buying a managed service. If you don’t know where to start, this is the default solution for many end users and for some web agencies. However, a single server is shared among different customers but none of them have full control on the server. So your application needs a PHP extension not currently installed on the server? Ask your provider and wait for a positive response. You want something that conflicts with other packages already installed on the server? Too bad, your provider won’t be able to help you.
Another constraint of shared hosting plans is that, in general, your websites won’t be completely isolated from others in terms of performance and security. Some of your ‘neighbors’ might consume too many resources (cpu, memory, i/o), impacting the performance of the remaining websites in the server adversely. This also implies that the response time of your websites might vary a lot over time. In a similar way, if a neighbor is successfully hacked, it might be leveraged to get access to the other websites.
Of course, there are techniques to mitigate the former issues and to provide an appropriate level of isolation among websites. Unfortunately, not all shared hosting providers have the same quality. In case you’re interested in a shared hosting plan, look for reviews about the provider and make your own mind.
Finally, despite being a managed service, some providers are known because of the poor customer support experience they provide. Again, do your own research before committing to one provider – or keep reading to see how to manage your servers on your own 😀
When shared hosting is not enough because of software, performance or security requirements, it’s time to manage your own servers.
Web development agencies have traditionally hired virtual private servers (VPS) or dedicated servers to host the websites of their customers. In many cases, they’ve kept using the shared model of web hosting providers by deploying multiple websites per server. Each of these websites usually belongs to a different client, hence the term “shared” still applies here.
Years ago, such a shared environment was the only cost-effective option for self/semi-managed small websites. Contrary to a shared hosting plan, in this case you have full access to your server and can install whatever you may need on it. But you might still face performance and security issues unless you know what you’re doing. In order to isolate the websites of your different clients, you must properly configure your server stack.
Luckily, there are tools that help you set up your server and also count on technical support. Last week we released native support of shared environments in Moss to provide our customers with appropriate guarantees of security and performance, regardless the hosting model of their choice. However, you can achieve greater isolation by constraining each website into its own server(s), as detailed below.
Instead of stuffing all your clients’ websites in one (or few) large server(s), why not host each website within its own server? Let’s refer to this as a dedicated environment. You achieve way higher guarantees of performance and security isolation in this case. But you might think:
Well, that’s ok for larger websites for which our clients pay more. But I don’t earn much from low traffic sites, so one server for each of them is kind of overkill – too expensive.
That used to be the case. But Cloud Computing has consistently driven down the cost of web hosting. For most websites, you should afford to spare from $3 to $5 a month on their infrastructure, shouldn’t you?
|Amazon Lightsail||1||0.5 GB||20 GB||1 TB||$3.5/mo|
|Vultr||1||0.5 GB||20 GB||0.5 TB||$3.5/mo|
|Amazon Lightsail||1||1 GB||40 GB||2 TB||$5/mo|
|1||1 GB||25 GB||1 TB||$5/mo|
The dedicated environment has additional advantages. Since you’re spreading your clients’ websites, you’re avoiding any single point of failure. If your VPS or dedicated server with tens of websites breaks (and keep in mind that things actually break), you’ll start receiving unpleasant calls from lots of clients. However, if a cloud server that hosts one website fails, you only have to launch a new server and restore a single site. Faster, easier, and less stressful than in a shared environment.
We think this alternative is superior in most cases, and therefore Moss has supported it since its inception. However, there are cases in which the semi-managed shared model makes sense and therefore it’s now fully supported too.
Web agencies usually decide how they host their clients’ websites. Their web hosting choice will have an impact on their budget, ability to control supporting software, required maintenance effort, and websites’ performance, security, and robustness.
In general, we advocate for dedicated environments in which a cloud server hosts a single website. However, one size doesn’t fit all and shared environments are still relevant for certain use cases. If that’s also your case, check that your provider and/or tool of choice offer the appropriate standards of technical support and performance/security isolation among websites.