Cloud Computing is one of the hot topics of the moment and everyone has an opinion on it. The term “Cloud” covers a number of deployment scenarios, including PaaS (Platform as a Service), SaaS (Software as a Service) and IaaS (infrastructure as a Service). In this article I’ll discuss the latter, including the use of Cloud Computing to deploy infrastructure and servers and storage from Cloud Service Providers.
The National Institute of Standards and Technology (NIST) defines Cloud Computing as follows:
“Cloud computing is a model for enabling 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.”
As we will see, although Cloud Computing should meet the above definition, there are also other requirements that should be considered before selecting a service provider.
Understanding IaaS, Infrastructure as a Service
It is important to understand what is meant by Infrastructure as a Service as we delve into what’s available in the commercial marketplace. IaaS could be described as the foundation or lowest tier in the Cloud Computing stack. In short, it refers to the deployment of traditional infrastructure components such as servers and storage. Today this usually means virtualinfrastructure, as the need to have dedicated servers is diminishing rapidly. However, it is not a requirement for Cloud Computing to be deployed with a virtualized environment.
Using Infrastructure as a Service has a number of distinct benefits:
• It enables the customer to understand the provided resources in terms of components they would traditionally deploy in their own data centers. This means existing skill sets around server, database and application administration can all be retained and re-used.
• It provides a degree of portability between service providers and the customer’s own existing infrastructure as deployment takes place on standard platforms such as Windows and Linux.
• There is no requirement to learn new application or programming frameworks as there is with PaaS and SaaS.
• The isolation of resources at the virtual server level means the customer has control over the storage of data, including additional encryption and security measures.
IaaS is therefore a low risk way to evaluate and dip a toe into the Cloud Computing universe. In order to evaluate which provider best suits your requirements, there are a number of considerations to weigh.
Cloud Computing is provided through the Internet, but at some point there are physical servers, storage and networking equipment deployed in a data center on to which your service will run. Therefore latency can be an issue, depending the application you are deploying.
Most IaaS providers operate from multiple locations. If they don’t then they are probably not worth considering because (as we’ll discuss later), operating out of a single data center presents issues around availability.
As an example, Amazon Web Services (AWS) is available in 5 regions globally; Northern Virginia and Northern California in the USA (known as US East and US West respectively), Ireland in Europe and Singapore and Tokyo in Asia Pacific. This geographic diversity allows applications to be provided globally with minimal latency impact.
Look for service providers that can provide services in your region and the business continuity they provide for those locations.
IaaS Redundancy and Availability
One benefit of providing multiple locations is that of increased availability. The question of course, is how that availability is implemented. AWS, for example, uses availability zones within regions. These are physically separate data centers (possibly in separate locations, but not guaranteed to be so) between which data is replicated.
In the event of a single data center location, it should be possible to restart applications in another part of the availability zone. Unfortunately a recent AWS outage highlighted the fact that the region and availability model was not infallible. Deploying across multiple regions or locations can increase availability.
Infrastructure providers are unlikely to offer services to enable the automated failover and management of applications, therefore it will be incumbent on the customer to look at how geographic resiliency can be implemented.
As we start to discuss the provision of services, it is a good point to delve deeper into what those services actually are. There are two features that almost all IaaS providers offer and both should be considered essential to offering a cloud-based infrastructure service. They are server/compute and load balancing.
Servers, or “instances” as they are frequently known, represent the main compute resource in IaaS. Simply put, they will usually be instances of a virtual server running a standard operating system such as Windows or a Linux variant. The underlying virtualization technology used to support the servers isn’t significant, although some service providers make a virtue of highlighting the hypervisor they use.
Operating system choice for servers will cover both Windows and Linux platforms -- the specific versions available will vary by provider. One point worth considering when choosing an O/S is the ubiquity of that platform across service providers.
Windows Server 2008 and CentOS are universally available (with Windows attracting an extra charge for licensing). Other variants of Linux are less popular. Amazon’s AWS takes operating system selection a step further by allowing the customer to choose from a range of AMIs or Amazon Machine Images. These include customized and pre-configured setups; currently there are over 7000 “community” customized AMIs to choose from.
When a new instance is created, the boot disk on which the instance runs can be persistent or transient. Persistent disks are retained when an instance is destroyed; transient disks last only as long as the instance itself.
Separating the instance from its boot disk is beneficial in a number of ways, as it can be replicated and moved around independently. Not all service providers offer persistent boot images and it is worth checking what features are offered in order to backup or snapshot the image in case recovery is needed.
The second feature is load balancing. A load balancer provides a virtual IP network connection and distributes connection requests across a number of instances of an application. This feature can be used to spread load across a number of server instances or to add a degree of resiliency and availability to an application.
For example, if a web application has periods of high demand, an additional server instance can be created and added to the load-balancing list for the duration of the increased demand. The temporary instance can then be decommissioned when demand subsides. The major IaaS providers all offer load balancing as a feature.
In addition to the two basic features discussed, some providers (notably Amazon) have a number of other offerings available. These include storage, database and messaging.
With the news of recent hack attacks, including the high profile PlayStation Network, security sits high on everyone’s list. In a Cloud environment both logical and physical security is a concern.
Poor physical controls can result in data breaches or worse, including prolonged outages. Logical security should ensure that unauthorized access can’t be achieved in what is a multi-tenant environment. Always review the security features of your Cloud provider to ensure they meet your standards or compliance rules.
The definition on Cloud Computing from NIST states “minimal management effort” as a service goal. This is achieved by most providers using web interfaces displaying dashboards and control panels. Web-based management should be simple and easy to use but is unlikely to provide the features needed to deploy cloud infrastructures at scale.
Application Programming Interfaces (APIs) enable Cloud computing to be integrated into existing business processes, including change control, provisioning and billing. And for organizations that already run their IT operations as a service to internal business customers, this will be mandatory. When multiple providers are used, APIs enable a common interface to be established, irrespective of where the computing resources are located.
Finally we have the critical subject of cost. It may seem strange to discuss cost last, but in reality most providers are pretty close to each other in the cost of their services.
Of course every provider will do differentiated pricing, including the costs of some services as part of the package and charging for others. It’s worth ensuring you know the full details of what your cost model is and more importantly how that translates into any Service Level Agreements if the service is unavailable or performs poorly. This is probably the most important aspect of service provision to understand; your business could be affected by an outage against which you have no claim.
Infrastructure as a Service provides an easy way to start using Cloud Computing. Most providers offer the core services of server instances, storage and load balancing. When choosing and evaluating a service, it is important to look at issues around location, resiliency and security as well as the features and cost.