If you’re a regular reader you have probably seen a lot of vCloud related posts on my site as I explore VMware’s vCloud Director Product, but if you are a customer or just not a cloud geek you may be wondering what the big deal is around “the Cloud”.
I must admit that VMware’s vCloud director has been out over a year, and I haven’t given it… or “the cloud” … much of my time until recently. To put it simply “the cloud” is nothing more then a really awesome hosted server solution. What you do with the cloud is what makes it cool, and what sets it apart from a simple hosted server.
Cloud can come in several different flavors:
- PaaS – (Platform as a Service) This is a development platform meant for people who are actually writing the code, but need a place that can scale resources up and down depending on the phase of development. If you have ever wrote code you can understand how awesome it is to have a vanilla environment that is re-creatable time after time too. This makes it great for trying to recreate bugs and do troubleshooting. PaaS gives you just that, be it Java, PHP, some version of C, or whatever else your into.
- SaaS – (Software as a Service) think Salesforce.com or Google Docs or Microsoft Azure. SaaS is normally provided by the vendor who owns the software package that you’re using. While they may outsource the actual hosting of their services… you’re still paying them in order to get access to it. Most likely you already use this type of cloud for something and didn’t even think of it as “the cloud”.
- IaaS – (Infrastructure as a Service) Meaning it provides you with the same things that you would get if you were building out your own datacenter, virtual machines, networking, firewalls, disk space, compute power, etc etc. However instead of purchasing a physical asset you are paying monthly for access to these resources on-demand. This is where VMware’s vCloud Director product fits, and the type of cloud that I will focus this article around. (Note: There are many different vendors offering software to create a cloud, not just VMware however if you are using VMware vSphere internally you may want to research the benefits of using a “vCloud Powered” cloud host.)
So the best way to explain something in my opinion is to relate it to a business case, because after all why would you be reading this if you weren’t some how going to use this information at your job?
A Cloud Business Case
ACME Widgets has just decided to upgrade to a new ERP system, but this isn’t your dad’s ERP system. This new software allows anytime, anywhere access to all of the information a sales person, or manager could ever ask for (securely of course). It also has the ability to track shipments, do real-time inventory updates, and online customer ordering via a public eCommerce server. It will allow ACME Widgets, a small privately owned company, to compete with the big guys; estimates show that the company will grow exponentially after it is implemented. The best part (worst part for IT) is that the owner has decided everything needs to be implemented and ready to use in 60 days.
Wow right? But what if you are the IT guy for the this small private company, it sounds to me like this is going to be a very ambitious project which will require new servers, storage, firewalls, software licensing, bandwidth, and be able to scale very easily as the company grows. Not to mention that you will need to order all of this hardware and software, and somehow get your ISP to drop in a circuit to support it all. Oh, you might also want to look into getting a second carrier in case of an outage (Do you know how to setup BGP routing? I don’t). I almost forgot, did you budget for any of this? Also what is the build time on that new carrier and circuit? Last but not least, since you will be accepting orders via your eCommerce server your infrastructure will need to also be PCI compliant (hardening, audits, etc) All of these are issues that the owner probably didn’t consider when setting the 60 day implementation schedule.
Cloud to the rescue
Infrastructure as a Service (IaaS) is looking really nice right now to Mr IT person. Why? Well he gets his new servers, storage, the multi-homed internet connections, and all of the other infrastructure required for a monthly fee and its hosted at a PCI complaint datacenter. To boot there is no “build time”, only provisioning time which is almost nothing compared to the conventional way of doing things. Mr IT guy will also be able to purchase resources on a “Pay-as-You-Go” model and scale the CPU and RAM sizes to meet the growing needs of his companies new ERP system.
But how does he guarantee performance since you will have “neighbors”? Well if you have used VMware vSphere you may be familiar with resource pools, in a resource pool you get to configure minimum and maximum amounts of CPU and Memory (vSphere 5 also allows you to control network and storage IO as well). In the cloud you purchase capacity in the same way, you tell the provider how many Ghz you need, and how much RAM you want; then the provider provisions you a virtual datacenter with the purchased capacity. You as the IT professional can then go in and create as many virtual machines as you need (some providers will have limits on the number). In this example we will assume that the order was placed for 10Ghz of CPU power and 16GB of RAM.
Now Mr IT guy can login to his new virtual datacenter (through vCloud Director or whatever software the provider is using see the next screenshot for an idea of what the management interface looks like) and create a couple new virtual machines, one for the web front end, and one for the SQL back end.
I will assume that he is create a Linux Web server with 2 GB of RAM and 3Ghz of CPU capacity. Next he will create a database server with 12GB of RAM and 6Ghz of CPU power. Mr IT guy has allocated 9 of 10Ghz of CPU capacity and 14 of 16 GB of RAM. He was also provisioned public IP addresses and given access to the vShield Endpoint product which allows him to establish VPN connections from the provider to his corporate office.
Total time for deployment may be a week or so depending on how easily the ERP software installs.
Go Live Day + 6 Months
Let’s fast forward 6 months, now that ACME Widget’s new ERP system has been online for 6 months employees have gotten comfortable with the system and the load on our two virtual machines has grown significantly. Management has also learned how to generate reports from the system which is placing an increasingly heavy load on the database back-end. To compensate for this the software vendor has suggested a dedicated reporting server and dedicated eCommerce server; these new servers require an additional 6 Ghz of CPU and 10 GB of RAM. In the “old days” we would need to purchase some new hardware as well as wait for it to arrive. Then comes the task of loading the OS and vendor software to make it actually do what we need it to. But with “the cloud” we can simply request a capacity increase on our virtual datacenter and the provision the new virtual machines. We still have to load our OS and vendor software, but we can do that on day 1 of the upgrade, not after several days of waiting on the hardware. ACME Widgets is in pretty good shape, and Mr IT guy can manage everything from where ever he has an internet connection. Plus he is now free to work on the next project, and not be worried about planning for future upgrades and hardware migrations. (Note: In this second screenshot I have provisioned the two new servers, this literally took less than 1 minute because all of the servers are using VMware vSphere’s Linked Clone technology and all based on the same golden image. All that was left to do was customize the network information in the VM’s…. which can be done automatically in some cases)
(One more note If you notice there are two networks in this screen shot, ACME_Ext and ACME_INT. ACME_INT is an isolated network for just these virtual machines to talk to each other with no Internet access, this helps keep them secure. ACME_Ext is a NAT’d network with public IP addresses, vShield is used here to NAT the needed ports in to the proper virtual machine)
Other Use Cases
We could probably spend a whole day talking about all the possible fits for “the cloud”, but in general I like to think that any application that is accessed over an internet connection could be a cloud app. More specifically, any application that you would have to build out a back-end infrastructure for is a good fit for the cloud in most cases.
In the future hosting your enterprise application in the cloud will be the norm, not the exception. After all why do you want to deal with all of the headaches of building a PCI compliant infrastructure, or worry about hardware life-cycles, or even the hypervisor software life-cycle…after all you’re just one guy (or gal) and you have more important projects to work on. Let me rephrase that last statement… you should not be worried that “the cloud” is going to take your job; the goal of the cloud is to simply free up your valuable time so that other corporate projects get more attention and you are not spending your day managing infrastructure.