The Windows Azure platform is an Internet-scale cloud
computing services platform hosted in Microsoft data centers. Windows
tools provide functionality to build solutions that include a cloud
services operating system and a set of developer services. The key parts
of the Windows Azure platform are:
The Windows Azure platform is part of the Microsoft cloud, which consists of multiple categories of services:
cloud-based applications–
These are services that are always available and highly scalable. They
run in the Microsoft cloud that consumers can directly utilize. Examples
include Bing, Windows Live Hotmail, Office Live, etc.
software services–
These services are hosted instances of Microsoft’s enterprise server
products that consumers can use directly. Examples include Exchange
Online, SharePoint Online, Office Communications Online, etc.
platform services– This
is where the Windows Azure platform itself is positioned. It serves as
an application platform public cloud that developers can use to deploy
next-generation, Internet-scale, and always available solutions.
infrastructure services– There is a limited set of elements of the Windows Azure platform that can support cloud-based infrastructure resources.
Figure 1
illustrates the service categories related to the Windows Azure
platform. Given that Windows Azure is itself a platform, let’s explore
it as an implementation of the PaaS delivery model.
The Windows Azure platform
was built from the ground up using Microsoft technologies, such as the
Windows Server Hyper-V-based system virtualization layer. However, the
Windows Azure platform is not intended to be just another off-premise
Windows Server hosting environment. It has a cloud fabric layer, called
the Windows Azure Fabric Controller, built on top of its underlying infrastructure.
The Windows Azure
Fabric Controller pools an array of virtualized Windows Server instances
into a logical entity and automatically manages the following:
resources
load balancing
fault-tolerance
geo-replication
application lifecycle
These are managed without
requiring the hosted applications to explicitly deal with the details.
The fabric layer provides a parallel management system that abstracts
the complexities in the infrastructure and presents a cloud environment
that is inherently elastic. As a form of PaaS, it also supports the
access points for user and application interactions with the Windows
Azure platform.
The Windows Azure
platform essentially provides a set of cloud-based services that are
symmetric with existing mainstream on-site enterprise application
platforms (Figure 2).
For example:
storage services
– a scalable distributed data storage system that supports many types
of storage models, including hash map or table-like structured data,
large binary files, asynchronous messaging queues, traditional file
systems, and content distribution networks
compute services
– application containers that support existing mainstream development
technologies and frameworks, including .NET, Java, PHP, Python, Ruby on
Rails, and native code.
data services
– highly reliable and scalable relational database services that also
support integration and data synchronization capabilities with existing
on-premise relational databases
connectivity services
– these are provided via a cloud-based service bus that can be used as a
message intermediary to broker connections with other cloud-based
services and services behind firewalls within on-premise enterprise
environments
security services
– policy-driven access control services that are federation-aware and
can seamlessly integrate with existing on-premise identity management
systems
framework services – components and tools that support specific aspects and requirements of solution frameworks
application services – higher-level services that can be used to support application development, such as application and data marketplaces
All of these capabilities can be utilized individually or in combination.
Windows Azure (Application Container)
Windows Azure serves as
the development, service hosting, and service management environment.
It provides the application container into which code and logic, such as
Visual Studio projects, can be deployed. The application environment is
similar to existing Windows Server environments. In fact, most .NET
projects can be deployed directly without significant changes.
A Windows Azure instance
represents a unit of deployment, and is mapped to specific virtual
machines with a range of variable sizes. Physical provisioning of the
Windows Azure instances is handled by the cloud fabric. We are required
only to specify, by policy, how many instances we want the cloud fabric
to deploy for a given service.
We have the ability to
manually start and shut down instances, and grow or shrink the
deployment pool; however, the cloud fabric also provides automated
management of the health and lifecycles of instances. For example, in
the event of an instance failure, the cloud fabric would automatically
shut down the instance and attempt to bring it back up on another node.
Windows Azure also provides a
set of storage services that consumers can use to store and manage
persistent and transient data. Storage services support geo-location and
offer high durability of data by triple-replicating everything within a
cluster and across data
centers. Furthermore, they can manage scalability requirements by
automatically partitioning and load balancing services across servers.
Also supported by
Windows Azure is a VHD-based deployment model as an option to enable
some IaaS requirements. This is primarily geared for services that
require closer integration with the Windows Server OS. This option
provides more control over the service hosting environment and can
better support legacy applications.
SQL Azure
SQL Azure is a
cloud-based relational database service built on SQL Server technologies
that exposes a fault-tolerant, scalable, and multi-tenant database
service. SQL Azure does not exist as hosted instances of SQL Server. It
also uses a cloud fabric layer to abstract and encapsulate the
underlying technologies required for provisioning, server
administration, patching, health monitoring, and lifecycle management.
We are only required to deal with logical administration tasks, such as
schema creation and maintenance, query optimization, and security
management.
A SQL Azure database
instance is actually implemented as three replicas on top of a shared
SQL Server infrastructure managed by the cloud fabric. This cloud fabric
delivers high availability, reliability, and scalability with automated
and transparent replication and
failover. It further supports load-balancing of consumer requests and
the synchronization of concurrent, incremental changes across the
replicas. The cloud fabric also handles concurrency conflict resolutions
when performing bi-directional data synchronization between replicas by
using built-in policies (such as last-writer-wins) or custom policies.
Because SQL Azure is built on
SQL Server, it provides a familiar relational data model and is highly
symmetric to on-premise SQL Server implementations. It supports most
features available in the regular SQL Server database engine and can
also be used with tools like SQL Server 2008 Management Studio, SQLCMD,
and BCP, and SQL Server Integration Services for data migration.
Windows Azure Platform AppFabric
This represents the version of AppFabric that
is local to the Windows Server environment. Windows Azure platform AppFabric (with the word “platform” intentionally not capitalized), is the cloud-based version of AppFabric that runs on Windows Azure.
Windows Azure platform
AppFabric helps connect services within or across clouds and
enterprises. It provides a Service Bus for connectivity across networks
and organizational boundaries, and an Access Control service for
federated authorization as a service.
The Service Bus
acts as a centralized message broker in the cloud to relay messages
between services and service consumers. It has the ability to connect to
on-premise services through firewalls, NATs, and over any network
topology.
Its features include:
connectivity using standard protocols and standard WCF bindings
multiple
communication models (such as publish-and-subscribe, one-way messaging,
unicast and multicast datagram distribution, full-duplex bi-directional
connection-oriented sessions, peer-to-peer sessions, and end-to-end NAT
traversal)
service endpoints that are published and discovered via Internet-accessible URLs
global hierarchical namespaces that are DNS and transport-independent
built-in intrusion detection and protection against denial-of-service attacks
Access Control acts as a
centralized cloud-based security gateway that regulates access to
cloud-based services and Service Bus communications, while integrating
with standards-based identity providers (including enterprise
directories such as Active Directory and online identity systems like
Windows Live ID).