Dallas techfest 2011 registration

We’ve just opened up registration for Dallas TechFest 2011, at http://DallasTechFest.com and you can find the outstanding list of speakers there as well. If you use discount code TwoDays you will get $50 off the price of a ticket.

For the first time this year we are a two day conference, and also for the first time we are offering Pre-Conference seminars.  The Pre-Conference seminars are being offered by our incredible Platinum Sponsor Improving Enterprises, who is offering an Agile Scrum Immersion and Team Dynamics Workshop.  Check them out!

Blog Post by: Tim

Understand Azure AppFabric Service Bus Pricing

Understand Azure AppFabric Service Bus Pricing

Note: This is not a definitive guide, this is just my understanding based on the research I’ve done and based on response I received from the Microsoft Azure support centre for some of my queries.

If you are planning to use AppFabric Service Bus, there are 3 different charges you need to be aware of

  • AppFabric Service Bus connections (of individual and pack types)
  • AppFabric Access Control transactions
  • Data transfer (in gigabytes)

In this article we’ll try to address in detail about the AppFabric Service Bus charges, some of the terminologies used and slightly touch on Access Control and Data transfer charges.

Pricing:

Let’s start with the advertised pricing for AppFabric Service Bus

  • $3.99 per connection on a "pay-as-you-go" basis
  • Pack of 5 connections $9.95
  • Pack of 25 connections $49.75
  • Pack of 100 connections $199.00
  • Pack of 500 connections $995.00

You can see Service bus pricing comes in 2 flavours, you can either opt in for a "pay as you go" model or you can buy a set of pre-bundled packs (5, 25, 100, and 500). Like any retail pricing model, you get almost 50% discounts for agreeing to prepay a bulk pack. For all the packs the pricing works out $1.99 per connection. The discount doesn’t increase in line with bigger pack.

What is a connection?

This is the most complicated question; you need to find the answer for when it comes to Service Bus.

AppFabric Service Bus runs directly on Azure compute instances; hence it depends on the following resources from the Azure Cloud

  • Compute instance resources,
  • Storage resources, and
  • Networking resources.

The pricing model for the AppFabric Service Bus is like compute and storage pricing. That is, you pay for resources as long as you are using them. "Using them" is the keyword when it comes to cloud pricing model, you pay per usage. For compute/storage nodes, it easy to calculate the usage, as soon as you fire an Azure instance your compute meter will start, as soon as you stored some data in the storage your storage meter will start. But it’s tricky to calculate the usage for Service Bus, since the connection is transient.

At end of the day, the connectivity usage should somehow relate to the usage of underlying infrastructure, i.e compute and storage in the cloud. To keep the pricing model simple, Microsoft consolidated all the underlying resource usage (compute, storage, and network) and come with term called "Connection" to represent a billable unit.

So for service bus, the usage (billing) is calculated on simultaneous concurrent active connection you hold with service bus.

When will a connection be established and charged?

A typical service bus implementation is shown below. To setup an infrastructure like this will go through series of steps like registering your service with service bus, client opening a client channel to connect to the service and accessing the endpoint (ex: http://mysb.servicebus.windows.net/service/adminsvc )

So doing any of the following tasks will result in a connection.

  • Opens a service on a AppFabric Service Bus endpoint
  • Opens a client channel that connects to such a service
  • Makes an HTTP request to any service opened on an AppFabric Service Bus endpoint

There are other scenarios as well like Message buffer, queues and topics released as part of CTP2 which are not considered for this article.

Concurrent (Simultaneous) Connections:

As I mentioned earlier, for AppFabric service bus you only pay for the maximum number of connections that were in simultaneous use on any given day during the billing period. So, it’s important to understand what that simultaneous connection means.

Let’s take this scenario, you decided to try out the Echo sample that comes with the SDK. You setup everything according to the documentation and you got 2 console windows open. One showing the server side messages, and in another console window you are going to type some message and press enter, which is going to get transmitted to your server console, get displayed. The server then responds back the same message which will eventually get displayed on the client console.

In this scenario you open 2 concurrent connections, one from client to AFSB and another from AFSB to server. The important thing to note here is the whole round trip would have taken only few milliseconds, once the message is echoed back on the client, you are not holding any connections to AFSB. Let’s assume you are on 5 connection pack package, and in this scenario you are well within you limit. You can keep executing the sample again and again and again, still you will consume only 2 connections, since your operation is sequential.

Next, let assume you have asked 4 of your friends to open the EchoClient application in their desktops and try out the demo.

When all of you are trying the demo, for majority of the times the connection will be in and out quickly (since our response times are in milliseconds) without overlapping and you may be well within the original 2 connections scenario. But there is lot of possibility you might end up in more than 2 concurrent connections as 4 people are trying to access the end points. In the above picture, you can see there are 2 active concurrent connections on both directions, which will result in 4 connections.

Connection charges are per month, but calculated daily on prorate basis.

Identifying the daily connection charge:

The maximum number of open connections is used to calculate your daily charges. For the purposes of billing, a day is defined as the period from midnight to midnight, Coordinated Universal Time (UTC).Each day is divided into 5-minute intervals and for each interval the time-weighted average number of open connections is calculated. The daily maximum of these 5-minute averages is then used to calculate your daily connection charge.

All the above mentioned connection charges (ex: $3.99 for pay-as-you-go and $9.99 for 5 pack are per connection/month charges). It’s interesting how it’s been calculated.

Your time weighted average connections for 5 mins will look something like this. Every second there is "n" number of simultaneous connections.

And TWA (time weighted average) is calculated as

TWA = ((C1*T1)+…+ (Cn*Tn))/(T1+?+Tn)

Or

TWA = ((C1*T1)+….+ (Cn*Tn))/45150

45150 is derived by adding 1+2+3+…300

C ? Connection, T ? Time in seconds during 5 min interval for which connection is active. "n" will be 300 (5 minutes * 60 seconds)

If you want to take a practical example, let’s assume your simultaneous connection range from 0 to 25 during any 5 minute window, using this little program will give you something like 575976 based on the random numbers generated.

int total = 0;

for (int t = 1; t <= 300; t++)

{

Random r = new Random();

int connection = r.Next(1, 25);

total = total + (connection * t);

}

So, your TWA for the above case will be 575976/45150 = 12.75 active connections. This 5 minute interval simultaneous connection will be recorded from midnight to midnight (UTC).

Next step is to calculate the daily prorate charge, which is based on the formula

Cost = (max (TWA1, TWA2,…., TWAn)* Connection Charge)/no.of days in month

Let’s assume 12.75 is the maximum active connection you received in the day, for the month of June (30 days) and you are on a pay-as-you go tariff. Then your bill will be

(12.75 * 3.99)/30 = $1.69 per day

As you can see in this case you it’s cheaper to go on pay-as-you go price rather than paying $1.99/day opting for a 25 connection pack. See Which model is better for me? For another example.

What does "0 Connections" mean?

When you setup a new namespace for Service Bus, you will be provided with the option as shown below to select the "Connection Pack Size"

The list provides an option called "0 Connection". What it means is, you are going for pay-as-you-go model, which is charged at $3.99/month. Please bear in mind, you need to wait for 7 days in order to make the switch from one pack to another (or other words, pay-as-you-go to pack model).

Service Bus Quotas:

There are capped quotas for the number of namespaces you can create and maximum connection allowed per namespace. The details are taken from http://msdn.microsoft.com/en-us/library/ee732538.aspx. These are very generic numbers, should be sufficient to support even big enterprise requirements safely.

1. The maximum number of service namespaces allowed per Windows Azure AppFabric account is 50.

2. The maximum number of connections allowed per service namespace is 2000.

What will happen if you exceed your pack limit?

I’ve raised support ticket to understand this question; so far this is my understanding.

There is NO explicit cap on the connections. If you got a pack of 5, and your usage crosses the limit, you will automatically be billed for rest of the connection on pay-as-you go rate ($3.99 per connection). This is something customers need to be aware of and watch out for the bills at least for the few initial days.

Which model is better for me?

Whether to go with the pay-as-you go model or connection pack model will depend on your scenario. A classic example: Your business may not have any traffic during certain days (example: weekends). In this case, if you are on a pay-as-you got model you don’t incur any charges for those days. On the other hand if you are on a connection pack, you will be charged on daily prorate rate.

Here is a detailed example:

Let’s assume you expect a daily peak of 15 connections. Without a pack you would get charged at the individual rate: 15 * $3.99 / 30 = $1.995 per day (in a 30 day month). If you use less on a given day (i.e. weekends) you would get charged proportionally less on those days.

Now, if you choose a 25 connection pack, your charge would be 25 * $1.99 / 30 = $1.66 per day (substantially less), but you would get charged this amount even on days where you use less connections or no connections at all. On the upside, if you used more than 15 (but less than 25) connections on some days, your charge would still be $1.66

Data Transfer Charges

Remember the charge we have discussed so far are related to connections. Once the connection is made you are going to transfer some data from A to B (Example in EchoSample: a piece of text you transmit from client to server is data), which will incur the Azure Data transfer charges. The below picture shows at high level where your $ meter will start.

Any data transfer throughout a given Windows Azure platform sub-region is provided at no charge. In the above diagram if all of your communication happens within Azure Data Center #1, then there is no charge.

Any data transfer outside a sub-region is subject to ingress (inbound) or egress (outbound) charges at the Windows Azure platform rates.

In the above diagram, if you use the AppFabric Service Bus to communicate between two Windows Azure applications in the same sub-region, you will not incur data transfer charges. However, if you use the AppFabric Service Bus to communicate between regions or sub-regions; for example, to send data from one Windows Azure application in the North Central sub-region (#1) to another Windows Azure application in the South Central sub-region(#2), you will incur egress charges at North Central rates and ingress charges at South Central rates.

If you use the AppFabric Service Bus to send and not receive data from a Windows Azure application to an application in your own datacenter, you will incur egress charges for your Windows Azure platform usage.

Windows Azure Access Control Charges

We are not going to see in detail about the Access control charges, but this is something you need to be aware of. Normally Azure Service bus endpoints will be protected by access control services. ACS acts like a gate keeper for the end points exposed by the Azure Service bus. So every time you try to communicate with an endpoint, it needs to go through ACS, which will incur separate charges.

Summary

I’ll reiterate here, the above article is based on my own understanding of how AppFabric Service Bus pricing model works. There are lot of confusions around, and still some areas are not clear. Examples:

  • Will having multiple end points with different bindings (netTcpRelayBinding, basicHttpRelayBinding) incur additional charges?
  • Will the connection on the server side AFSB to Server kept alive all the time in active state?

Etc. I’m happy to constantly update this article if people got better feedback, or if I’ve made any mistakes.

Nandri
Saravana Kumar

AppFabric Service Bus : net:pipe needs to be specified error.

I’m in the process of hosting my WCF services in IIS/Windows Server AppFabric, whenever I saved the web.config file I can see the following exception in the EventViewer.

WebHost failed to process a request.
Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/61308764
Exception: System.ServiceModel.ServiceActivationException: The service ‘/UI.Web.V2/ServiceManagement.svc’ cannot be activated due to an exception during compilation.  The exception message is: A base address with the uri scheme ‘net.pipe’ needs to be specified if using service management endpoint ‘ServiceManagementNetPipeEndpoint’. Verify a base address exists on the site and the protocol is enabled on the application.. —> System.Configuration.ConfigurationErrorsException: A base address with the uri scheme ‘net.pipe’ needs to be specified if using service management endpoint ‘ServiceManagementNetPipeEndpoint’. Verify a base address exists on the site and the protocol is enabled on the application.

This is because, Windows Server AppFabric automatically adds a magic management service called ServiceManagement.svc to all the configured applications. The Service Management service enhances Windows Server AppFabric management capabilities by providing clients the ability to start services remotely. More details here: http://msdn.microsoft.com/en-us/library/ff383422.aspx

The Service Management Service supports only the net.pipe protocol for bindings. The address of a Service Management Service added to an application conforms to the following address pattern: {scheme}://hostname:port/<application>/ServiceManagement.svc. For example: net.pipe://localhost/VirtualApplicationB/ServiceManagement.svc.

Solution:

Long story short, the quick fix for this issue is to enable net:pipe as shown below in the Advanced Settings of Virtual Directory.

Nandri!

Saravana Kumar

Introduction to AppFabric Applications – AppFabric June CTP Webcast

I’ve just published a webcast on creating and deploying AppFabric applications using the Azure AppFabric June CTP. As the bits are very new I have not had much time to get into the details of how it all works yet, but I will be taking a deeper look over the summer and webcasting on what I am finding out.
The “Introduction to AppFabric Applications” webcast is here.

ESB Toolkit installation: OLE DB error

When you try to install the ESB toolkit BAM definition file Microsoft.BizTalk.ESB.BAM.Exceptions.xml you might encounter this error

OLE DB error: OLE DB or ODBC error: Cannot open database "BAMStarSchema" requested by the login. The login failed.; 42000.
Errors in the high-level relational engine. A connection could not be made to the data source with the DataSourceID of ‘bam_ExcByApplication’, Name of ‘bam_ExcB
yApplication’.
Errors in the OLAP storage engine: An error occurred while the dimension, with the ID of ‘ExcByApplication_ExcFaultDescription’, Name of ‘ExcByApplication_ExcFa
ultDescription’ was being processed.
Errors in the OLAP storage engine: An error occurred while the ‘FaultDescription’ attribute of the ‘ExcByApplication_ExcFaultDescription’ dimension from the ‘BA
MAnalysis’ database was being processed.
Server: The operation has been cancelled.

The main reason for the exception is, the SQL Server service account must have read access to BAMStarSchema database. In my case it was configured to run under Network Service account. To fix this issue, open SQL server management studio, expand BAMStarSchema, Security, User. Right-click and select New User and configure it as shown below

Nandri!

Saravana Kumar

BTUG: BizTalk integration with SalesForce

At the upcoming BizTalk User Group (BTUG) meeting in Almere on June, 29th I will do a talk on integration between SalesForce and BizTalk. In past I have been involved in an integration project with SalesForce using BizTalk 2009 and have blogged about it:

Also recently in Dutch .NET magazine an article has been published called “Force.com werkt met BizTalk Server 2010”. Besides this talk Saravana Kumar will talk about and demo BizTalk 360. Jeroen Boiten will kick off with a presentation on integration project at GasUnie.

You will have a chance to hear and meet (Dutch, UK) BizTalk community members and can register here.

Integration @ Sommarkollo 2011

So, once again it’s that time of the year. Summer. And with it Microsoft Sweden arranges a series of presentations across the country that goes under what word-by-word translates to summer school – Sommarkollo. I’m happy to be presenting about integration in the broad context of the Microsoft Application Infrastructure aka Middleware platform, aka BizTalk Server, Windows Server AppFabric and Windows Azure AppFabric. A lot of the content will be focused around Azure AppFabric, simply because that’s where most things are happening at the moment (1) (2).

Find the signup to my afternoon slot in Gothenburg on Tuesday the 28th of June here, and the same content in a morning slot in Stockholm on Thursday the 30th of June here.

Right now I’m at ~60 slides and 12 demos but I’m hoping to get access to the newly released Application Manager and Composition soon so I have time to incorporate some of that as well. We’ll see.

Also take a look at the pdf that nicely summarizes all available sessions.

See you there.

/Johan

Blog Post by: Johan Hedberg

BizTalk360 – License relaxation for evaluation/trial

One of the common requests we received recently from customers was to relax the licensing rules for evaluation purposes. The original design didn’t allow installing Standard/Enterprise edition on a Microsoft BizTalk Server Developer edition machine. This imposed a serious problem, the customer can only trial the product on a proper test environment.

With the release of 1.0.185 version, we modified the rules slightly, so now its possible to install Enterprise/Standard edition on a Microsoft BizTalk Server developer edition machine.

Here is how the overall licensing lifecycle works:

1. User register and login to http://www.biztalk360.com download page

2. User will be presented with choice to download any of the 3 available BizTalk 360 editions (Developer, Standard or Enterprise).

3. If the user want to just use the FREE developer edition he/she can download the developer edition msi and install it on the BTS developer machine. As long as it meets the FREE licensing criteria, BizTalk 360 should work out of the box without any further action.

4. If the user wants to evaluate one of the commercial editions, he/she can install either standard/enterprise edition on the BTS developer machine. When BizTalk 360 is launched for the first time, you’ll see the error message as shown below

5. A 30 days trial key is automatically emailed to the user, when they register in http://www.biztalk360.com. The user need to enter the key using the "Settings" link in the right hand corner (Settings>License Management >edit). Once saved you need to refresh the whole browser (Ctrl+F5) and can see the Trial(Key) status in the status bar.

6. BizTalk 360 should start working now until the expiry period. Once it elapsed the expiry date, the application will stop working and display licensing related error message.

7. The user then can either purchase the required license or uninstall the commercial version and install the FREE developer version.

Note: You can check the edition of BizTalk 360 you have installed by going to Settings>About

Social:
twitter: @biztalk360
facebook: http://facebook.com/biztalk360
support: http://getsatisfaction.com/biztalk360

Nandri!

Saravana