I’m preparing a talk called Can Cloud Computing Save the World? so I have been doing some research around the comparison of features between physical servers, virtual servers, and cloud services. To a certain extent this data collection is vulnerable to individual bias so I wanted to get some feedback to see if I’m missing any key points, over emphasizing other points, etc.
|Costs||Initial outlay for hardware can be large. However can be more cost effective in the long term compared to hosting costs.Requires rack space/power/network/cooling which you’re either paying to have hosted or paying for yourself.|
|Availability||Depends on the facility. Quality hardware does not fail often (redundant power supplies, redundant storage, etc). Most common cause of downtime is power reliability.In theory the OS on traditional hardware has same reliability as virtualized OS. Reliability of OS compared to OS running your cloud infrastructure is debatable.|
|Scalability||Expensive and time consuming to scale out, Easy to scale up to a certain point but can be time consuming.|
|Manageability||Still have to manage everything (hardware, OS, application, physical environment)|
|Costs||Should be less than straight physical servers because of consolidation.Licensing for VM software can be expensive.Still has infrastructure dependencies of Physical servers.|
|Availability||Adds dependency of virtualization software which could increase downtime. However virtualization software is generally very stable.In a HA virtualization environment reliability can be increased because virtual machines can move to new hosts in event of hardware failures.|
|Scalability||Can scale up virtual machine quickly if resources available on host machine (e.g. memory can be added instantly)Provides leeway in scaling out hosts (add host, move virtual machines to host to spread out load)Requires large investment to provide most flexibility (e.g. SAN required for moving of VM’s between hosts)|
|Manageability||Templates simplify deployments of new VM’s compared to deployments to hardware Must manage virtualization technology Decrease the amount of hardware to manage
Still have to manage everything (hardware, OS, application, physical environment)
Virtual Server Solutions
|VMware ESX||Provides most feature rich solution.Well probably be most expensive solution.Must learn VMware OS and Application.|
|Microsoft Hyper-V||Comes free(ish) with Windows Server 2008Live migration capabilities cause network connections to drop while guest moves. Windows 2008 R2 will address this issue.Really good fit for Microsoft shops.|
|Costs||Costs start very attractive. You only pay for what you use.More expensive over the long term than other solutions.Pricing model fits fluctuating needs the best. Predictable needs will get better costs from other solutions.|
|Availability||Depends on cloud provider.Depending on application will add dependency on working internet connection. Problematic for many line of business apps. Not a problem for web based companies.Longevity of cloud provider is a concern. May want to architect/look for solution that allows easy transport to new provider or physical/virtual solution.|
|Scalability||This is the strong suite of cloud computing. Can scale up number of instances hosting your application very quickly.Must be conscientious of architecting and developing application to leverage scalability features of cloud provider.|
|Manageability||Depends on cloud provider. Goes from very little management overhead to managing entire OS stack.|
Cloud Computing Solutions
|Microsoft Azure||Strong candidate for .Net & PHP Programmers.IIS cloud based provider. No OS Management.Costs have not been announced.
Strong development suite in Visual Studio, including local cloud fabric for development.
Azure fabric will be available for companies to host themselves.
Storage, Relation Database (MS SQL Server), and Non-Relation Database part of solution.
Worker Role provides non-web based processing (e.g. Scheduled Background tasks)
|Google App Engine||Strong candidate for Python and Java Programmers.Free for smaller apps. Charge on larger usage.No background processing.
Storage and Non-Relation Database part of solution.
|Amazon Web Services||OS based cloud provider. Full access to OS (Windows or Linux)Costs are complicated. Range from $27/month pre-paid per small instance to $2300/month for on-demand Extra large instance.Storage, Content Distribution, Non-Relation Database, Message Queue, Monitoring, Auto-Scaling, Load Balancing all part of solution and all have associated costs.
Most flexible solution in what you want to do, but most work to setup and maintain.
Industry leading Cloud Solution.
|GoGrid||Lower costs than AWS, but lacks features of AWS.Can not save template of machine, can only use stock templates.Load balancing provided for free.
Relation databases only, on instance you host yourself in cloud.
In my opinion the debate between physical and virtual servers is trivial. Go with a virtual server unless your load is so high you can not put multiple guests on a single piece of hardware. 95% of the time that rule of thumb holds true.
Choosing to go with the cloud comes down to some basic questions:
My flow chart is a little hard to read but if you save the JPEG file locally and view it you can zoom in better. The basic questions are:
Can you not afford physical servers? (if not then look at the cloud)
Do you have regulatory or security issues with your data being in the cloud (even if it’s encrypted)? Does your application need to be more reliable than the internet (e.g. Accounting application for accounting firm)? Can you easily predict what your load will be for the next 3 years?
If you answer yes to all three of those you probably do not want to use the cloud. Otherwise take a look, it might be a very good fit for you.