What is the ‘Cloud’? Today almost every self-proclaimed industry pundit who attempts to describe cloud computing talks about ‘elasticity’ or how magically new servers appear in the cloud with a swish of a magic wand!
But, is that all we get with cloud computing?! What is wrong or missing in today’s software world? Didn’t we build and run software for the past 50+ years? Why do we need this cloud computing all of a sudden? This whitepaper attempts to answer whether cloud computing is the right strategy for you and your enterprise. The intent of this paper is not to try and compare various cloud offerings (either Azure or Amazon), the objective is to sow new ideas in your mind and the intent is to explain in layman’s terms how cloud computing is silently revolutionizing our 50 year old industry.
1. www.aditi.com
Summary But, is that all we get
with cloud computing?! What
is wrong or missing in today’s
software world? Didn’t we
build and run software for the
past 50+ years? Why do we
need this cloud computing all
of a sudden? This whitepaper
attempts to answer whether
cloud computing is the right
strategy for you and your
enterprise. The intent of this
paper is not to try and
compare various cloud
offerings (either Azure or
Amazon), the objective is to
sow new ideas in your mind
and the intent is to explain in
layman’s terms how cloud
computing is silently
revolutionizing our 50 year old
industry.
<snip>
[The crew watches brain surgery
performed on the ship's deck]
Seaman: Is them 'is brains,
doctor?
Dr. Stephen Maturin: No, that's
just dried blood. THOSE are his
brains.
[The crew oohs and aahs]
<snip>
Almost 10 years back I watched
the wonderfully crafted movie
“Master and Commander”
starring Russell Crowe and Paul
Bettany (Not many people who
saw Gladiator, saw this movie!)
The above dialogue is snipped
from that movie. In the movie Dr.
Maturin is performing brain
surgery by making a hole on the
head when the patient is awake,
all of this in the middle of sea, on
a ships deck surrounded by the
whole crew.
What is the ‘Cloud’? Today almost every self-proclaimed industry pundit who attempts to describe cloud computing talks
about ‘elasticity’ or how magically new servers appear in the cloud with a swish of a magic wand!
Cloud Computing – An
Architect’s Perspective
2. www.aditi.com
This was very primitive and cruel
way of performing a brain
surgery which is called
‘Trepanning’ – using 18th century
surgical instruments, which are
still preserved in Royal college of
Surgeons in London. There were
no backup procedures, no
surgical tools and safety
procedures or no proper
blueprint on how to do brain
surgery. If the patient is dead, too
bad! This scene for some reason
stuck in my brain…
Walking away from the theatre
after the show, I had a thought -
how much brain surgery and
heart surgery has evolved these
days, but…hey! aren’t we doing
the same primitive stuff in the
software industry today? Anyone
who attempts to write enterprise
software does not seem to have
a proper infrastructure, tools or
any blueprint of how to build the
software, and almost zero
consideration for scalability,
performance, no backup and
disaster recovery.
Pretty much nothing except the
functional features of the
software (which is delivered with
50% bugs!)
For almost a decade if you ask
most of the technologists to
design a web application
architecture, 90% of them would
end up with architecture diagram
similar to the one above.
You can find a plethora of
colorful variants of this diagram
by doing a basic web search, but
fundamentally they imply the
same message. At least this
diagram would be the starting
point and I would always write
my review comment as “legacy
architecture diagram!” whenever
I get to review one of these
documents, but, there are times
I’ve recommended this design;
i.e. when the software does not
need any over engineering,
prototypes or if the software is
used by a small user base on a
defined infrastructure constraint.
Logu Krishnan
Logu Krishnan is a Principal
Architect at Aditi Technologies.
You can write to him at
loguk@aditi.com or follow him
on Twitter here.
Figure 1 : Traditional 3 TIER ARCHITECTURE
x x
Data Server
Business Data
Middle Tier Server
Business Rules
Client
Presentation Logic
3. www.aditi.com
But what’s wrong with this
architecture? Everyone was taught
to design their application this
way, which is also an evolution
from client-server architecture.
This model got further evolved
with the advent of Web Services
and everyone was trying to get
their own version of distributed
computing. YES, it was called
distributed computing and that is
the real catalyst to all the
evolutions and jargons we see
today as Cloud Computing.
This model really helped mid-size
companies or whoever wanted to
do a quick and dirty software
development or whoever had to
spend their budget, no matter
what! Most of these projects either
don’t get finished or are shelved
or they are delivered with at least
50% bugs. This diagram
fundamentally lacked most of the
architectural tenets of a software
system. To arrive at this model,
very few people did sizing of their
systems and arrived at optimal
infrastructure architecture.
Whereas others started small
typically with 1 web server, 1 app
server and 1 DB server and
purchased additional servers and
scaled out this design or added
more processors, RAM or hard
disk to scale-up and salvage the
burning issue at hand. A decent
version of above diagram would
be similar to Figure 2 below.
Software is usually not designed
for multi-core processors (think
parallel) or supports multiple web
servers or app servers (think sticky
sessions, load balancers,
transaction management et al)
and they usually go back to code
to enhance the software to adapt
to these infrastructural changes,
yet they will fail if there is an
unexpected spike on the load or
the site becomes popular
overnight. Add to this the cost
implications of procuring new
hardware.
Let’s call this Problem No. 1! This
is why all the industry pundits start
their discussion dead-on the
Elasticity.
Now fast forward 10 years – today
the world has changed,
geographical boundaries have
largely disappeared, millions of
users are accessing different
software systems from different
parts of the world in a variety of
devices and luckily the evolution
of cloud computing changes our
good old software development
game forever. It shifts the
paradigms. Now re-imagine the
same architecture diagram with a
cloud perspective. The following
diagram depicts this evolution; in
short it’s like going to war with
enough ammunition. All the
services shown in the diagram
comes out of box with most of the
cloud offerings and all we need is
architecture as required and
configure these services as
required.
Users
Load Balancer
Web Architecture
Web
Server
DB (Master)
Tapes
Exterior Firewall
Web
Server
Backend Firewall
Load Balancer
App
Server
App
Server
App
Server
Tapes
DB (Slave)
4. www.aditi.com
Now let’s try to re-imagine the 3
tier architecture depicted in Fig. 2
with one of the cloud provider -
Microsoft’s Windows Azure. Well
at first it might look like we’ve
taken a simple design, over
engineered it and made it a
complex design, but if you look
closely all of the added
components are necessities of
today’s software. We need most of
these services otherwise our
software is bound to fail and
would not meet today’s business
challenges. The best thing is that
all of these services are out-of-
the-box and ready for immediate
use in your software, all we have
to do is mix and match these
services as required by our
software execution needs.
Rather than deep-diving into all of
these technologies, let me
highlight a few. The number
sequences below correspond to
the features highlighted in Figure
4.
1. New Infrastructure
architectures – Load balancing
across different data centers
spread across the globe! This was
not humanly possible 10 years
ago. Should I say cloud
architecture has given rise to new
and interesting new infrastructure
architectures? Well, yes we’d never
witnessed these architectures 10
years back, but today the solutions
range from public cloud to private
cloud and a hybrid solution -
which provides plenty of new
infrastructure design and
architectures. This will have a
profound effect on how the
corporate infrastructure architects
design their own data centers and
increase their operational capacity
10x with almost the same cost of
running an old style data center.
2. Messaging Architectures –
Anyone who has built a complex
heterogeneous messaging
solution in any OS platform would
have known how handicapped and
cumbersome it is to design those
solutions (remember MSMQ
especially in good old
COM/DCOM worlds!). Now this
has become an out of the box
component and is a natural
extension of any software
architecture.
Azure – Singapore Data Center
Azure – US WEST Data Center
Users
Windows Azure Traffic
Manager (WATM)
Load Balancer
Azure Web roles : Auto scale group #1
Web
Role
CGI
Role
Web
Role
Web
Role
SLB
Azure AppFabric Services
Distributed
Caching
Service Bus
Access Control Integration
Worker
Role
Worker
Role
Azure Worker roles : Auto
scale group #1
Worker
Role
Job
Scheduler
Worker
Role
Worker
Role
Messaging Queue
Messaging Queue N
Azure Notification
Services
Azure Messaging Services
Azure CDN
Blob Storage
HDFS
Table Storage SQL Azure
Azure – US EAST Data Center
Azure Web roles : Auto scale group #1
Web
Role
CGI
RoleWeb
RoleWeb
Role
Azure AppFabric Services
Distributed
Caching
Service Bus
Access Control Integration
Worker
Role
Worker
Role
Azure Worker roles : Auto
scale group #1
Worker
Role
Job
Scheduler
Worker
Role
Worker
Role
Messaging Queue
Messaging Queue N
Azure Notification
Services
Azure Messaging Services
Azure CDN
Blob Storage Queue Storage Table Storage SQL Azure
SLB
B Q T B Q T
Azure
Connect ACS
1
2
3
4
5 MAP REDUCE
6
7
8
9
10
Queue Storage
5. www.aditi.com
3. Distributed Caching
Architecture – we are no longer
limited to the physical memory or
RAM of the server where we host
the application, also most of the
caching solutions use single
memory cache which becomes a
bottleneck if you have to scale out
the application, all you could do
was to scale-up not scale-out.
Now with distributed caching this
problem does not occur. Next
generation programmers will be
surprised that we had such an
issue!
4. Storage Architecture – most of
the previous generation
architectures over-exploited
RDBMS. Almost all data was
stored in the database even if that
was not the right place to store it.
Along with that came all the high
storage costs, performance issues,
scalability issues and sharding
issues. Essentially, we just made
trouble to ourselves, but with
different storage options in the
cloud we can store any kind of
data on appropriate storage
technology and distribute it
geographically within seconds
without any replication overheads
because it’s replicated
automatically.
5. Big Data Architectures –
According to Gartner, information
volume is growing worldwide at a
minimum rate of 59% annually
with 15% of that data as
structured data and the rest
comprised of new complex data
types. Data is predicted to grow
44 times over the next decade. In
the past there was virtually no
solution to manage huge volume
of data. Big data projects are
usually done in super computers
by NASA or other research
institutes using their own
methodologies. Cloud solves this
problem beautifully and efficiently
with solutions like Hadoop etc., as
it’s a natural candidate for these
kinds of problem domains.
6. Disaster recovery and backup
Architecture – Not many people
considered disaster recovery as
part of their architecture. I know a
company which backs up its data
by shipping to two different
countries, by air every week with a
local backup is stored at the
company CEO’s backyard! No one
knows how the data can be
restored in case of disaster. We no
longer need such primitive backup
and disaster solutions because
again, cloud naturally solves this
as every single bit of data stored is
automatically backed up in three
different servers at three different
geographical locations. Now how
about architecting your software
for 99.99% SLA?
7. Security Architecture – Not
many data centers globally, can
provide the kind of security
provided by cloud providers. Data
is protected at Physical, Network,
Host, Application and at data
levels. This helps the application
architects to a great extent on
defining security for the
applications. This also eases the
compliance issues required by law.
8. Global distribution/CDN
Architecture – Imagine the days
where you had users of your
software spread across the globe…
say in the Philippines, but your
server is hosted somewhere in the
US and no one could access and
work successfully on the software.
Performance is just one aspect of
this problem. Almost the whole
industry bent over backwards to
produce various different solutions
to solve this problem but none
could solve this burning issue until
companies like Akamai emerged
and offered CDN services.
Subsequently, there was a big rush
to integrate the software with
Akamai. With Cloud this problem
vanishes completely and again
becomes a natural extension of
the software architecture and all
we have to do is specify the
countries where you need the
servers to be hosted and we get
consistent replicated servers
across the globe.
9. Network architecture – How
many times have you seen
software designed and hosted on
a single server and when an
additional server is introduced the
whole code base has to be re-
architected, so that it could
support 2 servers on a load
balancer by implementing sticky
sessions? Now think about a load
balancer as a standard default of
any architecture.. Software is
rarely architected for parallel
processing, and how many times
you would want to take control of
DNS, dynamic IP ranges for your
servers provide notification
services and deploy and manage
the servers from a single location
in a single window? All of this is
possible and is out of box from
most cloud providers.
6. www.aditi.com
About Aditi
Aditi helps product companies, web businesses and enterprises leverage the power of cloud,
e-social and mobile, to drive competitive advantage. We are one of the top 3 Platform-as-a-
Service solution providers globally and one of the top 5 Microsoft technology partners in US.
We are passionate about emerging technologies and are focused on custom development.
We provide innovation solutions in 4 domains:
Digital Marketing solutions that enable online businesses increase customer acquisition
Cloud Solutions that help companies build for traffic and computation surge
Enterprise Social that enables enterprises enhance collaboration and productivity
Product Engineering services that help ISVs accelerate time-to-market
www.aditi.com
https://www.facebook.com/AditiTechnologies
http://www.linkedin.com/company/aditi-technologies
http://adititechnologiesblog.blogspot.in/
https://twitter.com/WeAreAditi
10. Scalability Architecture –
Finally let’s talk about elasticity.
Yes, cloud can add any number
of servers and any size of servers
to your network either
automatically or whenever you
prefer and also take them down
whenever required. If you need
the power of 1000 servers for 24
hours – no problem, your wish is
granted. This forever changes the
way we see the industry.
Now re-read the 1st line of this
paper - did I say that servers
appearing magically are not the
only advantage of cloud as our
pundits preach?!
The above 10 items are just a few
of all the problems that can be
solved by Cloud computing.
Imagine the kind of trouble we
could have encountered, if each
of our houses was equipped with
a power plant to generate power
and if you have to manage and
maintain said power plant? Our
common sense says that this is a
bad idea and we should have a
central power plant per city and
consumers should just plug-in for
the power and switch on the
light. It’s the same analogy for
cloud computing.
So, do we need cloud
computing? This can be
answered by – would you go to a
war empty handed or with
ammunition?
The choice is yours…