Mar 16, 2012

Each enterprise tries to stay afloat by reducing operating costs and increasing profits, Resultly is no different. As an Internet based company, it is crucial to us to remain in operation all around the clock. One of possible solutions to increase availability of our services is to establish a high level of redundancy. Let us take a look at a simple computation that makes the power of redundancy obvious.

Let us assume that that a vital process has a probability of running at any given time is P (measured from 0 to 1), then the probability
that the same processes is found inactive is (1-P). Now assume that we have two copies of the same process, then the chance that all of them simultaneously crash is

(1-P)(1-P)=(1-P)2

and the chance that at least one is running would be 1-(1-P)2.

As an example, let’s say that P=.8 i.e. chance that the process is up is 80% (which is quite low). By doubling the number of processes, we measure the probability by the established expression: 1-(1-0.8)2=0.96. Thus we increased the chance of success from 80% to 96% by increasing the number of independent copies. Having two servers running the same process is expensive. The key to increasing redundancy and controlling the cost lies in hardware virtualization. 


We already wrote about our relationship with Apple in one of the earlier blog posts. Apple came to our rescue this time as well. The Mac mini Server is a perfect candidate for a highly sharded cluster configuration we are pursuing. Its compact form factor (four units in a 1U rack) allows us to save on our server collocation costs among other benefits. After we chose the server platform, we have yet to solve two problems: establishing high level of redundancy and running Windows based processes on the Apple platform. Both of these issues can be addressed by using virtualization techniques. 


We already discussed Parallels products in our earlier posts. Parallels offer virtualization software for Apple amongst other platforms. The Parallels’ motto is  “Run the Software You Need on the Hardware You Want” and that addresses one part of the problem. We install Parallels Server software that allows simulation of different server environments on the Apple platform. Parallel Server enables one Mac mini for running up to four copies of Window Server establishing a high level of redundancy. (We found four in our configuration is optimal based on four physical cores of our Mac mini CPU’s. In theory, you can run more simultaneous copies.) Having this number of copies of the same process, the probability that at least one copy of the process remains viable is 99.84% according to the computations we discussed earlier. This, of course, does not apply to the scenario when the hardware fails and all four virtual servers are lost. However, this is still a reasonable approach to improving redundancy and controlling the cost.


A byproduct to such configuration is the maximized hardware throughput.  Hardware throughput and making sure we are able to squeeze every bit of performance out of our machines is also crucial. Parallels hypervisor is optimized to allocate system resources efficiently. Having four Windows Servers ensures that at no time a processor is in the idling mode and this way, we get the most out of our hardware.

There are other useful features of Parallels Server that we use at Resultly, such as Integrated snapshots and point and click migration. These capabilities are irreplaceable during disaster recovery and rapid deployment processes. Rapid deployment is critical in the initial state of our growth and point and click migration capabilities suit our needs very well. It allows us to make a copy of any virtual machine and seamlessly transfer it to a different server.