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

The Nickel Tour of Azure : How are Azure costs calculated?

6/20/2012 4:08:52 PM

Windows Azure platform: AppFabric

AppFabric is another part of Azure with "fabric" in its name. AppFabric was originally known as BizTalk Services, and then later as .NET Services. Unlike the Azure Fabric or the Azure Fabric Agent, AppFabric is not a low-level controller/manager of the virtual machines. Instead, AppFabric provides the Service Bus, Access Control services, and connection components.

The Service Bus is the functionality that serves as a bridge between on-premises applications and Windows Azure. The Service Bus also facilitates bidirectional communication between two non-Azure applications.

Bridging local and Azure applications is useful in certain cases such as if there is information in our local warehouse management system (WMS) we want to make visible to our clients via an Azure-based portal we develop. If our WMS has an API we'd like to manifest directly to our partners, we can also use the Service Bus to abstract the WMS API. In this case, we'd register our WMS's endpoint with the Service Bus, which would then create a public set of its own endpoints. We'd provide the Azure endpoint URIs to our partners to be consumed by their applications. When a call is made against the public endpoints, Azure queues that client request and passes it to our WMS. Our WMS responds to Azure's request, and Azure sends the data on to our partner. The Azure Service Bus handles the discovery and registration of the endpoints, and handles the NAT as well. In terms of securing our WMS, no one needs to know our private IP address, and we limit our firewall to a smaller list of IPs to allow through.

In the Service Bus examples, we'd obviously need a way to limit access to the application or endpoints. This is one of many places where the Access Control functionality of AppFabric is important. Access Control issues security tokens that can be consumed by Azure and non-Azure applications via REST (SOAP has been announced but was not in place at the time of writing). Access Control is a claims-based identity service, similar to OpenID or Microsoft's LiveID.

AppFabric also incorporates projects codenamed Dublin and Velocity. Both Dublin and Velocity are standalone projects that can be used with both Azure and more traditional applications. At the time of writing, these projects were announced but not released, so more detailed information should be gathered directly from Microsoft. Project Dublin is an effort to enhance the management of .NET 4 WCF and WF services as well as IIS management and monitoring. Dublin utilizes PowerShell commandlets and IIS integration.

It is useful to note that AppFabric can be used separately from the other parts of Azure, and its components can be used individually from one another.

SQL Azure

Originally known as SQL Data Services, SQL Azure for many people is the most exciting item on the Microsoft Azure menu.

SQL Azure is an almost feature complete implementation of SQL Server 2008 Geographic data types are now supported. Unlike Table Storage, SQL Azure is completely relational, with a defined schema, supports T-SQL, and we can connect via ADO.NET or ODBC.

We can manage our SQL Azure databases through the SQL Azure Portal, directly via sqlcmd, or through SQL Server Management Studio 2008 R2. At the time of writing, SQL Server 2008 R2 is the most recent release of SQL Server, and is the only SQL Server Management Studio (SSMS) version that can completely connect to SQL Azure. Microsoft provides a SQL Azure Database Manager (formerly known as Project Houston), an online tool that is used to manage SQL Azure databases. There are also a couple of third-party tools, such as SQL Azure Manager and the Omega Web Client, for managing SQL Azure. Undoubtedly, more tools will arise as more people begin to work with SQL Azure. The SQL Azure Manager (though in Alpha testing at the time of writing) can be found at http://hanssens.org/post/SQL-Azure-Manager.aspx. The Omega Web Client (along with other great third-party tools for Azure) can be found at http://www.cerebrata.com.

Just as with SQL Server, we can have multiple databases per SQL Azure instance. Database sizes are limited, so if it's possible our application may exceed the maximum size, it's a good idea to either build in an archiving strategy and tools, or plan for a multiple SQL Azure account and multiple database solution at the beginning. Behind the scenes, and just like the storage options in Windows Azure, SQL Azure data is replicated three times to ensure availability and backup.

SQL Azure Data Sync is scheduled for final release soon. Formerly known as Project Huron, SQL Azure Data Sync enables synchronization of data between SQL Azure instances, or SQL Azure and on premises SQL Server databases.

Codename Dallas

Project Dallas is Microsoft's entry into the new data-as-a-service (DaaS) market. The goal of Dallas is to provide a single authoritative source and a single billing method for public data. Think of Dallas as a "data marketplace", where we can buy subscriptions to data useful for our applications, and where data providers can sell their data.

The data in Dallas are accessible via a REST API, and can be consumed by applications on any platform. Support will be for SQL Server and SQL Azure to directly consume Dallas data, but this has not been delivered at the time of writing.

More information on Codename Dallas can be found at http://www.microsoft.com/windowsazure/dallas/.

Development Fabric

The Development Fabric is yet another part of Azure with "fabric" in its name. The Development Fabric is a specialized Windows Azure environment used for local development. It is akin to the Azure Fabric, but is hosted on a single local machine. We install the Development Fabric with the Windows Azure SDK and other tools.

Considerations for the ASP.NET developer

It's easy to think developing a web role is just the same as developing a traditional website, but that's not the case. The web role is not just a website, but a complete ASP.NET web application. If we have multiple instances of our web role application running, the Azure load balancer doesn't guarantee a user's connections will all be made on the same VM. One consequence of this is that our application should either be stateless, or use the database (or table/blob) or cookies to maintain session state. In-process session state isn't an option.

Imagine a local web farm with a load balancer that does not maintain session state. The ideal solution in this case would be to use some type of session storage to maintain state across servers. This is also the case with Windows Azure web role instances. We cannot maintain state in-process if we bounce between machines; however, the state can be shared using our table/blob storage or our SQL Azure service. While we can attach our debugger to our local instance of the Development Fabric, we cannot debug applications remotely that have been deployed in Windows

Azure. We will need to maintain our logging and use it to debug issues, if present in the cloud. Because we are not guaranteed to browse our web application on the same server after every call, there is no persistence with local storage. Microsoft answers this issue quickly with table and blob storage. All data and files that need to be accessible need to be saved in a storage service or a SQL Azure database (the highly scalable option is using storage services).

How are Azure costs calculated?

Microsoft Azure has two methods for calculating the monthly service charges consumption pricing or commitment (subscription) pricing. Because Windows Azure, SQL Azure, and AppFabric are three independent services, each is priced separately and with its own rates. The charges may seem like nickel-and-diming as they are broken out by the different features of each service, but having the charges broken out allows us to utilize and pay for only what we use.

In addition to production-scale pricing plans, Microsoft also offers limited-use plans suitable for development and conference room pilot efforts. For the most current rates and offers, visit http://www.microsoft.com/windowsazure/pricing/. We're not going to list the base rates here, as they are likely to change over time. Instead, we'll look at how the charges are applied to each service in the next section.

Cloud services such as Amazon EC2 bill in a manner close to what Microsoft does, yet offer a little more flexibility with types of VMs (they offer both UNIX/Linux pricing and Windows pricing, which varies based on the type of hosting needed). They also offer commitment plans, but theirs is called "Reserve Instances". This is where a flat fee is paid up front, based on a time commitment, but a reduced usage fee is charged on a monthly basis.

Calculating Windows Azure pricing

Windows Azure charges are calculated based on utilization of four resources compute time, storage, storage transactions, and data transfers.

Compute time is billed as service hours or the amount of time an application is deployed. When calculating compute time charges, keep in mind each instance of an application runs in its own VM. If we have two instances of an application running simultaneously for an hour, that is calculated as two service hours of compute time.

Storage is billed as the daily average gigabytes consumed in the storage service (tables and blobs). To minimize costs, we want to minimize the size of resources we store for a long duration. If we have a 30 GB blob in storage for a month, our average daily consumption would be 30 GB. If we were to upload a 30 GB blob for a single day, our average consumption would be 1 GB.

Storage transactions are the CRUD operations we perform against tables and blobs. Every create, read, update, and delete operation we perform against our data is a transaction.

Data transfers are billed as the total number of gigabytes uploaded or downloaded via the Internet during a month. Any communication within sub-region (same data center) is not charged. This is helpful for HTTP calls between different services, and also emphasizes the correct usage of Affinity Groups to keep dependent services together.

The other transactions are application requests, and pass through the Queue Storage. At the time of writing, there was no specific charge for application requests.

Calculating SQL Azure pricing

SQL Azure is sold in two editions Web and Business plus data transfers. SQL Azure databases are billed monthly but calculated per diem, and we are only charged for the days we have the database.

Both editions are self managed and support Visual Studio, SQL Server Management Studio, and SQL Server Integration Services. The Web Edition has a capacity of up to 5 GB, while the Business Edition has a capacity of up to 50 GB and supports advanced features such as auto-partition and upcoming plans for common language runtime (CLR) integration.

As with Windows Azure, data transfers are calculated as the total number of gigabytes uploaded or downloaded via the Internet during a billing month.

Calculating AppFabric pricing

AppFabric charges are billed by Access Control transactions, Service Bus connections, and data transfer.

Each claim of identity made to the Access Control service is a transaction. Charges are calculated based on the actual number of transactions during a billing month.

Service Bus connections are sold as individual pay-as-you-go connections, or can be purchased in flat-rate packs. Individual connections are charged based on the maximum number of connections utilized during a day. Connection packs are calculated daily, based on the pro-rata number of connections. If we buy a 30-pack of connections at the beginning of a month and then buy another 30-pack one week in, we are charged for 7 connection days for the first week, and then 14 connection days thereafter.

As with Windows Azure, data transfers are calculated as the total number of gigabytes uploaded or downloaded via the Internet during a billing month.


Other -----------------
- The Nickel Tour of Azure : Explaining Azure to the managers
- 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)
 
 
Most view of day
- Zero Touch Installations : Creating and Capturing a Reference Image (part 1)
- Microsoft Systems Management Server 2003 : Analysis and Troubleshooting Tools - Working with Status Messages (part 2) - Setting Status Message Viewer Options
- Mix and Match with Old Windows and Macs : Internetworking with Windows 95, 98, and Me, Internetworking with UNIX and Linux
- Microsoft Project 2010 : Fine-Tuning Task Details (part 7) - Entering Fixed Costs
- Windows Phone 8 : Configuring Basic Device Settings - Backing Up Your Phone (part 1) = Backing Up App Lists and Settings
- Planning Deployment : Installing BDD 2007
- Windows Server 2008 R2 file and print services : Administering Distributed File System Services (part 1) - Configuring and administering DFS Namespaces
- Windows Live Services That Make Windows 7 Better (part 4) - Windows Live SkyDrive, Windows Live FrameIt, Windows Live Groups
- Windows Server 2012 Requirements and Installation : Installing Server 2012 (part 2) - Server with a GUI Install
- Windows Server 2012 : Installing and Managing Hyper-V in Full or Server Core Mode - Verifying Hyper-V requirements
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