Logo
Windows XP
Windows Vista
Windows 7
Windows Azure
Windows Server
Windows Phone
EPL Standings
 
 
Windows Azure

The Nickel Tour of Azure : Explaining Azure to the managers

6/20/2012 4:06:53 PM

Explaining Azure to the managers

We aren't all graced by management with a strong technical background, and yet they need a deeper dive into the shallow end to achieve a win-win situation and obtain senior management buy-in to leverage this new platform. Sometimes, it's like you actually do work in the same office as Dilbert.

As we mentioned before, Microsoft Azure actually refers to a menu of services offered by Microsoft; each of these services is contained in the Azure Fabric. The Azure Fabric is essentially every piece of hardware and the software that monitors and controls the hardware. Every server, every firewall, every load balancer, failover services in the event of a failure, the Azure portal where we provision and deploy our application, create and check the health of our current services they're all part of the Azure Fabric. Fabric in this case has a very large definition as far as the Azure universe is concerned, the Azure Fabric is the continuum of space and time.

The three items on the Azure menu are Windows Azure, SQL Azure, and the AppFabric. The following diagram shows how these items interrelate with one another, as well as with applications and databases separate from Microsoft Azure.

One of the most interesting features of Azure is the support for a number of languages and web servers. Many people mistakenly think that because Azure is a Microsoft offering, its usage is limited to .NET and IIS. Nothing could be further from the truth! In addition to .NET 4.0 (including .NET 2.0, 3.0, and 3.5), Azure also supports PHP, C++, and Java, as well as Ruby and Ruby on Rails. There is also choice in the databases and development environments. Web servers include IIS, Apache, and Tomcat; databases include SQL Server (via SQL Azure) and MySQL; and development tools include all versions of Visual Studio 2008/2010, Visual Studio Web Developer 2008/2010 Express, and Eclipse that's a lot of choice! SDKs, toolkits, and plugins are provided for the more common options and others are being developed. Azure supports .NET 4, ASP.NET MVC and Silverlight, and new features are being added in an ongoing basis.

Microsoft has an expanding number of data centers around the world. For compliance purposes, you can select the data center in which your application will reside, or locate your application close by to take advantage of regional prices. Your application is replicated multiple times across the data center of your choosing; so, if there is a hardware failure on the primary instance, the load balancer will direct the traffic to an instance that is alive and healthy!

Windows Azure

Windows Azure is just what it sounds like it is the operating system part of the cloud, with a few other features. The most inflexible part of the Azure universe is the fact that Windows Azure is not designed to provide customized virtual machines; (custom VHDs are a newly announced offering at PDC10, but are a different service than Windows Azure) we are limited to a 64-bit version of Windows Server 2008. We can create VMs of different sizes (the sizes relate to costs), and the OS is highly configurable, but it must remain Windows.

Windows Azure encompasses two areas of functionality the compute service and the storage service. The next diagram shows how these services fit into the Azure universe. Additionally, there is an Azure Fabric Agent that connects the VM to the rest of the cloud. The Fabric Controller is a modified version of the Windows Server 2008 Hyper-V hypervisor, which sits in between our VM and the hardware, allowing resources to be used by the VM. There is a service that runs on all VMs, communicating the status of the VM back to the Fabric Controller, allowing the Fabric Controller to monitor for faults. Should a VM communicate a fault, the Fabric Controller can initiate a sequence of events to try and get the VM back to the proper status. This could be anything from a VM reboot to a new VM provisioning.

Compute service

The compute service can be thought of as the actual application code. Applications are further broken down into web roles and worker roles. Web roles are website applications, whereas worker roles are analogous to services on a local PC or server. Application users interact with web roles, while worker roles perform functions behind the scenes. Worker roles can interact with web roles, but application users cannot directly interact with a worker role (except in one special case, which we'll see later).

Worker roles are a separate entity from the web roles. They are a completely separate VM and act independently of each other. It is possible for a worker role to exist without a web role, just as a web role may exist without a worker role.

Storage service

For local storage of files (both small files consisting of a few kilobytes to large files up to terabytes) and simple data, we have to rely on the storage services. There are three components to the storage service: blob, table, and queue. Each has its own purpose, and we may use any combination of these components or none at all. Storage services can be used to build a highly scalable system as the amount of data and file storage is virtually endless (though every increase in storage space used comes with an increase of monthly cost). Given the way Windows Azure works, we'll more than likely use at least one of these services in any given application, and our sample application will use all three.

On Windows Azure, the local file system is not persistent, so our application needs to store and retrieve its resources from a floating storage location. Data placed in the storage service is persisted if a VM is shut down or if new VMs are brought online. For safety, all storage service data is replicated three times.

If this sounds unnecessary or confusing, think of the storage service options like a roaming profile. Unlike some cloud computing options, an Azure VM is not dedicated to us or our application. They are more like the PCs in the college computer lab. One day you may find space on one PC, and another day you have to use a different PC. If we saved information on the file system on one PC, we wouldn't have access to it on days where we sat at a different PC, and we probably wouldn't want others to access our files when they use the same machine where we stored them. If we turn our Azure application off and then on again, or switch between a staging and production VM, we're actually changing VMs. We need our information to be available immediately, and preferably without a great deal of work to distribute it hence, the floating storage service.

Blob Storage

Blob is an abbreviation for binary large object. Blob Storage is designed to contain large amounts of binary data such as images, music files, or complete documents and spreadsheets. Blobs are stored in containers, and each container can be up to 50 GB and contain a number of blobs. Up to 8 kb of metadata can be stored with each container in name/value pairs (note that metadata is at the container level, not the individual blob).

If an Azure-based web application displays a logo, that logo will be called from a Blob Storage endpoint, rather than a local file. We could also build a document management system or content management system using Blob Storage. To access a blob, we use a standard REST interface or a .NET client library.

Table Storage

This is the part where people get the most confused with all the Azure options. Windows Azure Table Storage is not the same as SQL Azure. Table Storage is not relational, does not have a defined schema, and does not use a query language for data access. In contrast, SQL Azure is an almost feature complete version of SQL Server 2008.

Table Storage operates more like a hash table or an indexed array. We do connect to table storage using ADO.NET Data Services, and we can also retrieve data through either Linq or REST. Table Storage can be used to store all manner of data, with a capacity of terabytes. Table properties (columns or values) can be strongly typed to a number of data types, and data is partitioned to improve scalability. Despite the large capacity of a table, the total combined size of the properties in a record can be a maximum of 1 MB.

Tables are created and managed programmatically from code we build, and although they seem limited, tables are actually a powerful storage method. A single table in Table Storage can actually contain more data than a single SQL Azure database, and contents can be loaded into generic or strongly types objects for ease of programming.

Queue Storage

Queue Storage is unlike the previous two storage services. In Windows Azure, a queue is a holding area for requests waiting to be processed by a worker role. Web roles interact with worker roles by adding requests to the queue. Unlike tables and blobs, which persist data for repetitive use, the Queue Storage is a container for transient data. One example of a common use could be the usage of Queue Storage to deposit messages based on events that occurred. Here, a worker role can pick these messages on a timed interval and perform event-based workflows, coded into the worker role, based on the message contents.

Each Windows Azure account can have multiple queues, and each queue can contain up to 8 kb of metadata in addition to the requests. Queue Storage is accessed via a REST interface, or .NET client library and can be accessed by any client with the correct storage credentials for the account.

Azure Fabric Agent and Controller

The Azure Fabric Agent is one of four things that have "fabric" in their name in the Microsoft Azure menu. The Windows Azure Fabric is part of the overall Azure Fabric, and is an interface between the Azure Fabric Controller and the individual VM and the VM's contents.
Other -----------------
- Application Life Cycle Management
- Sharing Digital Photographs : Exploring Photo-Sharing Communities
- Sharing Digital Photographs : Exploring Online Photo-Editing Applications
- Surfacing SQL Azure Data in Bing Maps by Using the Client Object Model
- Storing and Sharing Files and Other Online Content : Exploring Online Bookmarking Services
- Storing and Sharing Files and Other Online Content : Understanding Cloud Storage & Evaluating Online File-Storage and -Sharing Services
- Integrating the SharePoint Server Object Model and the Entity Data Model (part 2) - Create a Meeting Scheduler Visual Web Part
- Integrating the SharePoint Server Object Model and the Entity Data Model (part 1) - Create a Console Application to Write Data to a SharePoint List
- Collaborating on Presentations : Evaluating Web-Based Presentation Applications (part 2)
- Collaborating on Presentations : Evaluating Web-Based Presentation Applications (part 1)
- Securing the Connection to SQL Azure (part 3) - Surface SQL Azure Data in a Visual Web Part
- Securing the Connection to SQL Azure (part 2) - Set Permissions for an External Content Type
- Securing the Connection to SQL Azure (part 1) - Create an Application ID & Create an External Content Type
- Consuming SQL Azure Data : Integrating SQL Azure with BCS by Using SharePoint Designer 2010
- Collaborating on Databases : Exploring Web-Based Databases
- Consuming SQL Azure Data : Introduction to Business Connectivity Services
- Integrating Silverlight, Windows Azure DataMarket, and SharePoint
- Local Application for Updates : JupiterMotorsERP local application
- Collaborating on Spreadsheets : Exploring Web-Based Spreadsheets (part 3)
- Collaborating on Spreadsheets : Exploring Web-Based Spreadsheets (part 2)
 
 
Most view of day
- BizTalk Server 2009 Operations : Maintaining the BizTalk Group (part 3) - Restore Procedures
- Managing Windows 7 : Managing Windows Arrangements, Changing Search Options
- Windows Phone 8 : Configuring Basic Device Settings - Backing Up Your Phone (part 1) = Backing Up App Lists and Settings
- BizTalk Server 2009 Operations : Disaster Recovery (part 1) - Configuring the Destination System for Log Shipping
- Microsoft Dynamics GP 2010 : Dynamics GP system requirements
- Preparing Windows PE : Setting up the Environment
- Windows Server 2012 : File Services and Storage - Configuring iSCSI storage (part 2) - Configuring iSCSI Target Server - Installing the iSCSI Target Server role
- Windows Server 2012 : Installing and Managing Hyper-V in Full or Server Core Mode - Enabling the Hyper-V role
- Windows Phone 7 : The Silverlight Controls (part 5) - Interactive Controls - CheckBox Controls, RadioButton Controls
- Microsoft Excel 2010 : Inserting Blank Rows (part 2) - Separating Subtotaled Rows for Distributed Files
Top 10
- Windows Server 2012 : DHCP,IPv6 and IPAM - Exploring DHCP (part 3) - Creating IPv4 DHCP Scopes
- Windows Server 2012 : DHCP,IPv6 and IPAM - Exploring DHCP (part 2) - Installing DHCP Server and Server Tools
- Windows Server 2012 : DHCP,IPv6 and IPAM - Exploring DHCP (part 1)
- Windows Server 2012 : DHCP,IPv6 and IPAM - Understanding the Components of an Enterprise Network
- Microsoft OneNote 2010 : Using the Research and Translate Tools (part 3) - Translating Text with the Mini Translator
- Microsoft OneNote 2010 : Using the Research and Translate Tools (part 2) - Translating a Word or Phrase with the Research Pane
- Microsoft OneNote 2010 : Using the Research and Translate Tools (part 1) - Setting Options for the Research Task Pane, Searching with the Research Task Pane
- Microsoft OneNote 2010 : Doing Research with Linked Notes (part 2) - Ending a Linked Notes Session, Viewing Linked Notes
- Microsoft OneNote 2010 : Doing Research with Linked Notes (part 1) - Beginning a Linked Notes Session
- Microsoft OneNote 2010 : Doing Research with Side Notes (part 3) - Moving Side Notes to Your Existing Notes
 
 
Windows XP
Windows Vista
Windows 7
Windows Azure
Windows Server
Windows Phone
2015 Camaro