6
ww w .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

Cloud computing - an architect's perspective

Embed Size (px)

Citation preview

Page 1: Cloud computing - an architect's perspective

ww w .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

Page 2: Cloud computing - an architect's perspective

ww w .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

[email protected] 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

Page 3: Cloud computing - an architect's perspective

ww w .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)

Page 4: Cloud computing - an architect's perspective

ww w .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 RoleWeb 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

JobScheduler

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

JobScheduler

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

Page 5: Cloud computing - an architect's perspective

ww w .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.

Page 6: Cloud computing - an architect's perspective

ww w .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…