Friday, August 12, 2011

Private v/s Public Cloud – Which one is for me?

There are many points which need to be considered when moving from a standard enterprise application deployment model to cloud computing model. There are 2 major options to choose from: Public cloud and Private cloud. Often, the users are confused whether to choose public cloud or create a private cloud for their business due to privacy, security and maintenance issues. In this article, we will try to focus on benefits of each type and to derive conclusion.

Cloud Server Architecture

  1. Public Cloud
  2. A public cloud is a standard cloud computing model wherein a service provider manages storage and computing resources on behalf of consumer over the Internet.

    The term "public cloud" arose to differentiate between the standard model and the private cloud, which runs on proprietary network or data center of the user.

    Public clouds are run by third parties, and applications from different users are shared on the provider’s cloud servers, storage systems, and networks. Public clouds are most often hosted away from customer premises, and they try to reduce customer risk and cost by substituting their enterprise infrastructure.

    Benefits of public clouds include ease of on-demand scalability as they are larger than a company’s private cloud. It also shifts infrastructure risks from the enterprise to the cloud provider as all the resources are managed by the provider only.

    Public cloud has raised some security concerns for businesses that have regulatory compliance requirements. It includes security against hackers and Security against resource contention. As in public cloud, resources are shared between various users over internet; they are the major target of attack for hackers. In resource contention issue, as public cloud contains shared resource which can expose all users in the cloud to security risks when any user becomes the target of a Denial of Service (DoS) attack.

    Applications which are required for temporary purpose or for short duration are the best suitable for deployment in a public cloud because it avoids the need to purchase additional equipment to solve a temporary need.

    Very popular providers of public cloud include Amazon Elastic Compute Cloud (EC2), IBM's Blue Cloud, Sun Cloud, Google AppEngine and Windows Azure Services Platform.

  3. Private Cloud
  4. Private cloud (also called internal cloud or corporate cloud) are typically hosted on customer premises. With proprietary computing architecture, it provides hosted services to authorized users behind a company firewall. Thus company has control over resources, data, security and QoS.

    The company owns the infrastructure and controls how applications are deployed on it. Private clouds can be deployed in an organization datacenter or also at a collocation facility. Private clouds can be built and managed by a company’s own IT department or by a cloud service provider. In this type of cloud computing, a company can install, configure, and operate the infrastructure as per its requirement and demand.

    Benefits of going with private cloud is increased control and monitoring of resources, flexibility of customization, ability to recover from failure, and the ability to scale up or down depending upon demand. Private cloud is less vulnerable to hackers’ attack by restricting access to its resources to authorized users and administrators only. On contrary of public cloud, private cloud provides businesses with inherent protection from DoS attacks through secured infrastructure. Private clouds are also provides path for future upgradation to public cloud.

    Organizations are still reluctant to go with private clouds because users still have to buy, build, and manage the infrastructure and thus do not benefit from CAPEX reduction. Due to these constraints, they cannot reap full benefits of cloud computing.

    A permanent application, or one that has specific requirements on quality of service or location of data, is most suitable to deploy in a private or hybrid cloud. Enterprise IT organizations use their own private cloud(s) for mission critical and other secured systems deployment.
Below diagram differentiates the public cloud from private cloud in easily understandable manner:

Cloud Server Architecture

Table below shows when private cloud should be chosen and when to go with public cloud:
Please continue reading more on cloud computing at
Thursday, July 14, 2011

Cloud Computing Architecture

In my previous article, we discussed what cloud computing is all about. It is the ability to hire a virtual server, install software on it, turn it on and off at will, or clone it loads of times to meet a sudden workload demand. Now given that you have basic idea of what cloud computing is, it’s time to go into depth of cloud computing and its architecture. Cloud computing is a logical extension of virtualization. So in order to understand cloud properly, let us start with overview of Virtualization. Virtualization provides flexibility such that software stacks can be deployed or re-deployed independent of physical sever through hardware abstraction. With virtualization, dynamic datacenter provides a pool of resources that are utilized as needed, and the applications’ relationship to compute, storage, and network resources changes dynamically in order to meet workload and demands. As the application deployment is decoupled from server deployment, applications gets deployed and scaled rapidly, without need of physical server procurement. A virtual appliance is a virtual machine image designed to run on a virtualization platform like Web or database server, further enhance the ability to create and deploy applications rapidly. The mixture of virtual machines and appliances as standard deployment objects is one of the pillar of cloud computing.

But running your applications on virtual machine does not mean you are on cloud. Yes, you are on the path to cloud computing but that is not all of it. Cloud computing extends virtualization trend through automation. Cloud allows you to choose which resources you want to use for application deployment and provides a web interface or API to create virtual machines and establish network relationships between them. So instead of entering into a long-term, tedious contract for services with an IT organization or a service provider, you can choose to be billed by resource consumption: CPU hours, data transfer volumes, or storage gigabytes.

By paying for only those resources you used, you are shifting the risk of infrastructure purchase to the cloud provider. In past, architects were responsible for defining how the various components of an application would be laid out onto a set of servers, how they would be interconnected, secured, managed and scaled. Now, cloud provider’s API eliminates need of architect by allowing developer to create an application’s initial composition onto virtual machines and its scaling and workload management too.

Now, let us check how a 2-tier Web Application can be deployed in cloud.
  1. From a library of preconfigured virtual machine images, choose a load balancer, web server, and database server appliances. Appliances can be created by layering software (SQL Server for example) into a virtual machine image and performing customizations required for deployment.
  2. To make custom image, configure load balancer; populate web server with its static content by uploading it to the storage cloud; and populate database server appliances with dynamic content for the site.
  3. Layer the custom code into the new architecture, making the components meet specific application requirements.
  4. Choose a pattern that takes the images for each layer and deploys them, handling networking, security, and scalability issues.

    Cloud Server Architecture

  5. Now the application is up and running on cloud. In case of any update, entire infrastructure can be redeployed by making virtual machine images updated, versioned, and copied across the development-test-production chain.
We can say that Cloud computing is a shift from Vertical Scaling to Horizontal Scaling of resources. In the past, vertical scaling/up scaling was used to handle larger workloads. It involves addition of CPUs or memory to a single computer to handle more traffic. Database server is scaled up to increase throughput.

With cloud computing, application gets huge advantage of horizontal scalability. As most cloud platforms are built on a virtual pool of server resources, if any one physical server fails, the virtual machines that it was hosting are shifted on a different physical server.

Now let’s see how horizontal scaling applies to database in cloud. To run Database management systems in cloud environment, it requires horizontally scaled database servers and partitioning tables across them. This technique, known as database sharding, allows multiple instances of database software like SQL Server to run for performance scaling in a cloud environment. Rather than accessing a single, central database, applications now have to access only that shard/partition which contains desired data.

Cloud Server Architecture

Cloud supports CPU-concentrated processing. That means applications performing frame rendering activities are designed so that, separate virtual machine renders each frame rather than creating a new thread for each frame, increasing performance through horizontal scaling.

Finally, Cloud is a loosely coupled, stateless, fail-in place computing. If a virtual machine fails, the application should not be interrupted. Coupling between application components requires being loose so that a failure of any component does not affect overall application availability. A component should be able to “fail in place” without any impact on the application.

As application components are temporary, data contained by them should be application instance specific. Applications should be made as stateless as possible separating processing and data.

For the cloud to function properly, even the hardware should be stateless. Hardware configurations should be stored in metadata to restore configurations in the event of a failure.

Cloud architecture should be composable and refactored to make the most use of standard components to reap the benefits of cloud computing. For an enterprise shifting or planning to shift to cloud computing should consider standards while choosing the type of virtual machine, the operating system in standard virtual machine images, tools, and programming languages supported.
Please continue reading more on cloud computing at
Friday, June 24, 2011

Cloud computing models

Cloud Computing Models As we are not very much clear with basic cloud concepts, its architecture and pros & cons, let’s check some cloud computing models and associated business values.

Cloud computing models can be mapped with layers of business value pyramid as shown in below diagram:

Cloud Server Architecture

  1. Infrastructure as a Service (IaaS)
  2. The infrastructure cloud provides storage and compute resources as a service which can be used by developers and IT organizations to deliver business solutions. IaaS has evolved from virtual private server (vps) concept. It provides complete flexibility to consumers in choosing desktops, servers or network resources. Consumers can customize the entire infrastructure package by selecting CPU hours, storage space, bandwidth etc. Rather than buying expensive servers and taking headache of setting up the data centers, IaaS cloud helps business in reducing IT CAPEX and OPEX by big proportion.

    IaaS contains sub-categories: Public, Private and Combination. Public cloud consists of shared resources, managed by service provider. By contrast, private cloud provides secure access to your resources and managed by organization it serves. The hybrid cloud is maintained by both internal and external providers.

    IaaS adds value to businesses through Business agility; Cost reduction; Reliability, Scalability; Privacy & governance; and single integrated user experience.

    Basic characteristics of IaaS:
    • Resources distributed as a service
    • Dynamic, on-demand scaling of resources
    • Utility based pricing model
    • Concurrent users on a single piece of hardware

  3. Platform as a Service (PaaS)
  4. Platform as a Service (PaaS) Next level up in the pyramid is Platform cloud. PaaS delivers development/operating environments as a service. It includes set of tools and services designed to make coding and deploying the applications quickly and efficiently. PaaS is similar to SaaS except that, rather than being software delivered over the web, it is a platform for the development/deployment of that software, delivered over the web.

    Prime examples include's, Azure from Microsoft and Google App Engine.

    Basic characteristics of PaaS:
    • Single environment to develop, test, deploy, host and maintain applications
    • Web based UI designing tools to create, modify, test and deploy different UI scenarios
    • Multi-tenant architecture facilitating concurrent users
    • Load balancing, security and failover capabilities for application to be deployed
    • OS and Cloud programming APIs to create new apps for cloud or to cloudify the current apps
    • Tools to handle billing and subscription

  5. Software as a Service (SaaS):
  6. Top most layer of pyramid is functional layer or SaaS layer. This type of cloud delivers a single application through the browser to multiple users using a multitenant architecture. With SaaS, a provider sells an application to customers on license basis, in a “pay-as-you-go” model.

    On the customer side, they do not have to do upfront investment in servers or software development; on the provider side, with just one app to maintain, costs are low compared to conventional hosting., SRM, ERP as most common examples of SaaS based applications.

    Characteristics of SaaS:
    • Centralized web based access to company and commercial software
    • Entire business process shifting to cloud giving superior services to client
    • No hassle of software upgrades and patches as they are managed by Service provider
    • Application Programming Interfaces (APIs) allow integration with different applications
Please continue reading more on cloud computing at
Tuesday, May 17, 2011

Why Cloud Computing and Why Not?

In this article we are going to focus on pros and cons of cloud computing and when a business should go for cloud computing. Today’s enterprise world is global; it involves direct & open communication with customers; transparency, work mobility and collaboration are imminent. Let us see how cloud computing can meet these demands of enterprise world.
  • Cloud computing is OS and Application architecture independent. As infrastructure is based on cluster of shared resources, you can run your application from browser without worrying about underlying OS or App architecture.
  • REST based Application Programming Interface (API) accessibility enables easy interaction with cloud software.
  • Best platform for collaboration, social networking, SaaS, online presence and enterprise integration.
  • As application is on the cloud, applications and data can be accessed from anywhere at any time through web browser.
  • All hardware and network infrastructure is maintained by provider, it brings hardware costs down. It also removes need of physical space for hardware on premise.
  • It helps converting IT Capex to Opex because you are no longer required to invest in building huge data centers, do capacity planning, disaster planning, cooling management etc. You just have to pay for resources you use.
  • As all application data is stored at central location on cloud, it gives company-wide access to computer applications. It eliminates the need of buying individual software licenses or installing any software.
  • With cloud computing system, you save money on IT support. As there is a tough competition amongst cloud service provider for gaining client confidence, they provide on-demand availability, flexibility, and scalability 24x7x365.
  • Easy performance monitoring and measurable resource usage on daily/weekly/monthly/yearly basis.
  • As we know, there is a huge server pool in backend of cloud system; you can utilize the processing power of all available computers thus significantly speeding up the calculation and response time.
  • Cloud system is scalable on demand meaning you can add/remove server any time within minutes. It is also flexible wherein you can increase/decrease computing power and storage depending on your business demand.
  • You can expect your applications and websites in cloud to be always up and available. Reason behind is that your data is refactored across multiple servers so if one server fails, backup is always there.
  Given that there are many advantages of using cloud computing technology, there are some concern areas as well.
  • Main concern for business is data security and privacy. If you tell your business owner to handle over important data to another company, he would not be convinced.
  • Cloud computing is relatively new and emerging technology. There are only few major players who are capable of handling this. But at the other side, service providers are dying to attract customers by providing advanced techniques and reliable security measures.
  • Many cloud computing service providers have suffered outages/downtime which are out of control for affected IT and business managers.
  • Difficulty for providers in auditing complex security measures as data is distributed across devices.
  • To take full advantage of cloud computing, do I have to migrate all or create new apps on the cloud?
  • This question will definitely come in your mind; does the user or company subscribing to the cloud computing service has control over data? Yes, you will have control over your data but best solution is to have combination of on-premise and off-premise to gain full control.
  • Does company which provides cloud computing services actually owns data?
So when a business should choose Cloud Computing as their technology swing?
  • When the processes, applications, and data are loosely coupled or independent.
  • When the integration points are clearly defined.
  • When a reduced security level will work fine.
  • When the core internal enterprise architecture is powerful.
  • When web platform is the only option.
  • When cost is one of the major issues.

Looking at above pros and cons, we can understand that cloud computing is not a solution to all problems but it simplifies our lives.

An advice for the companies who are planning to shift to cloud: Start looking out for potential small applications which can benefit your organization being in cloud. Ideally, applications where resources are used for a shorter period and then left idle for the rest of the time, or applications where a moderate level of resources are used continuously with high activity period are the good candidates for cloud.

Please continue reading more on cloud computing at

Monday, April 04, 2011

Cloud Computing - In a Nutshell

In today’s technology driven world, everybody is keen on learning and adopting new technology for business or personal use. Cloud computing is one of the hot topic in this segment. There are plenty of information on websites trying to demystify cloud computing technology but very few can enlighten correct understanding and benefits of cloud computing.

In this article, I have tried to keep content precise and to the point. Let us start with definition of cloud computing first.

In plain English, cloud computing is a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services), hosting end customer apps that are billed by consumption. It is an ability to use your applications on the web leaving all hassle of backend infrastructure and setup to service provider.

Let me give you an example to make it clearer. Suppose you are planning to start your business venture and looking for office space. You have 2 choices: You can either build your own office or you can rent full furnished property. If you build an office, you will have to manage furniture; electricity, telephone, internet connections etc. on your own. But you will get an option to customize it like wall colors, furniture wood, windows, lighting etc. After office is built, you will have to do maintenance of all these things. Second option is to rent a ready to use office. You do not have to take headache of all above things; you just have to pay rent and utilities. But here you will have little freedom to customize it.

Now let’s translate this in terms of cloud computing. As an end-user, you’ve been using Cloud since many years. Gmail, Yahoo, Bing, FaceBook, twitter all are based on cloud. You might have wondered sometime how Gmail is able to handle massive email data with near to zero percent downtime. How FaceBook is able to sustain billions of users and connections without delay. Thanks to cloud computing.

Some key facts and figures:
Nearly 60% of European CIOs reported using specific cloud computing services although many didn't understand that fact.

Cloud computing is poised for significant growth over the next few years. According to a projection, sales of cloud computing services would almost increase to 300% during five years from 2009 to 2013.

Cloud architecture consists of various data centers built on computer and storage virtualization technology. Cloud computing system is divided into two parts: the front end and the back end. They connect to each other through internet. The front end is the part which end user sees or uses from his computer. The back end is the "cloud" part of the system.

Back end part comprises various computers, servers and data storage systems that produce the "cloud" of computing services. From end user perspective, each application will have its own dedicated server but in actual scenario they are virtual instances of applications running inside virtual server containers. Workload distribution mechanism or often called grid engine is used for load balancing among these virtual containers. Let’s have a look at below diagram to make things more visualized.

Cloud Server Architecture

There is a central server who is responsible for administering the system, monitoring traffic and client demands to ensure everything is in sync. This is achieved by using set of protocols and middleware. Middleware allows networked computers to communicate with each other.

There are numerous applications of cloud computing. Potentially, you can run simple spreadsheet application to custom ERP product on cloud.

With cloud, you have freedom to add as many servers as you want any time without waiting for days. You can expect your website/application in cloud to be always up as your data is replicated 3 or 4 times in data centers. You can also choose where your servers will reside. You can expand or contract computing power or storage based on your business condition.

But there is a catch. Cloud is relatively new technology and everybody is learning. There are only few big players capable of building such massive infrastructure like Google, Amazon and Microsoft. You are also losing some controls in terms of physical security, configurations, on-hand access to resources.

Let me clear out the confusion regarding how to subscribe to or go for the actual cloud services. As a business or individual, you can either pay to your software service vendor who has tie up with cloud provider or you can directly build your own software on provider’s platform and pay them directly.
That is it for this article. I hope I could answer your questions and could clarify your confusion on cloud computing. Please continue reading more on cloud computing at