Service Bus Component of Azure on Premise data gateway - Pricing - azure

according to MS there is a Azure Service bus component to on-prem data gateway , however when you install the Azure component no service bus resource created. we need to understand the impact on pricing i.e. is the price of service bus hidden within Azure on prem data gateway ? there is no pricing guidelines for Azure On premise gateway

The On-premises data gateway relies on Azure Service Bus for cloud connectivity and correspondingly establishes outbound connections to its associated Azure region, which means an Azure Service Bus implicitly created when a data gateway is installed.
Created Azure Service Bus will not be shown explicitly. There is no extra cost for it. All you have to pay is for the on-prem data gateway which includes all infrastructure costs(Azure Service Bus).

There is not a licensing cost for the data gateway and data flowing into Azure is free. You pay egress costs which can be calculated using https://azure.microsoft.com/en-us/pricing/details/bandwidth/

Related

Is there any limit on number of Listeners(subscription client) of a Subscription created under a topic in Azure Service Bus(pub-sub)?

I am looking on using Azure Service Bus topic to publish some messages to my service. I have creted a subscription for my service and have got connection string.
My service(WebApi) is running on large number of instances (1000s). I am thinking of starting the listeners of Azure Service Bus at app start of my service using connection string in all the instances. Are there any issues in running large number of listeners(my service instances) under one Azure Service Bus subscription. I am fine with only one instance receiving the message(This is infact what I prefer).
You can checkout all limits wrt Azure Service Bus from here:
https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quotas

Azure Application High Availability

I'm working in IoT enterprise application, where we have created all resources in South Central US. Recently (9/4/18) I noticed South Central US was down for long business hours due to any reason.
Now I'm trying to find best possible solution for high availability when a complete region down.
We are using following Azure resources.
EventHub (telematic data ingestion)
Azure Functions (EventHub, CosmosDB, ServicesBus Trigger)
Web App & WebJob (Schedule and continuous)
ServiceBus (Queue & Topic)
Application Insight (Application logs)
Storage Account (EventHub checkpointing and other data)
Cosmos DB
VSTS (CI/CD)
For Cosmos DB I know the solution, what should I do for other resources?
I don't see any way to create EventHub or ServiceBus multi-region cluster.
There's no cluster arrangement for ServiceBus & EventHub but can set up a fail-over flow for both.
Please refer to these articles on MS Docs:
Azure Event Hubs Geo-disaster recovery
Best practices for insulating applications against Service Bus outages and disasters
Let me know if that helps!
Azure provides Availability Zones and Geo Disaster Recovery support for both Service Bus and Event Hubs.
Here is the link for Availability Zones for Service Bus and Event Hubs
For Geo Disaster Recovery, look into Service Bus DR, Event Hubs DR

How to check if a Azure Service Bus has Premium Pricing

In one of my Azure Web Apps I create an Azure Topic when it doesn't exist yet during the warmup(start) of our Azure Web App.
On topic creation time I want to know whether the service bus has a premium pricing tier, when yes I want to disable express, when no (standard pricing tier) I want to enable express, to prevent exceptions.
Is there a defensive way to check if a premium pricing tier is available on the service bus (for example: using the service bus connection string) ?
When there is no defensive way, I can always catch the web exception that know raises, but I want to prevent the exception if I can.
Edit: After consulting our lead-dev we decided to skip the EnableExpress setting completely in our DTAP. So I don't need to implement the SKU check at all. Be aware to not set the EnableExpress property at all otherwise you get the webexception in Premium SKU.
Is there a defensive way to check if a premium pricing tier is
available on the service bus (for example: using the service bus
connection string)?
Unfortunately there's none as of today. Service Bus Client SDK does not expose this information. This feature has been asked from the Service Bus team and there's an open issue on Github for that: https://github.com/Azure/azure-service-bus/issues/42.
The differences between Premium and Standard tiers are highlighted here: https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-premium-messaging. Kind of an anti-pattern but one thing you could do is perform and operation that is only available in Premium tier (say sending a message greater than 256KB in size) and catch the exception (or lack of) to determine if the Service Bus tier is Premium or not.
If we want to check the Azure Service Bus Pricing tier,we could use the following code with Microsoft.Azure.Management.Fluent SDK.
var credentials = SdkContext.AzureCredentialsFactory.FromFile(#"c:\tom\azureCredential.txt");
var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.WithDefaultSubscription();
var serviceBus = azure.ServiceBusNamespaces.GetByResourceGroup("resourcegroup", "servicebusnamespace");
var priceTier = serviceBus.Sku.Tier;
Before code we need to create an azure active directory application and assign the correspondent role. We could create the azure credential file following the document. The following is the credential file format.
subscription=########-####-####-####-############
client=########-####-####-####-############
tenant=########-####-####-####-############
key=XXXXXXXXXXXXXXXX
managementURI=https\://management.core.windows.net/
baseURL=https\://management.azure.com/
authURL=https\://login.windows.net/
graphURL=https\://graph.windows.net/

Azure Service Bus to Azure DB - Two way message writing

Do Azure support posting data from Azure Service Bus to Azure DB?
I want to use this as a work around as I am not able to connect to Azure Service Bus because of AMPQ protocol.
On the other hand connecting to Azure DB is easy for the platform I am using.
First: You don't need to connect to the Service Bus with AMQP protocol. Service Bus support REST. It is the EventHub that supports the AMQP protocol.
How do you get a Service Bus message into a Azure SQL Database
This can be done in several ways. You can have a WebJob or a Worker Role that listen to the queue. You can also create a App Service Logic App that reads from the queue and saves the data into the database.
/dag
Apparently you can only add on-premise (locally running) data gateway for connecting a Service Bus Queue to SQL Server DB even your services run on the cloud.

Table storage - Is there a cost/performance differential between reading from Azure Website vs Azure Cloud Service

I already have a cloud storage account. I am looking at hosting either an Azure Website or a cloud service, in node.js, but I am confused on a number of points listed below:
If my storage account is in 'Europe North' and if I host a new Node azure website/cloud service also in 'Europe North' then I'm wondering firstly if there's a cost differential between the two possible configurations listed?
*Azure Website (Node.js) <---> Table Storage.
*Azure Cloud Service (Web/Worker role) <-----> Table Storage.
Also is there any performance gain going with a Cloud Service over the Azure Website?
Whether you have a web site or cloud service: when locating storage are in the same data center, you won't incur bandwidth costs. You'll still pay for egress (free tier gives you 165MB free egress daily; shared tier gives you 5GB free egress monthly, and you pay standard rates after that).
Performance: You have different bandwidth availability on the NIC. With a cloud service, you have 100Mbps per core (or 5Mbps with XS). With web sites in free or shared tier, you're sharing the NIC. With reserved tier, you should have the same bandwidth as cloud service, since you have reserved instances.

Resources