Thoughts on British ICT, energy & environment, cloud computing and security from Memset's MD
The picture to the right gives you an idea of the complexity of the concept of cloud, but here I am going to try and highlight a selection of the key features – a description for laypeople. See my article “definition of cloud computing incorporating NIST and G-Cloud views”, and my post defining the differences between IaaS, PaaS and SaaS.
Cloud computing can be regarded as essentially the provision of computing resources and/or software as a utility, in the same way that your business uses familiar utilities, such as electricity, water, gas etc. Cloud computing enables you to pay for computing resources as you need them. These services are provided over the internet, on a consumption-based pay-as-you-use model, with short-term contracts and without up-front expenditure.
Whether you realise it or not, you’re probably already using cloud-based services. Facebook and Google are two prominent companies offering cloud-based software as a free online service to billions of users across the world. Google, for example, hosts a set of online productivity tools and applications in the cloud such as email, word processing, calendars, photo sharing, and website creation tools.
Broadly speaking, to be considered “cloud computing” an application’s data and core processing functions would be hosted/stored and managed online or ‘in the cloud’, and accessible from any PC, laptop or mobile device with a network connection in real-time.
In this context, “in the cloud” actually means that the application, along with the data it uses, is installed one or many powerful computers called servers, which are similar to home computers but in a different form factor and without screens, that reside within specially adapted buildings called data centres. Data centres are like warehouses filled with banks of servers in cabinets called racks. Data centres have powerful air conditioning systems to keep the servers cool and highly resilient power and internet connections. A picture of one of ours before being filled up is here.
Three Flavours of Cloud – the “service models”
One of the biggest confusions over cloud comes from the fact that it actually applies to a number of different layers in the “stack”. Don’t worry about what I mean by the stack, but if you’re curious see this post. There are three flavours of cloud, which broadly go down in cost but up in the required level of technical know-how in the order I have listed below:
These are usually applications or services that you access via a Web browser. Google Mail and Google Docs are examples of this kind of cloud computing. Some companies host an application on the internet that many users sign-up for and use without any concern about where, how, by whom the compute cycles and storage bits are provided.
Some SaaS is delivered via customised client applications, for example if you use Twitter or Facebook from an app on your phone. Our own SquirrelSave personal cloud backup product is also an example of SaaS in that sense – you, the user, doesn’t have to worry about where the data is getting stored nor the internal workings of the platform we have developed.
A better term than “software” might be “application”, since the platform part is also really just software, but SaaS has already gained wide acceptance. SaaS is usually the most expensive form of cloud since you are paying for the software as well as the underlying infrastructure and it requires no technical know-how. Examples of paid SaaS include Salesforce.com, though presently the most widely known examples are “free”. Of course, nothing is truly free, and by giving away their services companies like Facebook and Google are getting something – your information and time.
This is a set of lower-level services such as an operating system or computer language interpreter or web server offered by a cloud provider to software developers. Developers write their application to a more or less open specification and then upload their code into the cloud where the app is hosted and automagically scalled without the developer having to worry about it overly. Microsoft Windows Azure and Google App Engine are examples of PaaS.
In old-school hosting parlance, a managed hosting service might also be considered PaaS – the developer gives the hosting provider some code, and the provider worry about how many servers, how much bandwidth (internet connectivity), etc. and just give the developer one bill. Because of the auto-scaling and ease-of-use afforded by PaaS, and the abstraction/obfuscation it gives the vendor, it usually costs a premium over renting the underlying infrastructure directly (IaaS).
For the more astute readers: You might hear people say that that Facebook is also a “platform”. This can easily get confusing; yes they provide a platform for developers to make add-ons, like the popular game FarmVille, but in reality they are just being a gateway (FarmVille runs on servers outside Facebook’s data centres) and are not providing any computer resources, so they are not providing PaaS. A similar example is Apple’s iOS platform – they provide tools to developers and a gateway to sell their apps (the app store) but if those applications that have a cloud component will likely be using IaaS or PaaS from elsewhere.
IaaS is the provision of virtual servers and storage that organisations use on a pay-as-you-go basis. This is the most powerful type of cloud in that virtually any application and any configuration that is fit for the internet can be mapped to this type of service, but is also the most technically challenging to exploit. Amazon’s Elastic Compute Cloud (EC2) and Simple Storage Service (S3) are examples of IaaS, as are our own Miniserver VM® cloud compute and Memstore™ cloud storage services.
In practice, cloud suppliers often provide additional services alongside IaaS offerings, so the boundary between IaaS and PaaS can become blurred. However in its purest form compute IaaS can be considered as a bunch of unmanaged virtual machines (VMs) for which you provide the operating system image, that can be scaled up and down (by spinning up and tearing down VMs) according to your application’s needs in near-real time (ie. within minutes). IaaS data storage is more simple, working like a giant disk drive where you only get billed for what you are using, usually on an hour-by-hour basis.
A virtual server or virtual machine (VM), is just like a normal server but is smaller in terms of CPU, RAM and disk than a whole physical server, and several sit on each physical host server. We typically put about 15 VMs on each host server, for example. VMs have the advantage that they can be created and destroyed effectively in real-time in dynamic response to demand.
Private vs. Public – “deployment models”
As well as IaaS, PaaS and SaaS (the “service models”), cloud has a number of “deployment models”. The ones I’m going to focus on here are “private” and “public” cloud. There are also “community” and “hybrid” clouds, but I’m going to save that for a later article. Also, here I am just going to briefly cover what public and private cloud means in the IaaS context.
Public cloud means that your virtual machines are sat on the same physical host servers as other clients. A private cloud is where the host servers, and in some cases the physical network or even an entire data centre facility, is dedicated to one client. When most people say “private cloud” what they usually mean is “a company’s own data centre with some virtualisation software”. This is arguably not cloud since you lose the scalability aspect. When we, as a cloud provider, say “private cloud“, we mean infrastructure dedicated to one client that we scale (by adding dedicated host servers into their set from our standby pool) as necessary. Some people would call that a “virtual private cloud”.
Moving To The Cloud?
One of the great things about cloud is that it can be experimented with very cheaply. If you are looking to make use of cloud services then I suggest just dive in! Start small, with one service, and then move more services once you are ready.
Analysts have indicated that future technology leaders will gravitate to cloud-based models as a way to deploy software and to store content, and we are certainly seeing that trend. A lot of customer start using our cloud as their development “sandbox”, costing a few £10s of pounds per month, and as they gain confidence gradually migrate more critical applications across.