Cloud computing is a style of computing in which dynamically
scalable and often virtualised resources are provided as a service
over the internet. Users do not need to have knowledge of,
expertise in or control over the technology infrastructure in the
"cloud" that supports them.
Cloud computing is the next step on from grid computing. It may
build on grid computing, or it may have little or no centralised
infrastructure. Currently, the architecture of the cloud consists
of a number of reliable services delivered through data centres,
utilising servers with differing levels of virtualisation. These
services are accessible anywhere that has access to networking
infrastructure. The Cloud appears as a single point of access for
all of the users needs. Commercial Clouds typically offer service
level agreements to their customers. A large amount of the
foundation for Cloud has been provided from the Open Source
community.
Customers using the Cloud are renting usage of the system,
paying by usage or subscription. This reduces infrastructure cost
and gives the customer much more flexibility in regards to
expanding and contracting their IT needs.

There are currently a number of providers of Cloud Computing in
the marketplace. This report will focus on the following
providers:
Amazon Elastic Compute Cloud
This is a part of the Amazon Web Services. EC2 is a web service
which allows customers to create and manage different server
instances. S3 is a web service providing scalable data
storage and Elastic MapReduce is a web service which provides data
crunching/analysis services.
EC2 allows multiple AMIs (Amazon Machine Images) which can be
Windows Server 2003, 2008 or any of the AMIs available from Amazon.
Persistent data is stored in the EBS (Elastic Block Storage) which
can be utilised across instances of the AMIs. The deployment
procedure is very command line based, but this could potentially be
automated to make life easier.
IBM Blue Cloud
An initiative which builds on their Tivoli industry management
software by providing a Cloud to existing/new customers combined
with extensive consulting / training to help customers successfully
move to Cloud computing.
IBM is providing their Information Management, Websphere and
Lotus products as Amazon AMIs for developers to work with.
Microsoft Azure

Azure is a new operating system, originally codenamed "Red Dog".
The system consists of four "pillars"; storage; the "fabric
controller", which is a management system for modelling, deploying
and provisioning; VM / virtualised computation and a development
environment. When Azure is deployed on one machine, multiple
instances of it can be duplicated on the rest of the servers in the
Cloud using virtualisation technology. This is achieved using
simple Xcopy deployment.
Azure contains four layers:
Layer zero is Microsoft's Global Foundational
Services (GFS). This is the lowest level of the software that
interfaces directly with the servers.
Layer one is the base Azure operating system.
This layer networks and controls the Windows Server 2008 machines
which comprise the Microsoft-hosted cloud.
Layer two is a set of services which run on top
of Azure. The initial set of services provided include Live
Services, SQL Server Data Services (now known as SQL Services),
.NET Services (formerly know as "Zurich"), Sharepoint Services and
Dynamics CRM Services. Developers can use these services as
required, or use the lower level Azure services to construct Cloud
applications, or use the services from normal hosted web/Windows
applications.
Layer three is defined as the Azure-hosted
applications. Some of these are from Microsoft and include Sharepoint Online, Exchange Online and
Dynamics CRM Online. Microsoft is also currently working on
Forefront Online (a security product) and System Center Online (a
management service of IT pros). It should be noted that the
Sharepoint Online offering is very much more lightweight than MOSS 2007 and is missing a significant
number of features. These Azure hosted applications will function
in the same way that Salesforce does currently
When writing an application, the developer will still be using
Visual Studio. The Azure libraries are downloaded and provide new
cloud application types. Once a project is set up using the Azure
web site, the application can be published to Azure using the
standard Visual Studio publish function. When creating the project,
the user is provided with UAT and Live URLs for the given
project.
Sharepoint Services would allow us to add services for storing
documents, provide InfoPath forms, control document security and
provide complex search capabilities across the document storage.
Dynamics CRM Services provide extensibility for Dynamics CRM. An
application will be able to manipulate information stored on a
Dynamics CRM 5 based system by using the CRM service. The use of
these services would enable us to provide software which uses CRM
and Sharepoint functionality in our own applications.
One of the differences with Azure is that you no longer use a
SQL database for data storage. There are already tools appearing to
migrate from SQL server databases to SDS storage. Microsoft
provides two data storage methods; SQL Data Services (SDS) which is
an entity-based storage service, and Azure Table Storage (ATS)
which is a structured table based service. SDS offers more
flexibility and security. There are some considerations with using
these services. Being web-based, they are slower than SQL server so
caching is more important. They do not support stored procedures,
grouped queries and you cannot return partial records, ie. just an
ID column from a query. It appears that Microsoft is pitching ATS
for session storage and SDS for long-term data storage. Essentially
this means that as long as an application only references SQL in
the Data Access Layer, this should make the transition to Azure
easier.
Azure uses familiar tools, Visual Studio, SQL Server, IIS7, etc.
It provides a non-downtime upgrade facility by upgrading instances
of an application one at a time. Deployment is managed by the Azure
Portal, which allows Live and UAT environments to be scaled and
configured and provides one-click deployment from UAT.
Azure uses a consumption based pricing system, although they
have not released the tariffs at the current time.
One caveat of Azure is that the SDK is only supported on Vista
and Server 2008.
SalesForce
As well as providing CRM, SalesForce has provided a
platform called force.com, which provides a platform built on
Eclipse to build applications mostly through customisation, with a
purpose built IDE. Services provided by force.com are security,
data, Integration, logic, user interface and application exchange.
Force.com is licensed per user, application and month.
Citrix Cloud Center
The Citrix Cloud solution is provided using XenServer
Cloud Edition, which is a virtual infrastructure solution. This
manages any combination of Windows and Linux environments. Usage is
metered rather than time based. Management is provided by Citrix
Workflow Studio. This allows for burstable clouds. Citrix Workflow
Studio integrates with Visual Studio to provide tools for
developing and deploying activities (which are services) to the
cloud. The system provided is very similar to the Amazon offering,
but offers metered rather than time costing.
Zoho
Zoho offer a number of cloud-based web applications for
doing common business tasks such as CRM, document management and
project management. Zoho offer free utilisation of the products for
low usage (ie. up to 3 users of the CRM product), and then charge
per user per month.
Google Application Engine
Google offers a suite of APIs in Java/Python which provide
the ability to host web application using Google's cloud space.
Data storage is provided by an API. The google model provides quite
generous free quotas before switching to the billed system. Payment
is driven by usage rather than time.
Training
Using any of the Cloud systems would inevitably involve an element
of retraining. The way that data storage, view state information
and file management are handled in Cloud computing are very
different to the model that we are used to. However, most of the
offerings strive to make the transition as painless as possible and
offer very visual tools for deployment and configuration.
Microsoft, as usual provide a lot of tutorials and online
training for Azure. Out of all of the cloud providers, it provides
the best resources. Amazon also provides reasonable resources, and
its system seems to be starting to be used by other vendors.
In terms of the tools that we are familiar with, Azure is
probably the most painless transition from our current development
arena.
So what does this all mean?
The main advantage of Cloud based computing is that you no longer
have to worry about scaling, load balancing or downtime of the
application. Deployments should be much easier. There are some
concerns around the limited ability to rollback applications,
should they be found to be causing problems (for instance, Azure
currently only allows you to swap the Live and UAT environments, so
if you had a new UAT deployed, this would not work).
The removal of load balancing and scaling issues should result
in time savings in-house, as many of the support tasks associated
with a deployment would become the responsibility of the cloud
provider. However, the different pricing structure would have to be
evaluated against the current costs of hosting a system.
Where we envisage writing a system which has large amounts of
data usage or many users of a system, Cloud computing looks to be a
viable way to offer applications which can scale up or down
discreetly as required. There are great possibilities to mix and
match normal web applications which use Cloud based services for
handling data which could be required by a large number of users in
different locations. Alternatively, the whole application and data
can be deployed to the Cloud.
The porting of existing system might prove to be problematic in
regards to data migration. For instance in Azure there will be no
migration implementation until Visual Studio 2010.
The security levels offered by most of the major systems
available should meet the criteria that we need for secure data
transmission and generally have lower attack vectors than hosted
environments.
There have been mentions in the media about the reliability of
cloud computing when compared with traditional hosted systems. The
statistics on reliability show that cloud computing has been as
reliable, and in some cases more reliable than hosted systems due
to better redundancy for dealing with hardware failure, etc.
The only issue with going with a particular cloud provider is
the cost of retraining and recoding involved in changing if the
pricing structure becomes untenable. However, with the amount of
competing products, it's likely that pricing will stay
competitive.