2

I work for a digital agency, where we design, build and host websites for our (local) clients. Currently, we have approx. 80-90 sites scattered on 11 VPS instances. 99% of those sites is WordPress and 80% is (very-) low traffic. We have a few that have a constant (and slowly growing) flow of visitors. There is also one, that is a seasonal: for 11 months the site is as good as dead, but then when it "wakes up", it generates quite a lot of traffic (ticket sales and check-ins).

In the coming weeks / months we will be migrating a new client, whose website generates more traffic in one day, than 50% our least busy websites, combined, in a month (currently approx. 10 GB / day, but we're working on optimising the site, prior to migrating)

That site currently sits on a VPS with 2x vCPU's (Intel Xeon E5-2650 v3 @ 2.30GHz), 4 GB memory and current consumption is:

load average: 0.74, 1.30, 1.41

KiB Mem : 4194304 total, 1443792 free, 1534936 used, 1215576 buff/cache

As for our servers: most of them is a 4x vCPU / 8GB RAM and although each one is being backed up on a daily basis, there is no failover / redundancy in place.

As we're looking to "up our game" and provide more failure-resistant service, I have to admit, that while up until now I knew my way around and could solve most of the issues we had with our servers - when it comes to scaling and the like - I am lost.

I do feel that 11x VPS is most likely an overkill, and those resources could have been organised in a much better way, but this is how things were here when I joined a year ago, and up until now there was no "need" and/or time to think about alternatives / improvements

So with this "story" I would like to get an advice on what solutions should we be setting our eyes at, to benefit us most? How to put the resources we have to a best use? Or should we be rather looking for a Dedicated Server?

Personally, I was thinking about a following setup:

  1. two larger web-serwers behind a load balancer
  2. two larger web-serwers behind a load balancer + one DB server

and to cut the load even further, both web-serwers with CDN

any help would be greatly appreciated.

Tomaski
  • 123
  • 4
  • 1
    `there is no failover / redundancy in place` - So what happens if you experience a catastrophic loss of your infrastructure? Do your customers lose their sites and their data? What kind of guarantee or SLA do you offer them in your contracts? – joeqwerty Jan 18 '19 at 15:06
  • there is only a daily offsite backup, as set by previous IT guy. And it was deemed "sufficient". Apparently I am the only one here trying to organize / failsafe things beyond just a single backup. As for the SLA's: there are none, as there is nobody here who even understands what a SLA is xD. There is 1 man IT department here (myself) and 3 woman design department, so the things like SLA / loadbalancing etc are basicaly a klingon speech to them xD – Tomaski Jan 18 '19 at 15:35
  • OK, so the question now is what do your customers think they're getting? Do they assume or expect that you provide backups, recoverability, availability, etc.? What is in the contracts? What specific services are listed? What do the customers think or assume they're paying for? – joeqwerty Jan 18 '19 at 15:57
  • well, we offer them that we'll be maintaining / updating their websites (as well as the software it runs on), making regular backups and that we'll recover the site if it goes down. None of our clients has access to the servers (although we provide it, none wanted) and 80% of them does not even have / want access to the WordPress, as it is "our job" to mess with the files and WP-related stuff. Those contracts were constructed some time ago by people without any knowledge about hosting. Now, as the business grows, need arose to improve the services offered – Tomaski Jan 18 '19 at 19:09

1 Answers1

1

Your Value

First decide where your organization's competence is and where you add value. Experience in installing, maintaining, and scaling on bare VMs is one way to go. But if you don't want to be sysadmins, you can outsource that to one of the several WordPress hosts. This frees you up to do just design, at the cost of being less in control of the platform.

Scaling Approaches

Two large web servers is a scaling up approach. Few boxes is simpler to (manually) manage, but has its limits and tends to have single points of failure.

More smaller boxes is a scaling out method. Finer control over (automatically) adding resources, and less likely all will fail. Implies a system to manage host lifecycle. Eleven small VMs is not a lot in such a setup, where each serves a small amount of traffic and might have a duplicate set in another region for redundancy.

Try Something

Consider building a prototype load balanced service in a cloud. Doesn't reuse your existing resources, but is an experiment you can delete when done. WordPress is a common application, so you will find documentation and examples of deploying it.

Several providers have the tools: load balancer, auto scaling VM groups, object storage for images and such, maybe a managed DB offering, behind a CDN of some kind. Or IaaS and build on bare VMs. Either way, learning the correct density of sites per host, and how to add more hosts, will be useful.

John Mahowald
  • 32,050
  • 2
  • 19
  • 34
  • thank you @John for the tips. I surely will set my googling in the directions you advised. As for managing the servers: I have always been more technical than creative and that is why I am tasked with code related stuff and maintenance of our infrastructure, while ladies do the "nice" stuff. I enjoy tinkering with servers and like to expand my knowledge in this area. Unfortunately things like clustering, scaling, orchestration are uncharted waters for me - hence my request to be pointed in the right direction – Tomaski Jan 23 '19 at 09:11