Chapter 1. Introducing Cloud Services

As an introduction to our discussion of cloud services, let's consider a situation that's typical in today's medium to large enterprises. Assume a business unit has an immediate need to deploy and maintain an analytics application that it has built internally. The application will provide the business users with valuable business insight that will make the company much more competitive in the marketplace. The business unit has the budget but not the time to implement the solution, and this deployment needs to happen in the next three months.

The IT hosting team members understand the requirement, but to deploy an application with IT resources requires coordination among hardware, software, operations, and support teams. Perhaps ordering hardware and preparing the enterprise operating system build itself takes two months. After that, IT has to go through its standard testing process and operations procedures to make sure all the support needs are identified. So, the earliest application delivery date would be in six months.

The business owner escalates the urgency of the issue but cannot get past the process boundaries of the enterprise. Ultimately, the business owner establishes an independent IT department funded by the business and delivers the application in three months. Even though the application is delivered, it doesn't have the enterprise support and operations quality.

Now, the CEO and the CTO evaluate the situation at the enterprise level and come to the conclusion that there are too many application instances running redundantly across the enterprise and costing the enterprise millions of dollars in resource and maintenance costs. Therefore, they decide to create a mandate that all the applications need to be migrated to the IT application-hosting infrastructure. Eventually, the business unit ends up creating an exception for its situation and continues running its own IT department, thus costing the overall enterprise on redundant resources.

I see these scenarios on a daily basis, and I don't see a clear solution to the problem unless the entire process and structure in which these organizations operate is revamped, or technology like cloud computing takes off and enterprises embrace it wholeheartedly.

How will cloud computing help in this area? To understand, let's go back to the original business requirement: the business owner has an immediate need to deploy and maintain an analytics application, and the time frame is within three months. The biggest hurdles IT has in deploying this application are not in the application itself but in the dependencies and the process involved in provisioning the infrastructure required to deploy and maintain it. If the cloud computing dream is realized, it will eliminate the need for the application hosting team to be dependent on most of the hardware team requirements, because abstraction of hardware is one of the main tenets of cloud computing, and this abstraction is provided by cloud service providers' data centers. If the servers', load balancers', routers', and switches' dependencies are eliminated, the application hosting team could focus solely on deploying the application in the cloud service of its choice, with business approval. In this case, the overall IT agility will improve and better align with the business goals of the enterprise.

Of course, considering the current state of cloud service providers, I am discounting several facts like security, performance, reliability, political atmosphere, on-going maintenance costs, and overall company culture. But all technologies start slow and with skepticism from large enterprises. Skepticism fades away as early adopters of the technology embrace it and provide valuable feedback, which goes back into the product helping it mature over time. As the technology matures, larger enterprises start embracing it. Some larger enterprises do play parts as early adopters, but very rarely because companies typically become risk averse as they grow in size and their processes become streamlined and mature.

As discussed in the scenario earlier, cloud services platforms relieves you of investing in expensive hardware and IT resources for maintaining a highly available and scalable infrastructure. Cloud platforms are designed to be used on demand. The cost of the platform is directly proportional to its usage. The more you use the platform, the more you pay, and vice a versa. These dynamic capabilities allow you to proportionately balance the service operating costs to its usage and thus make your business more elastic and responsive to change. For example, if you have an e-commerce site that peaks during the Thanksgiving and Christmas seasons and attracts fewer but consistent numbers of users for the rest of the year, then you can dynamically increase the capacity of the underlying platform during the holiday season and reduce it for the rest of the year. This dynamic capability offered by service providers is called utility computing and is analogous to your utility service providers' model: they charge you by the amount of energy you use. You can scale back your energy bill by reducing the energy usage, or your energy bill will go up during peak load. If you invest in a highly available and scalable infrastructure on premise, scaling in either direction based on demand is difficult. So, in the long term, cloud platforms are designed to reduce your average operating costs by giving you the flexibility to commission and decommission infrastructure depending on the business needs. Currently, the level of performance, flexibility, and reliability offered by heavily invested on-premise infrastructures may not be matched by the currently available cloud service offerings. But, as the offerings mature, they are expected to provide you with lower total cost of ownership without compromising the service reliability.

Internet itself is a vast phenomenon to be branded as a cloud. "Cloud" is a subset of the Internet. The term specifically means applications, platform, infrastructure and consumer services offered by service providers to build applications for the Internet. Acronyms like software as a service (SaaS), platform as a service (PaaS), software plus service (S + S), and database as a service (DaaS) all represent a piece of cloud services in one way or the other. In this chapter, I will go over the evolution of Internet services into cloud services and look at the offerings from major industry players like Microsoft, Google, Amazon, SalesForce.com, GoGrid, and 3Tera.

There has been a sudden burst of interest in cloud computing not only because of the cost savings it offers but also the quality of infrastructure the cloud service providers promise. The credit should go not only to SalesForce.com for revolutionizing their SaaS platform in the small business market, but also to VMWare who created a new market for operating system and hardware virtualization. I credit VMWare for market awareness they brought around virtualization and its enormous possibilities. Microsoft and Amazon followed the trend by investing heavily in virtualizing not only operating systems and software but also data center assets. Virtualization is a key piece in building low-maintenance platforms for cloud services, because a virtualized platform can be moved and scaled without any dependency on the underlying hardware. It abstracts the operating system from the hardware and applications from operating systems. Virtualization makes the concept of utility computing a reality in terms of cost and manageability. As you read this book, you will learn how virtualization plays an important role in Microsoft's Windows Azure platform infrastructure.

The cloud services platforms are in their infancy and have not yet matured either in business models or technology. But, the addition of software vendors like Amazon, Microsoft, Google, and IBM to the list of cloud service providers adds credibility to its future success. These software vendors are going to drive the cloud services industry by offering their enterprise-grade software products to businesses of all scales. So far, businesses clearly value the cost savings but are still concerned about the security and reliability of their data in the cloud. Cost, control, reliability and security are the four main quality attributes enterprises will evaluate before deciding to adopt a cloud services platform. Enterprises can also adopt hybrid models, where some services are hosted on-premises and others off. For example, the Microsoft Dynamics CRM Online service offers on-premise option that can be switched to off-premise anytime by the enterprise. These kinds of models help enterprises slowly transition a fully on-premise application to an off-premise or a hybrid solution. This helps critical technical resources in the enterprise focus on important strategic initiatives instead of worrying about day-to-day operational issues. After reading this chapter, you will have good understanding about the cloud services industry and some major players in it.

Note

Throughout this book, depending on the context of the conversation, I have used the terms "cloud services" and "cloud applications" interchangeably to generally represent cloud services. A cloud service may be thought of as a collection of cloud applications in some instances, but in the context of this book, both mean the same thing.

Defining Our Terms

Before diving deep into cloud services, I would like to introduce you to the terminology used in this book. "Cloud" is an overloaded word because the platform is not a standardized yet. There are different flavors of interpretations and perspectives about it in the technology industry. To be consistent in this book, I have developed this section for introducing and defining some important terms used herein. Table 1-1 lists the common industry terms and their definitions as they relate to this book.

Table 1.1. Terminology in This Book

Term

Definition

Azure

Microsoft's Windows Azure Platform

Azure Services

The components of Windows Azure Platform (e.g., Windows Azure, SQL Azure, AppFabric, and Live Services)

Cloud

The cloud services platform (e.g., the Windows Azure platform)

Cloud application

An application deployed to a cloud services platform and typically part of a larger cloud service

Cloud platform

A service offering by a cloud service provider for deploying cloud services (e.g. Windows Azure platform offered by Microsoft and EC2 offered by Amazon)

Cloud service

An end-to-end service deployed to the cloud platform that may contain one or more cloud applications

Cloud services platform

The same as a cloud platform, which is defined earlier in this table.

On-premise

Refers to applications or services deployed and managed by an enterprise on its own and at its location

Off-premise

Refers to applications or services in the cloud

Service

When used on its own in this book, refers to the cloud service

Solution

When used on its own, refers to a collection of multiple applications and/or cloud services designed for a specific business purpose (e.g., a payroll solution consisting of three cloud services and four on-premise applications)

Evolution of Cloud Services

The Internet service platform has evolved from a simple dial-up access provider to an enterprise-grade software applications platform. The evolution of its maturity is depicted in Figure 1-1.

Evolution of ISP into cloud services (Source Data: Forrester Research Inc.)

Figure 1.1. Evolution of ISP into cloud services (Source Data: Forrester Research Inc.)

The ISP 1.0 era was in the early to mid-1990s, and the focus was on building Internet access networks for consumers and businesses. This era was dominated by companies like AOL, NetZero, Comcast, and Time Warner. Businesses were also heavily involved in building their own internal network infrastructure. In the ISP 2.0 era, the focus shifted to providing access to the servers in the ISP infrastructure. Businesses and consumers could host their web sites on ISP servers with limited capabilities. The ISP 3.0 era brought the colocation concept into the ISP equation. Businesses could host their servers with the ISP, thus leveraging the ISP's massively scalable, efficient, and redundant infrastructure. Companies like Rackspace.com and AT&T were the leaders in this space. Even though ISP 4.0 could achieve economies of scale in the network and power infrastructures, it had to keep up with the technology and business demands to achieve economies of scale at the application and platform levels. This gave rise to the ISP 4.0 era, where the application service providers (ASP) built scalable business software services and abstracted the intricacies of the data centers from the enterprises. Enterprises just had to subscribe to the software services like the CRM services offered by SalesForce.com and Microsoft Dynamics CRM Online without worrying about the underlying data center infrastructure. In this era, the software vendors took the initiative to offer their software services to businesses over the Internet. We have not fully graduated out of the ISP 4.0 era; I would say that we are on the border of ISP 4.0 and ISP 5.0. ISP 4.0 still faces the connectivity, security, and integration challenges between on-premise and cloud services. SalesForce.com, Microsoft Dynamics CRM Online, SharePoint Online, and Exchange Online are viable services that businesses are subscribing to. In the ISP 5.0 era, the ISP infrastructure will mature into a scalable on-demand platform, called the cloud, ripe to be leveraged for building and hosting business applications.

Later in this book, you will see how Microsoft has built an operating system in the cloud comprised of virtually enabled nodes of Windows operating system for building Internet-scale applications. In the ISP 5.0 era, there is complete transparency in application hosting. Enterprises will be able to deploy custom applications into the cloud without worrying about the hardware and platform requirements for the application. This will create transparency between on-premise and cloud applications for businesses, as they will interoperate seamlessly. You will see in future chapters how Windows Azure achieves some level of this transparency.

A critical success factor for ISP 5.0 is the quality of service (QoS) offered by the cloud service providers. Cloud service providers like Amazon, Microsoft, Google, and IBM are in the process of creating massively scalable data center infrastructure, but there is little focus on the QoS for businesses as of yet. Cost, control, reliability, and security will be the determining factors cloud service providers will have to focus on to convince businesses to use their services. The biggest difference between ISP 4.0 and ISP 5.0 is the entire application life cycle hosting support offered by ISP 5.0. This means applications can be planned, developed, stabilized, deployed, and operated around cloud services with little dependence on on-premise infrastructure. Figure 1-2 shows the ISP 5.0 as an application development and deployment platform.

Cloud services application platform (ISP 5.0)

Figure 1.2. Cloud services application platform (ISP 5.0)

In Figure 1-2, the planning phase is conducted completely on site, similar to an on-premise application. The deviation from the on-premise application life cycle happens in the development phase, where developers have to work directly with the cloud for unit and functional testing, even though the actual software development may take place on-premise. From the development phase onward, the control of cloud over the service increases and in the deployment and operation phases the cloud is completely in control of the service. The cloud manages the deployment, availability, scalability, and connectivity of the service.

Planning

In the planning phase, you typically envision and plan your cloud service. This may involve designing a new cloud service, migrating an existing on-premise application to the cloud, or creating a hybrid on-premise and cloud service. In this phase, you also decide on the cloud services provider you want to host your service with and open and account with that provider. The most amount of effort in this phase goes into architecting the following attributes of the cloud service:

  • Access control

  • Network connectivity

  • Reliability

  • Storage architecture

  • Service usage projections

Developing

In this phase, you develop the application in a local development environment provided by the cloud services provider. A local development environment is a simulated cloud running on-premise on your development machine used purely for development and functional testing purposes. Development may also involve deploying to the cloud development environment for unit testing.

Stabilizing

In the stabilization phase, the development, testing and the release engineering team iteratively test the application by deploying the service into a testing environment in the cloud. The black box, performance, and business scenarios testing are done in the cloud environment.

Deploying

In the deployment phase, the production version of the application is deployed into the staging environment in the cloud and then further promoted to the production cloud environment for business.

Operating

In the operation phase, the operation logs and usage of the service are evaluated periodically to analyze the usage and health of the service. Usage data is analyzed for billing purposes, and health data is analyzed for improvements to the future versions of the service.

Modeling Cloud Service Offerings

Cloud services offer several different models depending on the industry requirements. For better understanding of the cloud offerings, I have designed a pyramid for categorizing the offerings into four layers: platform, middleware, enterprise services, and consumer services. Figure 1-3 illustrates the four-layered pyramid model of the cloud service offerings.

Cloud services offerings pyramid

Figure 1.3. Cloud services offerings pyramid

Each layer in the pyramid can be considered as a separate offering, but some providers like Microsoft and Google are building complete offering spanning all the layers.

Consumer Services Layer

The consumer services layer represents cloud services that are targeted for the consumers. Some of the services like e-mail, instant messaging, and searching have been available to the consumers from the very beginning of the Internet era, whereas new services like massively multiplayer games, mobile applications, collaboration, social networking, and mapping services have gained significant consumer attention in recent years. The early cloud services like instant messaging and e-mail were developed as dedicated services without any flexibility or abstraction built into their architectures. Every software vendor had its own communication protocol and little effort was made to interoperate across platforms. I call such services as silos because each stands on its own, performing a certain function without any cross-platform interoperability. Over the years, these silo architectures have matured with several layers of abstraction and interoperability built in not only the platform but also the infrastructure architecture. These services now support open web services protocols and interoperate across vendor platforms. The consumer layer is built on top the foundation created by the application, infrastructure, and platform layers. Each of these layers has its own software boundaries, and the consumer market has been and will be the broadest market in terms of end users for cloud services.

Enterprise Services Layer

The enterprise services layer represents application platforms that can be leveraged by businesses to host their business-specific applications or enhanced by independent software vendors (ISVs) in building additional functionality. Most of today's SaaS applications fall into this category of cloud services, and SalesForce.com and Microsoft's Dynamics CRM Online are good examples of application platforms in the cloud. They also offer web services application programming interfaces (APIs) for custom development and add-ons on top of their basic CRM functionality. From the business perspective, the upfront cost and risk involved in deploying these services is minimal, because they are completely managed by the service provider. Businesses have to adapt to the new interface and make sure the software satisfies their business requirements. In contrast, it will cost much more to build and maintain such software in-house, because the businesses cannot leverage economies of scale like the service provider. Service providers can share the same platform across multiple customers, thus benefitting from economies of scale and passing on these cost savings to the businesses. This layer is the fastest growing in cloud services offerings because of its flexibility, low risk, and low upfront cost to the businesses.

Middleware Layer

The middleware layer is a direct result of the monetization of large-scale middleware software components already built to support massively scalable consumer services. Some examples of these already existing services are Amazon e-commerce systems, Google Search, and Windows Live services. As the consumer services and matured, the middleware layer was abstracted and service providers decided to monetize this intellectual property (IP) by offering their middleware capabilities directly to the businesses. In the middleware layer, businesses can utilize proven scalable software services and infrastructure platform offered by service providers for hosting custom software services. All businesses have custom software services that are developed internally to suite their own business processes. Such services are expensive to scale internally due to licensing, hardware, and labor costs. By deploying these services in the cloud and leveraging the scalable middleware of the service providers, businesses can scale these custom services on demand. Microsoft's AppFabric falls into this category because it offers software platforms like service bus and Access Control Service businesses can leverage for building and scaling custom services.

Platform Layer

The platform layer forms the core foundation for all the other cloud services offerings in the pyramid. The platform layer represents the computational, data storage, and network platforms ISVs, and software vendors can leverage this layer in building middleware, enterprise, and consumer services. In this layer, virtualization is employed at its optimum for providing platform abstraction and dynamic scalability for the rest of the layers. Provisioning, management, and milling of the operating systems and storage are automated to reduce maintenance and deployment costs. Quality attributes like scalability, performance, reliability, and availability are built right into the architecture of the platform layer. The primary audiences of the platform layer are ISV developers and infrastructure architects interested in leveraging this highly resilient platform in building end-to-end cloud services. Amazon's Elastic Compute Cloud (EC2), Microsoft Windows Azure, and Microsoft SQL Azure fall into the platform payer of the cloud services pyramid.

Note

Throughout this book, I will refer to the cloud services pyramid to explain the differences between the cloud services products that we will be working with.

Shifting to the Cloud Paradigm

The move from a traditional on-premise model to an off-premise cloud model is a fundamental paradigm shift for businesses. Usually businesses are in their comfort zone of managing IT internally. With the cloud services model, even though the cost savings become evident, the challenge for businesses is to get out of their comfort zones and make the paradigm shift of moving to cloud services to stay competitive. The shift does not happen overnight; it takes several months of rigorous analysis, planning, and implementation. Depending on the costs, benefits, risks, and security requirements, a business can either stay on-premise, embrace cloud services fully, or settle on a hybrid model yielding cost benefits while keeping core competencies on-site. Figure 1-4 illustrates the ownership of key enterprise assets in on-premise, cloud, and hybrid scenarios.

The recommended migration process is to move step by step, one application at a time. When the offshore software development model became popular in 2000, businesses faced a similar challenge in getting aboard the outsourcing wagon. Now, many businesses have significant offshore investments and clearly see the payoffs. It took time and learning for businesses to make the paradigm shift in off-shore software development projects. For cloud services to succeed, businesses will be required to make a paradigm shift again.

On-premise, cloud, and hybrid scenarios

Figure 1.4. On-premise, cloud, and hybrid scenarios

In Figure 1-4, the on-premise and cloud scenarios are fairly easy to understand, because either all the assets are on-premise or in the cloud. The user profiles asset is usually required on both the sides because of single sign-on requirements between on-premise and cloud services. In hybrid models, the businesses and the service provider must negotiate and decide which assets and services are better suited for locations on-premise, in cloud, or both. In the Hybrid 1 scenario in Figure 1-4, the user profiles and hosting facilities are present on both the sides; the business applications are in the cloud, whereas the utility applications, operating systems, data storage, and hardware are on-premise. In the Hybrid 2 scenario, the user profiles, operating systems, data storage, and hardware are present on both the sides, whereas the business applications, utility applications, and hosting facilities are in the cloud. Most of the companies typically choose some hybrid model that best suits them.

Understanding the Cloud Services Ecosystem

The cloud services ecosystem consists of five major roles, as shown in Figure 1-5.

The cloud ecosystem

Figure 1.5. The cloud ecosystem

Service Providers

The service providers are the companies that provide cloud services to the businesses and to the consumers. These companies run the giant data centers hosting massively virtualized and redundant software and hardware systems. Service providers like Amazon with its EC2 service and Microsoft with its Windows Azure fall into the service providers category. These companies not only have expertise in data center management but also in scalable software management. The service providers may offer services directly to the businesses, consumers, or ISVs.

Software Vendors

Software designed to run on-premise is very different to software designed for cloud services. Even though they both may provide the same business functionality to the end users, architecturally they are not the same. The cloud services must account for multitenancy, scalability, reliability and performance at a much broader scale than on-premise architecture. Cloud services run in data centers offered by cloud service providers. In some cases, there is a significant overlap between the service providers and the software vendors. For example, Microsoft Windows Azure and Google Apps are cloud software running in their own data centers. The software vendors have found it economically feasible to package hardware and software together in the data centers to optimize the service delivery in the cloud.

Independent Software Vendors

Independent software vendors (ISVs) are going to play a key role in the success of cloud services because of their expertise in vertical business applications. ISVs typically build vertical applications on an already existing platform. ISVs identify the business demand for a particular solution in vertical markets and thrive by offering the solution on existing platforms. The cloud offers a great platform for the ISVs to build vertical solutions. For example, an ISV could build a medical billing solution in the cloud and offer the service to multiple doctors and hospitals. The infrastructure required for building multitenant scalable software is already provided by the service providers, so the ISVs have to focus only on building the business solution.

Enablers

Enablers (which are also called implementers) are vendors offering services to build end-to-end solutions by integrating software from multiple vendors. Many enterprises purchase software licenses from vendors but never deploy the software because of lack of strategic initiative or availability of product expertise. Enablers fill in the gap by offering consulting services for the purchased software. Companies like Microsoft Consulting Services and IBM Global Services offer customer-specific services regardless of the underlying platform. Enablers play a key role by integrating on-premise and cloud services or building end-to-end cloud services customized for a business. Cloud platform offers enablers an opportunity to expand their service offerings beyond on-premise solutions.

Businesses

Finally, businesses drive the demand for software products and services. If businesses see value or cost savings in a particular solution, they do not hesitate to implement it. To stay competitive in today's market, businesses have to keep their IT and applications portfolios up-to-date and take advantage of economies of scale wherever possible. Cloud service offerings are architected to achieve economies of scale by supporting multiple businesses on a scalable and automated platform. For cloud service offerings to be successful, service providers, software vendors, ISVs and enablers must work together in creating cloud applications and services not only providing cost savings but also a competitive edge to businesses. This search for a competitive edge will drive demand for cloud services.

Cloud Services Drivers and Barriers

Even though cloud computing has gained popularity as the new technology driver, businesses are still evaluating its feasibility for their own business environment. Figure 1-6 shows some of the key business drivers and barriers for cloud services.

Cloud services drivers and barriers

Figure 1.6. Cloud services drivers and barriers

Security

Security is a nonnegotiable requirement for a cloud service offering to be successful. Access control and security for business data is of utmost importance. Business data stored in the cloud needs to be encrypted during not only during storage but also transport. Secure data and network channels across application domains in the cloud should be built right into the cloud service infrastructure. Access control prohibits unauthorized access to the data and applications and provides authorization schemes for multiple applications. Businesses already have full-blown access control systems like Active Directory located on-premise and expect to seamlessly integrate cloud services with these systems. Cloud service providers must also provide a secure virtual execution environment that is isolated for other applications running in the same infrastructure.

Overly complex security architecture increases the barriers to entry for businesses to jump on to the cloud services bus. To reduce barriers to entry, the security architecture of a cloud service offering should be easier to integrate and transparent to businesses. One of the advantages of cloud services is the platform and infrastructure security can be totally transparent to the businesses lowering barriers to entry.

Following is the list of security business drivers for cloud services:

  • Data storage security

  • Data transport security

  • Transparent storage and transport security

  • Authentication and authorization control

  • Single sign-on with other cloud offerings and on-premise systems

  • Recommended design patterns and architectures for application access control

  • Secure and isolated execution environments

  • Easy integration with on-premise security infrastructure (e.g., Active Directory)

Total Cost of Ownership

For any new technology in its infancy, total cost of ownership (TCO) is the first criteria businesses evaluate for finding the return on investment (ROI). If the business is not satisfied with the TCO, the technology or product is shelved until it matures. For businesses to jump on to the cloud services bus, the TCO of the cloud services should be significantly lower than on-premise software. For example, some CRM cloud services charge customers per seat. This pricing structure works out cheaper for small businesses, but for medium to large businesses, it turns out to be expensive because savings from economies of scale are not clearly passed on to the customer. Even if the TCO for on-premise CRM application is within the five percent margin of its cloud counterpart, businesses would prefer the on-premise CRM application because of the flexibility and control an on-premise CRM application offers. Business would consider moving to a cloud service only if its TCO is lower than 15 percent of its on-premise counterpart.

Control

An on-premise application offers businesses significant technological control compared to a cloud service. Control can be in the form of data storage, customizations, security, deployment, operations, and integration with other applications. When evaluating cloud services, businesses assume the loss of control and conduct a trade-off analysis between loss of control and TCO. For some businesses, control of the application is important for customizing specific business processes. Every enterprise has some unique business processes that are not supported by any out-of-box applications. Enterprises then customize applications as per the business requirements before deploying it. So, to reduce the barriers to entry, software vendors must provide a customization platform in the form or an API or a software development kit (SDK) for businesses to customize the software for their specific needs. Software vendors offering cloud services must offer a customization platform and a developer SDK that is comparable to the on-premise applications. So, control is an important business driver for cloud services to be successful in the enterprise.

Culture

Company culture plays a significant role in technology adoption. Some companies' cultures dictate that they remain at least two versions behind the current released version of the product. These companies never evaluate a product unless a competitor has implemented it or it has gained popularity in a particular industry, irrespective of the business value or cost savings it offers. In industry terms, these companies are called laggards and are not going to be interested in cloud services anytime soon. Another kind of companies, called visionaries are exact opposite of laggards. Being on the leading edge of technology is embedded into the culture of these companies, and they do not hesitate to deploy beta version of a product in production if it offers business value or satisfies key business requirements. Cloud services vendors should market their services to these companies and get them aboard the cloud services bus.

Competition

Competition can force a company to take extreme business decisions to avoid risking its current market position. By saving operating expenses, a company can exert pressure on its competitor's market position by reducing the product prices. Companies are constantly analyzing their competitors' technology stacks to evaluate the operating expenses its competitors may be incurring and find a way to beat those expenses. For example, recently in a consulting project at a Fortune 100 pharmaceutical company, I did a technology stack analysis of its competitor to compare the overall IT portfolios. As a result, my customer found out that the competitor's IT portfolio consists of only 600 applications, whereas my customer's IT portfolio consisted of 10,000 applications. If the business models are the same and revenues, market shares, growth rates are similar, how was the competitor's IT department providing services to its businesses through only 600 applications? This analysis triggered a massive application consolidation effort for reducing my client's IT department's application offerings to less than 1,000 over the next three years.

If efficient companies embrace cloud services to reduce their operating expenses, competitors will soon follow to remain competitive and avoid risking their relative market position.

Time to Market

Time to market (TTM) is the time required for a particular product to be available in the market once it is conceptualized. TTM is critical for product companies where release of their products is scheduled years in advance and cannot be adjusted because of changes in technology. Cloud service is a platform for product and service companies to build applications on top. Cloud service providers must offer a significantly lower TTM as compared to on-premise software because of the minimal infrastructure and platform investments required by enterprises for cloud service adoption.

Reliability

Reliability is one of the quality attributes businesses look for in any software investment. Reliability encompasses the entire spectrum of quality attributes like availability, stability, scalability, performance, and maintainability. Businesses do not automatically assume the reliability of cloud services platforms because of lack of customer evidence available during the early stages. Cloud services vendors must not only demonstrate the reliability in hosting business critical applications but also outperform their on-premise competitors.

Service Level Agreement

A service level agreement (SLA) is an agreement between the cloud service provider (CSP) and the customer. Even though an SLA is a broader topic than the scope of this book, it is important to understand that an SLA can make or break a deal. A common misconception about SLAs is that they represents the availability of a service. An SLA not only covers the availability of a service, but also other objectives like customer expectations, performance measurements, reporting, quality standards, and relationship management. A successful business driver for cloud services is an SLA addressing the quality of service required by the customer.

Understanding Cloud Architecture

Fundamentally, cloud architectures are based on creation of large data centers with a management fabric defining clear abstraction between server hardware and operations systems. The management fabric automates the deployment of virtualized operating systems images on server hardware. In its simplest form, a typical cloud data center consists of a bank of server hardware and massive storage for storing fully functional operating system images. The management fabric manages the life cycle of the deployment by allocating and decommissioning hardware and operating system images as needed. As a user, when you deploy your service to the cloud, the management fabric provisions the hardware servers, deploys operating system image on those servers, and deploys your service to those servers. Once the service is deployed on the servers, it is ready to be consumed. The number of service instances is configured by the service owner and would typically depend on the demand and high availability requirements of the service. Figure 1-7 illustrates typical cloud data center architecture.

Cloud architecture

Figure 1.7. Cloud architecture

As shown in Figure 1-7, the cloud architecture also consists of some fixed hardware assets like load-balancers, switches, routers, and DNS servers that manage the work load distribution across multiple service instances. A typical cloud infrastructure like Windows Azure consists of several geographically dispersed data centers for providing geo-located services. Finally, the metering, billing and reporting components complement the infrastructure with the ability to measure and report the usage of the service per customer.

Note

Even though, at a high level, most of the cloud architectures may follow the pattern illustrated in Figure 1-7, my interpretation is heavily influenced by Windows Azure architecture. Different providers may have different implementation and approach to this pattern.

Getting to Know Some Cloud Services Vendors

Cloud services platforms are still in their infancy considering the size of the market, but big players like Microsoft, IBM, Amazon, and Google have made significant investments for the future in offering cloud services in some form or the other. In this section, I will outline the offerings of some cloud services providers and map them to the cloud services pyramid I discussed earlier in this chapter.

Amazon Web Services[1]

Amazon is the largest online retailer in the world, and to support its daily operations, Amazon has one of the most advanced data centers in the world. Processing millions of transactions every hour requires a high-class transactional infrastructure that will not only provide reliability and speed but also reduce the total cost of a transaction. Amazon has achieved this by building a resilient data center infrastructure boasting automated virtualized operating systems and storage servers. Amazon has decided to further monetize its intellectual property by renting this platform and storage services to developers and ISVs for developing and hosting applications. Amazon's cloud services offerings consist of five services:

  • Elastic Compute Cloud(EC2)

  • SimpleDB

  • Simple Storage Service (S3)

  • CloudFront

  • Simple Queue Service (SQS)

  • Elastic MapReduce

Figure 1-8 shows the screenshot of the Amazon Web Services (AWS) home page.

The Amazon Web Services home page

Figure 1.8. The Amazon Web Services home page

From a developer's perspective, there are three important sections on the AWS home page: Explore Products, Signup, and Developers. The Infrastructure Services section under Explore Products lists all the core platform services offered by AWS. The Sign Up Now button lets you sign up for the AWS, and the Developers section has links to developer sign-up, technical documentation, the AWS management console, community forums, and the Amazon Machine Images (AMI). AMIs are preconfigured virtual machine images for running in Amazon's web services. Figure 1-9 shows some of the categories of pre-configured AMIs available.

Preconfigured AMIs

Figure 1.9. Preconfigured AMIs

Note

You can find more information on AMI in the Amazon EC2 Developer Guide, http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/.

Amazon EC2

Amazon EC2 is a virtual computing environment providing resizable computing capacity in the cloud. Developers can create, launch, and terminate virtual machines on-demand. The virtual machines support a variety of operating systems like Red Hat Enterprise, Linux, Windows Server 2003, Oracle Enterprise Linux, OpenSolaris, openSUSE Linux, Ubuntu Linux, Fedora, Gentoo Linux, and Debian. The virtual machines also support a variety of software—Oracle 11g, Microsoft SQL Server 2005 Standard Edition, Apache Web Server, IIS/ASP.NET, Java Application Server, JBoss Enterprise Application Platform, and many more.

Figure 1-10 shows the home page for the Amazon EC2 service.

The Amazon EC2 home page

Figure 1.10. The Amazon EC2 home page

The Amazon EC2 home page contains links to features, pricing, supported operating systems and software, and developer resources.

Note

The developer guide for Amazon EC2 service is located at http://docs.amazonwebservices.com/AWSEC2/latest/DeveloperGuide/.

Figure 1-11 illustrates typical developer workflow to get an EC2 instance deployed with a web application.

Amazon EC2 developer workflow

Figure 1.11. Amazon EC2 developer workflow

To deploy a web application on an EC2 instance, you have to follow these steps:

  1. Set up an account for Amazon Web Services, EC2, and S3 at http://aws.amazon.com.

  2. Configure your workstation with the setup tools from Amazon Developer Resource Center.

  3. Create an AMI instance from one of the predefined instances, or create a new instance.

  4. Deploy the Amazon EC2 instance. Windows users can access the deployed instance using Remote Desktop Connection.

  5. Set up the Elastic Block Store (EBS). EC2 instances have volatile storage and may not survive reboots. EBS is a persistent storage volume that can be attached and detached to AMI instances.

  6. Create and configure the web application on the deployed instance.

  7. Configure external access to the web application by configuring the firewall and creating a friendly URL for it.

  8. Create as many instances of the AMI as needed.

  9. Monitor instances using the AWS Management Console.

Note

Amazon EC2 fits into the platform category of the cloud services pyramid model discussed earlier in this chapter.

Amazon SimpleDB

Amazon SimpleDB is a cloud database service providing core database functionality of storing indexing and querying data. SimpleDB is not a relational database in the cloud but a storage engine for storing and retrieving structured data. Figure 1-12 shows the home page of Amazon SimpleDB where you can sign up for the service and also access pricing and related resources.

The Amazon SimpleDB home page

Figure 1.12. The Amazon SimpleDB home page

Figure 1-13 shows a typical developer workflow in an Amazon SimpleDB environment.

The Amazon SimpleDB developer workflow

Figure 1.13. The Amazon SimpleDB developer workflow

Note

The developer guide for the Amazon SimpleDB can be found at http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/.

The developer workflow steps for Amazon SimpleDB storage follow:

  1. Set up an account with AWS and sign up for the SimpleDB service.

  2. Set up authentication with SimpleDB to validate the identity of the party making a request.

  3. Create a new domain.

  4. Get, put, or delete items in a domain. The data is indexed automatically upon storage.

  5. Query the data using the SELECT or QUERY API.

  6. Monitor SimpleDB usage, and pay only for the resources that you consume.

Note

SimpleDB falls in the platform category of the cloud services Pyramid.

Amazon Simple Storage Service (S3)

The Amazon S3 is a cloud database that can be used to store and retrieve any amount of data over the Internet. This is the data storage infrastructure on which Amazon runs its own global sites. Developers can leverage the same quality storage infrastructure to store application data. Like all other Amazon web services, S3 provides web services access for applications to interface with. Amazon S3 consists of three storage level concepts: objects, buckets, and keys. An object is a fundamental entity in S3, consists of data and metadata, and can be a maximum of 5GB in size. Objects are stored in buckets. Buckets give a unique namespace to its contained objects. A key is the unique identifier for an object within a bucket. Figure 1-14 shows the home page of Amazon S3 where you can sign up for the service and also access pricing, design, and related resources.

The Amazon S3 home page

Figure 1.14. The Amazon S3 home page

Note

The developer guide for Amazon S3 can be found at http://docs.amazonwebservices.com/AmazonS3/latest/dev/.

Figure 1-15 shows a typical developer workflow in an Amazon S3 environment.

Amazon S3 Developer Workflow

Figure 1.15. Amazon S3 Developer Workflow

The developer workflow steps for Amazon S3 storage are:

  1. Set up an account with AWS and sign-up for the S3 service.

  2. Set up authentication with S3 to validate the identity of the party making a request.

  3. Create a new bucket to store objects in S3.

  4. Once you have a bucket, you can start adding objects to bucket.

  5. Access objects in the bucket using the URL of the object.

  6. Monitor S3 usage, and pay only for the resources that you consume.

Note

The Amazon S3 falls in the platform category of the cloud services pyramid.

Amazon CloudFront

Amazon CloudFront is a data distribution network for content delivery. Amazon CloudFront works in conjunction with Amazon S3 to deliver copies of objects from the nearest location to the calling application. For example, if you have an application running in a data center in Asia, Amazon CloudFront can deliver objects from your Asian location when configured accordingly.

Figure 1-16 shows the home page of Amazon CloudFront where you can sign up for the service and access pricing, design, and related resources.

The Amazon CloudFront home page

Figure 1.16. The Amazon CloudFront home page

Note

The developer guide for Amazon CloudFront can be found at http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/.

Figure 1-17 shows a typical developer workflow in an Amazon CloudFront environment.

Amazon CloudFront Developer Workflow

Figure 1.17. Amazon CloudFront Developer Workflow

To use Amazon CloudFront, follow these steps:

  1. Set up an account with AWS, and sign up for the CloudFront service.

  2. Download and install the manager for Amazon CloudFront.

  3. Prepare your S3 origin server, and create buckets and objects in the origin server.

  4. Create distribution by registering the S3 storage with the CloudFront using a domain name.

  5. Validate the status of the propagation of the distribution.

  6. Link the object with the domain name for the CloudFront to serve from an appropriate edge location.

Note

CloudFront falls in the infrastructure category of the cloud services pyramid.

Amazon Simple Queue Service

Amazon SQS is a cloud queue service for reliable storage of messages. Developers can leverage SQS to share queued data across distributed applications. SQS supports all the basic queue functions like creating, listing, and deleting queues as well as sending, receiving, and deleting messages. You can use Amazon SQS in conjunction with EC2 and S3 to build sophisticated workflows. Figure 1-18 shows the home page of Amazon SQS, where you can sign up for the service and access pricing, design, and related resources.

The Amazon SQS home page

Figure 1.18. The Amazon SQS home page

Note

The developer guide for Amazon SQS can be found at http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/.

Figure 1-19 shows a typical developer workflow in an Amazon SQS environment.

The Amazon SQS developer workflow

Figure 1.19. The Amazon SQS developer workflow

Note

The Amazon SQS service falls in the middleware category of the cloud services pyramid.

These are the steps for using SQS:

  1. Set up an account with AWS, and sign up for the SQS service.

  2. Configure your programming environment for SQS access. SQS supports HTTP GET/POST and SOAP access.

  3. Create a queue using the programming language chosen in step 2.

  4. Send a message to the queue after confirming it exists

  5. Receive the messages by specifying the maximum number of messages to get.

  6. Delete the message to acknowledge the receipt of the message.

Amazon Elastic MapReduce

Amazon Elastic MapReduce is a cloud service designed for performing data-intensive tasks like data mining, analytics data processing, batch processing, data cleanup, and indexing in a parallelized environment. The service enables you to provision a job to be executed in parallel across multiple Amazon EC2 instances and aggregate the final results. You can use Amazon S3 storage service for storing input and output data. Amazon Elastic MapReduce uses the Apache Hadoop framework for processing massive amounts of data in parallel. Hadoop is designed for executing simpler operations on massive amounts of data. For example, you can use Hadoop framework for adding copyright information to ten million documents.

Figure 1-20 shows the home page of Amazon Elastic MapReduce, where you can sign up for the service and access pricing, design, and related resources.

The Amazon Elastic MapReduce home page

Figure 1.20. The Amazon Elastic MapReduce home page

Note

The developer guide for Amazon Elastic MapReduce can be found at http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/.

Figure 1-21 shows a typical developer workflow in an Amazon Elastic MapReduce environment

Amazon Elastic MapReduce Developer Workflow

Figure 1.21. Amazon Elastic MapReduce Developer Workflow

Note

Elastic MapReduce falls into either the middleware or platform category of the cloud services pyramid.

As shown in Figure 1-21, the steps for getting started with Amazon Elastic MapReduce service are as follows:

  1. Set up an account with AWS, and sign up for the Elastic MapReduce service.

  2. Sign up for the Amazon S3 service for storing the input and output data.

  3. Create your input data, mapper, and reducer.

    Note

    According to the Apache Hadoop tutorial at http://hadoop.apache.org/common/docs/current/mapred_tutorial.html, a mapper maps the input data into intermediate data for processing, and a reducer reduces the intermediate values created by the mapper to a smaller set.

  4. Create an EC2 job using the Elastic MapReduce console.

  5. Configure input location, output location, mapper, and reducer.

  6. Create the job flow.

  7. Finally, you can monitor the job flow from the job flow details page.

Note

More information on getting started with Amazon Elastic MapReduce can be found at http://docs.amazonwebservices.com/ElasticMapReduce/latest/GettingStartedGuide/.

Google

Google is the leader in search services on the Internet and has a significant presence and properties in advertising, collaboration, e-mail, and social networking sites. Google has massively scaled data centers with customized caching algorithms that host the fastest search engine in the world. The company has extended this massively scalable infrastructure for hosting communication and collaboration platform called Google Apps and an application platform called Google AppEngine for developing and deploying web applications.

Google Apps[2]

Google Apps is a collection of messaging and collaboration software services for businesses and schools. Figure 1-22 shows the landing page of Google Apps.

The Google Apps home page

Figure 1.22. The Google Apps home page

The main services offered in Google Apps are mail (Gmail), instant messaging (Google Talk), calendar (Google Calendar), document management (Google Docs), and site management (Google Sites). Google Apps guarantees 99.9 percent availability for the Premier edition of its service offering. Google also provides REST-style APIs called Google Data APIs for programming not only for Google Apps but also for other web services offered by Google like Google Maps, Google Health, and YouTube. Figure 1-23 illustrates the services supported by Google Data API.

The Google Data API

Figure 1.23. The Google Data API

Note

Google Apps falls under the enterprise services category of the cloud services pyramid.

Google App Engine[3]

Google App Engine is an environment for developing and deploying web applications on Google's infrastructure. The App Engine supports Python and Java as the primary programming languages to develop web applications. Developers can develop web applications in Python or Java and deploy those applications in App Engine for automatic scaling and load balancing. App Engine also provides a datastore that supports simple create, retrieve, and delete functions. Developers can access the datastore from within App Engine web applications to store and query data. Google App Engine also provides Google Data APIs for accessing Google Apps components like Mail, Calendar, Search, and Docs.

Note

For more information on Google AppEngine, please visit http://code.google.com/appengine/.

Figure 1-24 shows the developer's guide landing page for Google App Engine.

The Google App Engine developer's guide

Figure 1.24. The Google App Engine developer's guide

Note

You can find the Google AppEngine developer's guide here http://code.google.com/appengine/docs/python/gettingstarted/

The developer's guide provides developers with APIs and samples to build web applications on Google App Engine. The App Engine includes all the basic components for building scalable web applications.

Note

The Google App Engine falls under the enterprise category of the cloud services pyramid.

SalesForce.com and Force.com[4]

SalesForce.com is popular as the cloud CRM application and has established a very good user base in small-to-medium businesses. The success of SalesForce.com can be partially attributed to its multitenant architecture that is completely metadata driven and flexible for users to customize. Users can not only customize the user interface but also tailor the CRM business objects their business. SalesForce.com extended the multitenant and metadata-driven architecture to a much more open platform called Force.com, which SalesForce.com refers to as a platform as a service (PaaS) offering.

Force.com is a platform for building business applications like enterprise resource planning (ERP) and supply chain management (SCM). Figure 1-25 illustrates the developer workflow for the Force.com platform.

The SalefForce.com developer workflow

Figure 1.25. The SalefForce.com developer workflow

The Force.com developer workflow includes:

  • Creation of an application using Force.com Builder, which is a web-based IDE, or the Force.com IDE, which is a plug-in for the Eclipse IDE

  • Programming the business logic using formulas, workflows and Apex programming language

  • Adding tests to the application

  • Extending the user interface using the VisualForce IDE

  • Creating public web page using Force.com sites

  • Deploying the application

  • Distributing the application using the AppExchange on-demand distribution system

Note

The SalesForce.com SaaS falls under the applications category of the cloud services pyramid, and the Force.com PaaS falls under the middleware and enterprise categories.

GoGrid

The GoGrid cloud service offers Windows and Linux virtual machine images preconfigured with the most frequently used software components. It also offers cloud storage and free hardware load-balancing between virtual machine instances using Big IP's F5 load balancer. The service is very similar to the Amazon EC2 service offering with some feature differences.

Figure 1-26 illustrates the cloud hosting features of GoGrid.com.

GoGrid.com Cloud Hosting Features

Figure 1.26. GoGrid.com Cloud Hosting Features

3Tera

3Tera's AppLogic platform is a grid operating system for deploying web applications. AppLogic provides a client interface, shown in Figure 1-27, for virtually designing your cloud application by dragging and dropping virtualized web, application, and database servers on the design surface and connecting them.

3Tera AppLogic example

Figure 1.27. 3Tera AppLogic example

In Figure 1-27, you can drag and drop virtual servers from the toolbox on the left on to the design surface on the right for creating cloud web applications.

Microsoft

In 2008 during the Professional Developer's Conference (PDC), Microsoft announced its official entry into the cloud services arena with the Windows Azure platform (previously known as Azure Services Platform). Even though, the Microsoft Online services called Business Productivity Online Suite (BPOS) have been around for a few years, the Windows Azure platform is an attempt to create an end-to-end cloud service offering in the platform, middleware, enterprise services, and consumer services categories.

Windows Azure is a collection of building blocks for cloud services. Microsoft has been in the cloud business for quite some time with its consumer cloud services like MSN, Xbox Live, and Hotmail. Microsoft has also announced a suite of cloud-based business productivity and collaboration applications called Microsoft Online services that include applications like SharePoint Online, Exchange Hosted Services, and Conferencing Services. Figure 1-28 illustrates the components of the Windows Azure Platform.

Microsoft Windows Azure Platform (Source: Microsoft Azure Website)

Figure 1.28. Microsoft Windows Azure Platform (Source: Microsoft Azure Website)

Figure 1-28 shows that Windows Azure is the core platform for Microsoft's cloud services offerings. It will be the foundation for online services like Windows Live, Office Live, Exchange Online, SharePoint Online, and CRM Online. Windows Azure consists of three main components that I will cover in this book: Windows Azure, SQL Azure, AppFabric (previously known as .NET Services). Windows Azure is the operating system in the cloud, and it forms the core platform for all the other Azure Services. SQL Azure is the database engine in the Windows Azure Platform. AppFabric is the middleware component that consists of services like ServiceBus and Access Control. Live Services is the building blocks for creating consumer-facing applications. Over the course of one year, Microsoft removed Live Services from the Windows Azure collection of services. So, you will find several versions of Windows Azure platform documentation that includes Live Services. In this book, I will cover only the core Windows Azure platform in detail. I have omitted out Live Services because Microsoft's strategy around it was not clear during the course of writing this book.

Warning

At the time of this writing, Microsoft was implementing many changes in the Windows Azure platform. For example, the workflow services and the developer edition of the Live Services component were recently discontinued. I will not cover workflow services and Live Services in this book. Also, note that SQL Azure is the new name for SQL Services and SQL Server Data Services (SSDS). The .NET Services was renamed to AppFabric.

Figure 1-29 shows the Windows Azure pricing information available at the time of this writing.

Windows Azure pricing information

Figure 1.29. Windows Azure pricing information

Note

You can get the latest pricing information on Windows Azure at http://www.microsoft.com/azure/pricing.mspx.

Figure 1-30 illustrates a typical developer workflow on the Windows Azure Platform.

Windows Azure Platform Developer Workflow.

Figure 1.30. Windows Azure Platform Developer Workflow.

The typical developer workflow steps for Windows Azure Platform follow:

  1. Create a Windows Azure account (i.e., an account for Windows Azure, AppFabric, or SQL Services).

  2. Download and prepare the development fabric to create a local cloud platform.

  3. Create an application in the development fabric.

  4. Test the application in the development fabric.

  5. Package the application for cloud deployment.

  6. Test the application on Windows Azure in the cloud.

  7. Stage the application in the Windows Azure staging environment in the cloud.

  8. Deploy the application in the production farm.

The cloud service providers discussed in this section are a subset of a larger cloud service industry. The list is by no means an exhaustive one, but a short-list of the popular vendors. Some of the other vendors making inroads into the cloud services industry are Joyent, IBM (with its Blue Cloud initiative and Amazon partnership), Yahoo, and Cisco.

Figure 1-31 categorizes the cloud services discussed in this chapter in the cloud pyramid layers.

Cloud services Offerings and Pyramid Layers

Figure 1.31. Cloud services Offerings and Pyramid Layers

Note that some services like Force.com, Google App Engine, Live Services, and Google Apps span multiple layers. The broadest offerings are from Microsoft and Amazon. Amazon has a comprehensive platform and infrastructure offerings, and Microsoft has significant offerings in platform, middleware, enterprise services, and consumer services layers. The Windows Azure platform is the newest but has established its brand name within a very short amount of time in its vast developer community. From the next chapter onward, I will dive deep into Microsoft Azure.

Summary

In this chapter, I gave you a high-level overview of the cloud services industry, its ecosystem, the drivers and barriers for its success, and some of the major cloud services offerings currently available. "Cloud service" is a broad term that can mean different things to different people. Even though one chapter is not enough to clarify this vast nebula of services, I narrowed down the scope of the cloud services definition into a cloud services pyramid model. This pyramid will help you categorize some of the existing and new cloud services by their offerings.

In the next chapter, I will give you an overview of the Microsoft Windows Azure platform, its components and the opportunity it offers to the software developers. You will also learn basic Windows Azure programming in the next chapter.

Bibliography

3Tera. (n.d.). 3Tera AppLogic. Retrieved from 3Tera: http://www.3tera.com/

Apache Software Foundation. (n.d.). Apache Hadoop. Retrieved from http://hadoop.apache.org

Factor, A. (2001). Analyzing Application Service Providers. Prentice Hall.

GoGrid.com. (n.d.). GoGrid.com. Retrieved from GoGrid.com: http://www.gogrid.com

Google. (n.d.). Google AppEngine. Retrieved from Google: http://code.google.com/appengine

Google. (n.d.). Google Apps. Retrieved from Google Apps: http://www.google.com/apps/intl/en/business/index.html

Mario Barbacci, M. H. (1995). Quality Attributes. Pittsburgh, Pennsylvania 15213: Software Engineering Institute, Carnegie Mellon University.

Microsoft Corporation. (n.d.). About Windows Azure. Retrieved from Windows Azure: http://www.azure.com/

Microsoft Corporation. (n.d.). Windows Azure Pricing. Retrieved from Windows Azure: http://www.microsoft.com/azure/pricing.mspx

Open ID Foundation. (n.d.). Retrieved from http://openid.net/foundation/

Staten, J. (2008). Is Cloud Computing Ready For The Enterprise? Forrester Research, Inc.



[1] Source Data: http://aws.amazon.com/

[2] Source Data: http://www.google.com/apps/intl/en/business/index.html

[3] Source Data: http://code.google.com/appengine

[4] Source Data: http://www.salesforce.com

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.190.156.93