Your SlideShare is downloading. ×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Cloud computing - an architect's perspective

248
views

Published on

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 …

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.

Published in: Technology, Business

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
248
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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…