I'm currently working out the cost-analysis for my upcoming Azure project. I am tempted to use a Azure Cloud Role, because it has a certain amount of storage included in the offer. However, I have the feeling that it is too good to be true.
Therefore, I was wondering. Do you have to pay transaction-costs/ storage costs on this "included" storage? I can't find any information about this on the Azure website, and I want to be as accurate as possible (even if the cost of transactions is almost nothing).
EDIT:
To clarify, I specifically want to know about the transaction costs on the storage. Do you have to pay a small cost per transaction on the storage (like with Blob/Table storage), or is this included in the offer as well?
EDIT 2:
I am talking about the storage included with the Cloud Services (web/worker) and not a separate Table/blob storage.
Can you clarify which offer you're referring to?
With Cloud Services (web/worker roles), each VM instance has some local storage associated with it, which is free of charge and, because it's a local disk, there are no transactions or related fees associated with this storage. As Rik pointed out in his answer, that data is not durable: it's on a single disk and will be gone forever if, say, the disk crashes.
If you're storing data in Blobs, Tables, or Queues (Windows Azure Storage), then you pay per GB ($0.095 cents per GB per month for geo-redundant storage, or $0.07 per GB per month for locally-redundant storage), and a penny per 100,000 transactions. And as long as your storage account is in the same data center as your Cloud Service, there's no data egress fees.
Now we come back to the question of which offer you're referring to. The free 90-day trial, for instance, comes with 70GB of Windows Azure Storage, and 50M transactions monthly included. MSDN subscriptions come with included storage and transactions as well. If you're just working with a pay-as-you-go subscription, you'll pay for storage plus transactions.
The storage is included, but not guaranteed to be persistent. Your role could be shut down and started on a different physical location, which has no impact on the availability of your role, but you'll lose your whatever you have in storage, I.E. the included storage is very much temporary.
As for transaction costs, you only pay for outgoing data, not incoming data or data within Azure (one role to another).
You pay per GB, and $0,01 per 100.000 transactions
Related
Do you get billed in Azure for each time you publish an Azure Functions from VS?
The short answer is Yes, you get charged for publishing an Azure Function from Visual Studio. But "each time?" well, not really.
So, let's get to understand how that works. Azure functions although they offer you 1,000,000 executions per month (considering the execution time and memory), your code has to live somewhere which is the Function Storage Account.
Storage Accounts pricing could be broken down into two main costs:
Storage:
You pay for storage per month (pay-as-you-go) unless you are on a Premium storage plan. The first 50 TB of data in a Hot access tier of blob data is ~$0.0184 to $0.0424 per GB depends on where your data is hosted and its redundancy.
Now in your case that cost will incure once per 50 TB per month
Transfer:
When you deploy your data via Visual Studio you're effectively making API calls to Write your data which is charged (also depends on your data host location and redundancy) per 10,000 operations that includes every time you or your function does PutBlob, PutBlock, PutBlockList, AppendBlock, SnapshotBlob, CopyBlob, and SetBlobTier on that Storage Account. The operations cost varies from $0.05 to $0.091 for every 10,000 operations.
Others:
Other costs may incure using features such as Blob Index, Blob Changes, and encryption.
Conclusion
Publishing your Function from Visual Studio contributes to the overall cost of the Functions's Storage Accout. However, the cost is very small (sub $1) even if you published your function thousands of times every month.
For more information about Azure Blob Storage pricing visit https://azure.microsoft.com/en-us/pricing/details/storage/blobs/#pricing
"Customers can replicate on-premises workloads to Azure with Azure Site Recovery for 31 days at no charge, effectively making migration to Azure free."
While the above statement from a Microsoft blog indicates ASR is free for a one-time migration done within 31 days, I wonder why the word "effectively" was used. I'm looking for a confirmation from those who have used it for a one-time migration that you just have to pay for Storage, storage transactions and outbound data transfer and there is no per instance cost.
"Effectively" here means that there is no cost as long as you do not continue using the service, incur data egress fee charges, etc. Basically, it's free to use as long as you remember to fail over your VMs, disable ASR and delete your Recovery Services Vault after you have finished your replication. (It should go without saying that the bandwidth you'll require obviously isn't "free").
Where people get in to trouble is forgetting that ASR is still running and doing something like copying a VHD after it's been migrated. Once you failover the VMs to Azure for the final time, you start incurring normal IaaS charges.
One final note - if you have really busy workloads or a huge amount of VMs, it's possible to incur some small charges for Storage Transactions with ASR, especially if you're using premium storage. I've never seen this be more than a few dollars a month.
If you think there's a chance that you might use the service after 31 days, you can use this tool to estimate charges: http://oms-calculator-webapp.azurewebsites.net/home
I am thinking about creating a Azure app service that accesses files from a Azure storage container, manipulates the file, and then returns the result to the end user. Does Azure consider transferring data from the storage blob to the App Service as bandwidth usage? I am wondering if doing this will incur a charge two times for every operation - once for blob -> app service and another for app service -> end user.
Azure uses internal bandwidth across it's service fabric, so there is no charge for bandwidth utilization. However, any read/writes are transactions against storage, and there is a (nominal) cost. You can use the Azure calculators, based on your region, to determine and approximate costs for data storage + storage transaction. https://azure.microsoft.com/en-us/pricing/details/storage/
There is no bandwidth charge as long as the data remains within a single Azure region.
As Neil mentioned, bandwidth within a region is not metered (between any services). You'll still be metered for outbound bandwidth from Web App to end user. And if you download blobs from storage in a different region to your Web App, that bandwidth is metered.
Also, if you ever choose to download direct from blob to end-user, that outbound bandwidth is also metered.
Sources of data going into Azure can come from say Scheduled Job retrieving data from the internet at regular intervals, users sending data from their devices, into database tables or large files for storage into blob storage etc.
Is it true all inbound sources of data such as these are free? Just when data leaves Azure is it charged?
Short answer: yes.
Check the pricing calculator: http://www.windowsazure.com/en-us/pricing/calculator/?scenario=full
More detail here: http://www.windowsazure.com/en-us/pricing/details/data-transfers/
For bandwidth, it says this:
All inbound data sent to Windows Azure is free. Outbound data is
charged based on the total amount of data moving out of the Windows
Azure datacenters via the Internet in a given billing cycle. Data
transfers between Windows Azure services located within the same
datacenter are not subject to any charge. The first 5 GB of outbound
data transfers per billing month are also free.
I am quite sure I know the answer, just want to make sure I got this right.
From Azure In Action :
If I use the CloudBlobClient from a WCF service that sits in my WebRole, to access blobs (read/write/update) , so :
1) Does read/write/update charge as transaction or are they free ?
2) Does the speed of accessing those blobs is fast as mentioned in the note ?
If I use the CloudBlobClient from a WCF service that sits in my
WebRole, to access blobs (read/write/update) , so :
1) Does read/write/update charge as transaction or are they free ?
Transaction metering is independent of where the requests are made from. Storage read/write/update is done via REST API calls (or through an SDK call that wraps the REST API calls). Each successful REST API call will effectively count as a transaction. Specific details of what constitutes a transaction (as well as what's NOT counted as a transaction) may be found here.
By accessing blob storage from your Worker / Web role, you'll avoid Internet-based speed issues, and you won't pay for any data egress. (Note: Data ingress to the data center is free).
2) Does the speed of accessing those blobs is fast as mentioned in the note ?
Speed between your role instance and storage is governed by two things:
Network bandwidth. The DS and GS series have documented network bandwidth. The other sizes only advertise IOPS rates for attached disks.
Transaction rate. On a given storage account, there are very specific documented performance targets. This article breaks down the numbers in detail for a storage account itself, as well as targets for blobs, tables and queues.