IaaS, PaaS, And the Windows Azure Platform
-
Author
nadia-metoui -
Category
Documents
-
view
225 -
download
0
Embed Size (px)
Transcript of IaaS, PaaS, And the Windows Azure Platform
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
1/21
1
IaaS, PaaS, and the Windows Azure
Platform
Keith Pijanowski
Platform Strategy Advisor
Microsoft
October 2009
ContentsIntroduction .................................................................................................................................................. 2
An Overview of IaaS and PaaS ...................................................................................................................... 4
Building Applications to run in the Cloud ..................................................................................................... 6
Building Virtual Machines for an IaaS Offering ......................................................................................... 7
Building Application Packages for Windows Azure .................................................................................. 9
Scalability, Availability, and Reliability in the Cloud ................................................................................... 10
Managing Multiple Machine Instances ................................................................................................... 11
Windows Azures Fabric Controller ........................................................................................................ 12
Dependency Management in the Cloud ..................................................................................................... 13
Software Licenses and Virtual Machines ................................................................................................ 14
Azure Services ......................................................................................................................................... 14
Application Lifecycle Considerations .......................................................................................................... 16
The Lifecycle of a Virtual Machine .......................................................................................................... 16
The Lifecycle of an Application Package ................................................................................................. 19
Summary ..................................................................................................................................................... 20
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
2/21
2
IntroductionOne of the uses of Cloud Computing is to provide an environment in which organizations can run their
own custom applications in the Cloud. This is important because most organizations today have an IT
presence whose purpose is to build custom software that gives the organization a competitive
advantage. Unfortunately, the problem with custom built software is that it is expensive. Organizations
have to pay a lot of upfront costs to purchase hardware and acquire software licenses (operating
systems, databases, etc.). These upfront costs that are amortized over several years are known as
capital expenditures. Additionally, ongoing support for hardware, software, and the application itself
can be high. The bottom line is that to build a conventional on-premise solution a lot of costs are
incurred before any value is gained from the custom application. Figure 1 below is a chart of upfront
costs, ongoing costs and the value gained from an application over time when it is run on-premise.
Figure 2 shows the lifecycle of a custom application and all the phases that are needed to procure and
support an environment for the application to live on-premise.
The goal of a Cloud Computing is to drive down upfront cost, drive down ongoing costs, and take
complexity out of an applications lifecycle.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
3/21
3
Figure 1 Capital Expenditures and ongoing costs associated with On-Premise Applications
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
4/21
4
Figure 2 The On-Premise Application Lifecycle
An Overview of IaaS and PaaSToday there are two types of Cloud offerings emerging in the industry that can be used to host a custom
application. These two offerings are Infrastructure as a Service (IaaS) and Platform as a Service (PaaS).
IaaS provides an environment for running user built virtualized systems in the cloud. A high level
graphic illustrating this technique is shown in Figure 3. Using this technique virtual machines are
created on premise and loaded with all the software that will eventually run in the cloud. This includes
custom built software as well as licensed software. After the virtual machine is built it is uploaded to the
Cloud Infrastructure and started. Once the virtual machine is started the IaaS vendor can ensure that
the running virtual machine continues to look healthy as a whole. It is the responsibility of the customer
to monitor all the custom built software and licensed software to insure that they are operating
properly. IaaS is an option that is very flexible and is the best choice for moving applications to the
cloud when there is no time to rework the applications code for a cloud environment.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
5/21
5
Figure 3 Infrastructure as a Service
The other type of Cloud Offering for running custom applications is known as a Platform as a Service or
PaaS for short. The Windows Azure Platform is such a platform. In a PaaS environment only applicationcode needs to be uploaded configured and run. In other words, in a PaaS environment the unit of
deployment is an application package which contains the code developed by the development team.
This is shown in Figure 4. This implies that all the tools that an application requires to do its job already
exist within the PaaS environment and are ready to use on demand.
Figure 4 The Azure Services Platform
Figure 5 below shows a list of cloud vendors that offer either Infrastructure as a Service or a Platform as
a Service. This is by no means a complete list. It is just a sampling of what is out in the industry today in
order to provide concrete examples of the two different techniques for building environments in the
Cloud that can host a custom application.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
6/21
6
Platform Vendor Offering Style
Amazon Amazon Web Services IaaS
ServePath GoGrid IaaS
Rackspace Mosso|The Rackspace Cloud IaaS
Google Google App Engine PaaS
Microsoft Azure Services Platform PaaS
Salesforce.com Force.com PaaS
Figure 5 Cloud Offerings for hosting custom applications
Figures 3 and 4 above are simplistic representations of both techniques. They leave out important
details such as:
1. Are there any special considerations for building an application to run in each of these Cloudofferings?
2. How does each Cloud offering provide scalability, availability, and reliability?3. What Cloud services can be utilized to replace licensed software?4. How does each cloud offering affect the application lifecycle?
Investigating these questions is a good way to develop an understanding of each offering and the
differences between them. In the remaining sections of this article I will describe how IaaS
environments operate and how the Windows Azure Platform operates. Along the way I will address the
questions above.
The questions above are not the only questions that should be considered when evaluating a cloud
offering. There are other important questions pertaining to data privacy, service level agreements, anddata center certifications that will impact the types of organizations and the types of applications that
can take advantage of these cloud offerings. These issues are beyond the scope of this paper. In this
paper I wish to focus on issues that will impact total cost of ownership and the complexity of the
application running in the cloud.
Building Applications to run in the CloudIn this section I will compare the unit of deployment for each offering style. Specifically I will discuss
what is required to build a virtual machine for a cloud platform (IaaS). Then I will describe how
application code needs to be structured and configured in order to run in the Azure Services Platform
(PaaS).
http://aws.amazon.com/http://aws.amazon.com/http://www.gogrid.com/http://www.gogrid.com/http://www.mosso.com/index.jsphttp://www.mosso.com/index.jsphttp://code.google.com/appengine/docs/whatisgoogleappengine.htmlhttp://code.google.com/appengine/docs/whatisgoogleappengine.htmlhttp://www.microsoft.com/azure/default.mspxhttp://www.microsoft.com/azure/default.mspxhttp://www.salesforce.com/platform/http://www.salesforce.com/platform/http://www.salesforce.com/platform/http://www.microsoft.com/azure/default.mspxhttp://code.google.com/appengine/docs/whatisgoogleappengine.htmlhttp://www.mosso.com/index.jsphttp://www.gogrid.com/http://aws.amazon.com/ -
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
7/21
7
Building Virtual Machines for an IaaS Offering
Before discussing how to build a virtual machine for an IaaS environment it is necessary to understand
the runtime environment of an IaaS environment. Figure 6 shows a typical runtime environment for
IaaS. Here we see physical infrastructure, volume storage and management APIs. Once a virtual
machine is uploaded to an IaaS vendors hosting environment it can be configured to use the IaaS
vendors raw storage (discussed in the next paragraph). Once configured, the virtual machine can be
deployed and started via some form of automation which allocates available infrastructure to run the
virtual machine (and the application within it).
Figure 6 The runtime environment for an IaaS offering
Building an application to run in an IaaS environment is very similar to building an application to run on-
premise. Developers will use familiar tools, programming languages, and any needed licensed products
(database software, workflow, user management, etc.). Once application development is complete the
application code and any licensed software that the application is dependent upon are installed on a
virtual machine. The virtual machine can be thought of as a container that insulates the application and
its dependencies from the run time environment. A diagram showing the components of a virtual
machine built for an IaaS environment is shown in Figure 7.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
8/21
8
Figure 7 Inside a Virtual Machine built for an IaaS environment.
Application storage is an important consideration when using any cloud offering. Figure 7 shows how an
IaaS vendor provides storage to a virtual machine. When running in an IaaS environment all storage
local to the virtual machine should be considered volatile. For example, you would not want to create afolder on your C:\ drive and use it for database storage. This is due to the fact that if your virtual
machine crashes while it is running then the easiest thing for your IaaS vendor to do is to restart your
virtual machine from its initial state which is the state it was in when you uploaded it. To get around
this problem cloud based storage volumes can be purchased and mounted as devices within your virtual
machine. This allows any software running within the virtual machine to see these external cloud
storage volumes as if they were conventional disk drives. This does not really represent an additional
cost because if there was a way to safely use storage local to your virtual machine then that would mean
your virtual machine would grow in size with usage. This would use roughly the same amount of storage
as if the data were placed in the externally mounted volumes. The bottom line is that the cost would be
about the same since most vendors charge by total storage used without regard for how it is chunked upinto volumes. Furthermore, placing your application data in volumes outside the virtual machine allows
the platform vendor to replicate (and possibly backup) the data for durability.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
9/21
9
Building Application Packages for Windows Azure
The runtime environment of the Windows Azure Platform is known as Windows Azure. Windows Azure
which is shown in Figure 8 is an operating system for the Cloud. A useful analogy is to compare
Windows Azure to conventional on-premise operating systems. Conventional operating systems
manage basic storage, devices, and run applications. Windows Azure provides the same functionality
within Microsofts datacenters which are built to provide cloud computing. Basic storage is provided by
the table, queue, and blob services shown in Figure 8. In order to provide a runtime environment for
custom applications, Windows Azures Fabric Controller manages a datacenter of servers to provide
compute power. Do not think of Windows Azure as a conventional operating system with a Start menu,
a Control panel, and a desktop of icons. It is not an operating system in the traditional sense. Windows
Azure is the storage services previous mentioned and the services provided by the Fabric Controller that
provide compute power to an application running in a Microsoft datacenter that is accessible via the
public internet.
Figure 8 Windows Azure the runtime environment for the Windows Azure Platform
The Fabric Controller can be thought of as a layer that sits on top of the physical infrastructure that is
used to host an application. Application packages which contain all the components of an application
are uploaded to Windows Azure. Once uploaded the application packages can be further configured and
started on demand by the software owner. When started application components are deployed to
physical infrastructure by the Fabric Controller.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
10/21
10
Developers will use familiar tools and programming languages to build for Windows Azure. However,
Windows Azure is slightly different than the runtime environment found within an on-premise data
center because availability, reliability, and scale are specified via configuration and provided for
automatically by the Fabric Controller (this will be discussed in the next section). Therefore, application
code needs to be structured for Windows Azure. Figure 9 shows the basic structure of an application
that is designed for Windows Azure. Using the terminology of the Windows Azure documentation, a
web application becomes a Service that is composed of web roles and worker roles. A web role is a
component that listens for web requests and responds to web requests. A worker role performs
background processing and typically receives its input from the Windows Azure Queue Service. In a
cloud environment that is managed by a Fabric Controller the service definition file is a very important
part of the application. This file indentifies all the web roles and worker roles in the application. As we
will see in the next section, the service definition file contains the applications needs for compute
resources.
Figure 9 - Service Code (or a Web Application) built for the Azure Services Platform
Microsoft provides a software development kit that includes a Development Fabric that emulates
Windows Azure on a developers desktop. This allows developers to code and unit test locally. It would
be unfortunate if developers had to actually code and unit test within the cloud platform. Windows
Azure also provides a staging environment that is separate from the production environment. Once
code has been developed and unit tested locally it can be uploaded to the staging environment for
integration testing and any other last minute tests before being deployed to the production
environment.
Scalability, Availability, and Reliability in the CloudMost applications today do not run on a single machine. Oftentimes an applications workload is spread
out over several machines to increase availability, allow for scalability, and eliminate any single points of
failure (reliability). The configuration shown in Figure 10 illustrates this concept. It contains three web
servers, three application servers, and two clustered database servers. Deploying an application in this
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
11/21
11
three tiered manner allows each tier to be available, reliable, and scale. In this section Ill show how an
IaaS environment and the Windows Azure Platform provide scalability, availability, and reliability by
emulating the techniques shown in Figure 10.
Figure 10 Availability, Scalability and Reliability in an on-premise environment
Managing Multiple Machine InstancesIf an application is architected to be deployed across three logic tiers as shown in Figure 10 then to
achieve the same availability and reliability from a cloud platform based on virtual machines, three
different virtual machines would need to be designed, built and stored within the IaaS vendors
environment. Specifically, you would need one virtual machine designed and built to play the role of a
web server, another for the application server, and finally a database server would be needed.
At run time the appropriate number of each type of virtual machine would need to be started. For
example, to emulate Figure 10 in an IaaS environment you would need to start three instances of the
web server virtual machine, three instances of the application server virtual machine, and two instances
of the database server virtual machine. Therefore the environment shown in Figure 10 would require a
total of eight machine instances to be up and running. Typically management APIs or a Management
Web Site is used to mount storage volumes, load each virtual machine, and then run each virtual
machine. If any layer of the system requires more processing power then it can be scaled accordingly.
For example, the web servers and the application servers could be scaled out and the database servers
could be scaled up. Figure 11 shows how such a system would be deployed to a cloud platform based
on virtual machines.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
12/21
12
Figure 11 Deploying a three tiered system to an IaaS environment
Windows Azures Fabric Controller
The Windows Azure Fabric Controller contains the machinery needed to inspect an applications service
definition file and deploy the application in a manner that provides the availability, reliability, and scaleneeded by the application. For example, lets say that an application requires three instances of its web
role and three instances of its worker role to be running at all times. The service definition file is used to
specify how many instances of each role the Fabric Controller should start and keep running. The Fabric
Controller would look for a place to deploy and run the three web roles and the three worker roles. A
simple deployment option would be for the Fabric Controller to provide one physical system for all the
roles that make up an application. This means that the three web roles and the three worker roles
would be run on one physical system within a Microsoft datacenter. While this provides some
availability (many web roles and worker roles can be started on the single virtual machine) it provides
minimum scalability (limited to the CPU cycles of a single system) and no reliability (the system is a
single point of failure). There is an answer to this problem. When multiple instances of roles areneeded the Fabric Controller will make sure that the application does not sit behind a single physical
point of failure like a power switch on a single rack of servers. This is shown in Figure 12. Notice in
Figure 12 that relational database services are provided by SQL Azure Database, one of the Azure
Services that will be discussed in the next section.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
13/21
13
Figure 12 Availability, Scalability, and Reliability in the Azure Services Platform
Dependency Management in the CloudToday development teams do not build custom applications from scratch implementing every capability
in the build phase of the application lifecycle. Typically, core software components such as database
management systems are purchased from third party vendors. If a Cloud vendor can provide cloud
services with similar capabilities then these dependencies can be reduced. This will also allow the cost
and complexity of the application to be reduced.
Additionally, no application should be a silo even if it is running in the cloud. Applications developers
should have tools that let them easily connect to external applications. This allows for the retrieval of
data managed by external applications. It also allows the application to consume external businesslogic. For example, many applications need to interoperate with purchased applications that provide
capabilities to the business such as Enterprise Resource Planning (ERP) and Customer Relationship
Management (CRM).
Dealing with both of these dependencies licensed software components and interoperability with
external systems - will be the toughest challenge development teams face if they wish to move to any
cloud environment.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
14/21
14
Software Licenses and Virtual Machines
If the application you wish to virtualize and run in an IaaS environment requires third party products like
a relational database, or messaging middleware then customers will have to be purchase and support
this third party products themselves. However, some IaaS vendors provide cloud based services thathave the same or similar capabilities as licensed products. For example, data services and queue
services can be used to replace a purchased database management systems and middleware messaging
software respectively. This is shown in Figure 13. Application code would need to be rewritten such
that it utilizes these cloud storage services instead of licensed database management software.
However, once the application is restructured to use these services the complexity of the application
would be reduced since this would result in one less virtual machine being needed. More importantly,
the licenses for the database software and the messaging software would no longer be needed. These
licenses would be replaced with usage fees associated with the cloud storage services.
Figure 13 - Replacing Licensed Software with Cloud Services
Azure Services
The goal of Azure Services is to reduce the need for licensed software. At the commercial launch of the
Windows Azure Platform the following services will be online: Access Control Service, Service Bus, and
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
15/21
15
SQL Azure Database. Figure 14 shows the Azure Services and how they can be consumed by an
application running in Windows Azure. To address the need for structured data, SQL Data Services can
be used as a relational database in the Cloud.
Figure 14 Using Azure Services
The Service Bus, which is one of the Azure Services shown in Figure 14, provides for application
interoperability. Using the Service Bus applications can expose their own data and logic to others as
services and consume other applications services. For example, using the Service bus an application
running within the Azure Services Platform could communicate with another application that is still
running within the organizations on-premise datacenter. The other Azure Services shown in Figure 14
can be used in a similar fashion to help alleviate the need for purchased third party components.
These are capabilities that most organizations do not wish to build themselves. In an on-premise
environment software that provides these capabilities would be licensed from a third party vendor.
Replacing these licensed software components is a tall order; however, if it can be accomplished then
the savings passed on to the customer are far greater than the savings achieved by using a platform built
to host virtual machines. This is due to the fact that only the custom code needs to be built and
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
16/21
16
uploaded to the Cloud. Once the application is started, only the application itself needs to be supported
directly by the customer. Third party software does not need to be supported by the customer since
these dependencies are replaced by the Azure services which are part of the platform and supported by
Microsoft. There is a downside to this offering - application code will need to be reworked to take
advantage of the Windows Azure Platform.
Application Lifecycle ConsiderationsBoth of the cloud environments discussed in this paper makes the application lifecycle cheaper and
easier than on premise development. However, there are differences between the two especially when
it comes to the procurement of third party software, complexity in the application lifecycle, the types of
applications that can be hosted, and the ongoing maintenance needed to support the hosted
application. In this section I will investigate the application lifecycle for applications built for IaaS
environments as well as applications built for the Windows Azure Platform.
The Lifecycle of a Virtual Machine
Figure 15 shows a high level process that depicts the tasks needed to utilize an IaaS environment for a
custom application. Local development activities do not need to change assuming everything utilized to
build the application can be virtualized. (This is the Build phase shown in Figure 15.) Next, software
licenses will need to be procured from third party software vendors. For example database
management systems and messaging middleware (Procurement phase). The virtual machines that
represent the logical layers of the application can then be built. This is when the virtual machines that
represent, the web servers, the application servers, and the database servers are built out (Virtualize
phase). Usually IaaS vendors have readymade virtual machines that can be downloaded and used as a
starting point for building out your virtual machines. Once the virtual machines are created and fully
installed with all relevant software, you will need to create an account with your IaaS vendor if you do
not already have one (Account phase). This step does not represent a cost. Typically just a credit card is
needed. The virtual machines that make up the application can then be uploaded and started (Upload
and Start phases respectively).
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
17/21
17
Figure 15
Using an Infrastructure as a Service Environment
It is important to note that there will be a charge for each virtual machine instance that is running. So if
one virtual machine is started three times because it provides web server functionality which requires
fault tolerance and high availability then there will be a charge for each running instance. While the
application is running the platform vendor can monitor your virtual machine instances to insure that
they look healthy. However, it is up to the customer to monitor the application and any third party
software, like databases and messaging middleware, to make sure they are operating properly (Support
phase). At some point the virtualized operating system and any third party software will need to beupdated with either service packs or new versions. This will be the responsibility of the customer
(shown as the Patch/Upgrade phase in the figure above). The upgrading of all underlying infrastructure
is the responsibility of the IaaS vendor. Figure 15 also shows where costs are incurred in the process
and Figure 16 shows these same costs over time in the form of a cash flow diagram.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
18/21
18
Figure 16 Cash Flow for an IaaS Environment
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
19/21
19
The Lifecycle of an Application Package
Figure 17 shows a high level process that depicts the tasks needed to utilize the Windows Azure
Platform. Local development activities do not need to change since Microsofts software development
kit comes with a Development Fabric that emulates the runtime environment of Windows Azure.
(This is the Build phase shown in Figure 17.) Before uploading code to the Windows Azure Platform you
will need to create an account if you do not already have one (Account phase). This step does not
represent a cost - only a credit card is needed. Once an account is setup application code can be
uploaded and started. (The upload and start phases respectively.) It is important to note that there will
be a charge for each web role and worker role that is running. So if one web role is started three times
because it provides web functionality that requires fault tolerance and high availability then there will
be a charge for each running instance. While the application is running it is the responsibility of the
customer to monitor the application to make sure it is operating properly (Support phase). The
upgrading of all infrastructure and software that makes up the Windows Azure Platform is the
responsibility of Microsoft so this is not part of the application lifecycle for applications running on the
Windows Azure Platform. Figure 17 also shows where costs are incurred in the process and Figure 18
shows these same costs over time in the form of a cash flow diagram.
Figure 17 Using the Azure Services Platform
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
20/21
20
Figure 18 Cash Flow for an Application using the Azure Services Platform
SummaryThe true spirit of cloud computing is about replacing upfront costs and capital expenditures (CAPEX)
with operational expenditures (OPEX). A Cloud environment should also drive down ongoing support
costs. Today there are two types of cloud environments that can be utilized to lower upfront costs and
ongoing costs that are incurred while building and running a custom application. These two styles are
known as Infrastructure as a Service (IaaS) and Platform as a Service (PaaS).
An Infrastructure as a Service (IaaS) offering provides solid cost savings because the infrastructure
associated with providing compute power, storage, and networking does not need to be purchased and
maintained by the customer. These assets are the responsibility of the IaaS vendor. However,
customers will have to be purchase and support third party software in the traditional fashion.
-
8/2/2019 IaaS, PaaS, And the Windows Azure Platform
21/21
An Infrastructure as a Service offering also provides maximum flexibility because just about anything
that can be virtualized can be run on these platforms. This is perhaps the biggest benefit of an IaaS
environment. If a system can be represented as a series of virtual machines then it can be migrated into
an IaaS environment with little or no rewriting of code. This also allows applications to more easily
move back and forth between cloud environments and on-premise datacenters.
The Windows Azure Platform is a Platform as a Service (PaaS) offering. Developers can use familiar
programming languages and common development environments to build their applications. Simple
applications that just use web pages, web services, and SQL Azure Database will be able to move
between on-premise datacenters to the Azure Services Platform with minor configuration changes.
However, applications that take advantage of the other Azure Services and Cloud specific features of
Windows Azure like Blobs, Tables, Queues, and Worker roles will need to be written specifically for the
platform. This is certainly an adoption hurdle for migrating existing applications to the Windows Azure
Platform. However, organizations that do move to this platform will be able to replace more upfront
costs and capital expenditures with operational expenditures because third party software licenses will
no longer be needed.
Acknowledgements
I would like to thank the following people for providing feedback that allowed this paper to be accurate
and understandable: David Aiken, Eric Castillo, David Chou, Hanu Kommalapati, Steve Marx, Abe
Pachikara, Wade Wegner, and William Zack.
Biography
Keith Pijanowski is a Platform Strategy Advisor for Microsoft's Developer and Platform Evangelism team.
Keith works with Microsoft's larger customers by helping them to apply new ideas and new technologies
to business problems. Keith is also a frequent speaker at Microsoft events and community events in the
New Jersey and New York area. You can reach Keith atwww.KeithPij.com.
http://www.keithpij.com/http://www.keithpij.com/http://www.keithpij.com/http://www.keithpij.com/