A student from Virginia Tech recently asked us:
“What’s the highest number of combinations your company can have of 1 Linux distribution (in any version) running with 1 application on 1 server?“
We thought he was trolling us at the time, but the student was doing bone fide statistics for their college major looking for real world examples. Since they have now become a cloud customer we’d like to share our response.
A combinatorics problem
So Jane is a highly-computable girl :) Her servers come in 7 different sizes. She can run 446 applications, everything from WordPress to Docker, over 6 different operating systems, in 16 different versions.
Let’s start by breaking down the question.
6 Linux operating systems across 16 versions
Well, Ubuntu is (currently) available on Jane in 5 different versions.
- Ubuntu: 18.04 x64, 16.04 i386, 16.04 x64, 14.04 i386 and 14.04 x64.
- CentOS: Jane offers 3 possible versions, CentOS 7 x64, CentOS 6 x64 and 6 x32.
- CoreOS is only available in a single version 1745.7.0, the stable one.
- Ubuntu’s dad, Debian, can be run on Jane in 3 versions: Debian 9x 64 (nicknamed Stretch) and the 2 Jessies, Debian 8x 64 and Debian 8x 32.
- Fedora is available in 2 versions on jane: Fedora 28 x64 and Fedora 27 x64.
- FreeBSD in 2 versions: FreeBSD 11 x64 and FreeBSD 10 x64.
So that makes the best 6 linux operating systems available, together in 16 different possible versions on Jane.
Jane comes pre-packaged with a whopping 466 apps. This number is excluding cPanel/WHM to make the calculation simpler, because cPanel needs at least 2GB of memory so can’t run on Jane’s smallest server size, and it’s usually run by Jane on CentOS instead of Ubuntu, for example.
We also say “pre-packaged” to exclude the fact that outside of the 446 apps, you can buy a server from Jane and put pretty much whatever software you want on it (within reason).
So whether you’re running WordPress or Joomla or Drupal or Magento or any of Jane’s other 462 apps, the choice is bountiful and you can use her apps (currently at time of writing) on up to 7 different server sizes: 25GB, 40GB, 60GB, 100GB, 200GB, 300GB and 400GB.
So, how many combinations of 1 app and 1 linux operating systems running on 1 servers can we offer folks?
The first thing to know is that this is a combinations problem. Combinations are different from permutations because for this question, we don’t care about the order, just the combination that makes up the set.
To count all possible combinations as required by the conditions of the VT student’s problem, let’s introduce discrete variables X for a Linux distribution, Y for an application, and Z for a server type.
The choice of one of them doesn’t limit or otherwise affect the choice of the other variables, therefore these variables are independent.
X can take 6 different values (say 1, 2, …, 6) because there are 6 different Linux distributions and because we were told the version of a distribution doesn’t matter. Therefore it doesn’t matter how many different versions of Linux distributions we have.
Y can take 446 different values that stand for 446 different applications.
Z can take 7 different values that stand for 7 different server sizes.
Since X, Y, and Z are independent, the number of all possible combinations of 1 value of each (X,Y,Z) is the product of the numbers of different values of each of them, N = 6*446*7 = 18732.
In other words, the maximum possible number of combinations of any 1 Linux distribution (in any version) running with any 1 application is 6*446=2676. Next we have to consider that we have 7 different server sizes and multiply the obtained number by 7.
Thus, the maximum possible number of combinations we can have of any 1 Linux distribution (in any version) running with any 1 application on any 1 server is 2676*7=18732.
So, the answer is 18732 ways to host your stuff with us.