I decided to start writing this series of blog posts months ago, but hasn’t really gotten around to it, until Andy Galbraith (b|t) brought it up again last week on Twitter. The end of this story will be how at my last job I was part of team that rolled out a comprehensive private cloud solution. It wasn’t as pretty as Amazon or Microsoft’s cloud solutions, but it worked. Users could connect to a portal, select the size and type of VM they wanted (Windows, Linux, SQL Server, Oracle, or MySQL) and based on those inputs, usually within an hour or so have a VM, that was functional, accessible and in the proper network zone. Before I go into all the details, I’d like to take a step back and properly define what cloud computing is—our friends at National Institute of Standards and Technology (NIST) have done just that in this document:
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
I’m going to borrow from NIST again but they mention these five essential characteristics:
Broad network access
We managed to reach all of these in our project—the measured service piece was a little bit of a challenge, as the company didn’t have a chargeback model, but we still managed to keep track of what group requested what.
In reality, there are several things you need to do, before you can even think of doing this sort of a project. It’s not something I’d necessarily recommend to IT organizations that are not current operating at a high level of maturity.
Robust Virtualization Environment—our early attempts at virtualization were dramatically undersized and didn’t scale out well. Before we embarked on this project we rolled out best in class VM hardware along with enterprise class storage that was designed around virtualization. If it doesn’t perform well—clients won’t use it
Consistent Installation Processes—if you don’t have scripted out processes for installing SQL Server, or images of standard Windows and Linux builds, you will want to start on that before you think about starting a private cloud project. We were pretty fortunate in this respect as we were a large shop that had to scale on a large basis.
Good Scripting—prior to starting at my previous employer, I pretty much thought PowerShell was an optional skill. Managing 20 or so SQL Servers, was never so hard that I couldn’t do it manually, but when I was responsible for 750, there was no option. I wrote a ton of PowerShell (and had great guidance from someone I consider to be an expert) and a lot of T-SQL to fully automate the SQL Server installation process, and more importantly, the post-installation process, which consisted of setting up all of our standards and jobs.
Consulting Help—you probably don’t have the skills in-house to build your own service layer, or configure System Center Orchestrator to start automating the VM process—so you’re going to need help. Choose wisely.
In my next post in this series, I’ll talk about the function and importance of the services layer to building your private cloud.