In many ways
the metaphor of cloud is a good one for selling applications.
It represents a beautiful vision of computing, complete with a
blue-sky backdrop and fluffy non-threatening cotton-wool edges.
But get up close and you begin to wonder
where the cloud begins and the blue-sky ends. As you stare into
the middle of the billowing mass, it changes before your eyes, and
becomes all things to all observers. To paraphrase Tony
Hancock: "Oh look, there's a man smoking a pipe!"
Nevertheless, cloud is a potentially useful term for a
set of shared services that are available on the internet, says
David Bradshaw, research manager of European Software and Services
Research at IDC.
This is clearly a wide-based definition representing many modern
computing ideas and a good deal of the old ones. Vendors can
happily ramble on about "in the cloud", sounding terribly
important, without having to deal with any nasty technical
details.
You have to be careful, says Gary Barnett, CTO of research and
consulting firm Bathwick: "It's going to be a term that is stamped
on everything. If it's on the internet, it's cloud," he says,
somewhat disparagingly.
Lest we forget, however, applications delivered over the
internet still constitute a relatively novel concept. Many large
enterprises are only just experimenting, apart from perhaps running
a communication wiki or virtual private network (VPN) over the
internet for remote working.
And while pay-as-you-go bureau computing may well have been the
first example of cloud computing way back in the nineteen sixties,
such is the ubiquity of the internet and variety of applications
that many of the lessons from those days have had to be adapted to
the point of being unrecognisable.
Yet the IBM mainframe is an image of cloud nirvana, says
Barnett. "Essentially, it is the cumulonimbus of the cloud world.
Developers write in a relatively simple programming language, make
some relatively simple assumptions about resources and so on, they
then package that up and give it to the mainframe and then the
mainframe manages how much processing time gets spent and so
on."
"You've got big single computers pretending to be lots of little
computers, and at the other end of the spectrum you've got lots of
little computers pretending to be one big one," adds Barnett.
Yet the key to it all, is that the software developer does not
know which environment the application will be ultimately running
on, how many users will log on, or how much data might yet be
crunched by the algorithms. Further, the developer doesn't care.
Much the same as electricity supply is handled automatically when
plugging appliances into the socket, access to cloud resources
required at runtime will be managed at runtime, by scheduling, load
balancing, clustering, virtualisation and whatever other
infrastructure and management is required.
So in an ideal world, developers need do nothing special to
create cloud applications except concentrate on getting the
business logic right. All the difficult framework code is handled
for them. You could argue programming for the cloud becomes a
breeze, and that's exactly what some clound vendors are now
pushing.
For over a decade Salesforce.com have been selling on-demand
customer relationship management (CRM) applications, delivered
remotely and over the web. "Underlying each of those applications
is our platform which we provide as a platform as a service,"
explains Simon Wheeldon, director of Force.com, Salesforce.com
EMEA, (Force.com is the platform's product name).
"Over the years we've been exposing more and more of that
platform so that our partners and our customers can build their own
applications in the cloud. Now we're at the point where they can
build very complicated applications on our servers," he adds.
"Typically there are a lot of services you have to put in place
before you start. We provide a whole stack of business application
services that you would have to write. For example an API to an
analytical engine, workflow, auditing capabilities," he
explains.
Force.com's approach takes many of the risky architecture jobs
away from developers and, some might argue, a lot of the fun of
solving the deeply technical problems. But business has never
wanted developers to resolve those issues for each new
application.
"One of the biggest headaches is deploying a network and server
infrastructure that's robust, with no single point of failure,"
says Google's developer advocate Matthew Trewhella. "This can mean
a pretty high cost early on just to build a stable platform. Cloud
computing is a massive boon for small businesses and start-ups,
because not only does it remove the costs of such deployment, it
also removes all the headaches of designing the architecture,
too."
Trewhella adds other common applications to the list of features
a good cloud host should provide. As such, he says the cloud is
becoming a better choice for applications across the board. "As a
user, I want to be able to access applications from any device and
from any location. If I leave my personal computer at home, I want
to be able to pop into an internet cafe and check my calendar, or
edit a presentation from my friends' mobile. Cloud applications
enable this mobility.
"As a developer, the cloud provides a number of real advantages
over traditional development. One point is that web applications
scale transparently. For example, with many social applications,
demand can be hard to predict accurately. Viral spread can cause
sudden, massive spikes in utilisation of CPU, memory, disk and
bandwidth. If your hardware is restricted to a few machines, the
service may struggle under load," he explains.
Many believe social-networking websites are good examples of
cloud applications ideally suited to the automatic resource
management typically mooted as a cloud feature. IDC's Bradshaw
explains that some applications lend themselves to the cloud better
than others: "Applications where you have a lot of users doing
similar things, that don't require a lot of customisation. So CRM,
user collaboration, and collaboration through company boundaries.
For example, in a large construction project, different companies
might want access to all the plans and dates and so on. This will
probably happen with supply chain management too. No one owns the
system," he says.
Instead, users own a portion of the system or some hosted data.
In the case of Force.com they own their own customisations,
preferences and scripts - still hosted on Force.com's servers - and
use Force.com's common services to create much of their
application. In the case of Google Docs, users own simply their own
documents and any changes they make to shared documents.
What these applications have in common is a mechanism to
separate one user from the other, and keep them apart. In cloud
parlance, this is known as "multi-tenanted."
"It could be argued that any app which has a login is a type of
multi-tenant app, given that you're providing a service to a
different user from the same system. The most important thing for
your users is that their data is secure, so when you are designing
such apps, make sure that the data security model is sound and that
users or organisations have access to only their data," says
Google's Trewhella.
Microsoft Developer Network says separating tenant data into
individual databases is the premium approach to multi-tenanting:
"The relatively high hardware and maintenance requirements and
costs make it appropriate for customers that are willing to pay
extra for added security and customisability."
It is not the only way to provide multi-tenancy. Users can
simply share database tables with a user-id on each row to identify
their personal data, or it's possible to use virtualisation to
provide compartmentalised applications. But designing multi-tenancy
to be secure, and verifiably so, can take a lot of effort. An
entire new tier of user, the organisation, which may itself have
many additional users, is needed.
"If you are going to provide a set of capabilities on the web,
multi-tenanting works," says Bradshaw. "But it takes a while to
take an existing application and make it multi-tenanted. People
tend to think it's really simple, but fixing the delegated
administration rights is one of the really gnarly parts about it,
and it takes time."
It is perhaps one of the reasons why there are few examples of
cloud applications converted from more traditional architectures.
Ask anyone who knows cloud, and Salesforce.com, Google and Amazon
are mentioned first.
Rod Drury, CEO, Xero, offers a cloud-based accounting
application. It is a new entrant to the UK market but, like
Salesforce.com, it was built as a multi-tenanted application from
the start.
He explains why some of the incumbents have struggled.
"Everything changes. It's different developers, it's different
marketing, it's different pricing, different channels. Starting a
business cleanly looks to be the best way to do it.
"The biggest bottle neck is testing. You can't fail. If you lose
customers' data, it's a go-homer. When you have thousands of
customers you are concerned with the amount of traffic that's
hitting the website. You want to make sure it works in a
high-latency, low-bandwidth environment. There's a lot of emphasis
on keeping the pages small and making sure the end user is getting
a good experience."
For all the enthusiasm and vendor confidence, there remains some
ground to be covered. "Cloud computing is the summit of Everest,
and we're not even in Nepal," says Bathwick's Gary Barnett.
"When someone says cloud computing there are a series of
questions you need to ask before you know what they are actually
talking about," he adds.
That's not to say that the things falling inside the cloud are
not good, however. As Barnett sums up: "We are moving to much more
automated, better-supported distributed computing with better
thinking and better patterns around reliability, availability,
scalability, security and so on. It's a really good thing."