Windows Azure Platform Developer Center > Microsoft Visual Studio 2010 Beta 2 Forums > Windows Azure > some questions about the pricing strategy of the windows azure
Ask a questionAsk a question
 

Answersome questions about the pricing strategy of the windows azure

  • Tuesday, November 03, 2009 9:32 AMernie_wang Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    I have read the strategy from the offical website:

    • Compute = $0.12 / hour
    • Storage = $0.15 / GB stored / month
    • Storage Transactions = $0.01 / 10K
    • Bandwidth = $0.10 in / $0.15 out / GB

    But I am not clear.

    about the first item: Compute = $0.12 / hour. After I deploy my web role and worker role, regardless of whether they are busy or not, I will also pay for the hours. Am I right? so I will pay 0.12 * 24 for each role.

    third item: Storage Transactions = $0.01 / 10K. I am very confused about this one. the 10k means traffic. So each read and write of the storage will cost me money. So if I have 1G data. then the web role handle the data and put the data to queue, then the worker get message from the queue, parse it,  then store the parsing result to the table storage. I should pay about 3000$. Is it right? So I think it is very expensive.

    fourth item: $0.10 in / $0.15 out / GB. what are the "in" and "out" based on? Based on the traffic to the microsoft data center? if it is, then I use a tool to access the storage, will the money be calucated twice. one is band width, the other is storage trcansactions.

    thank you

Answers

  • Tuesday, November 03, 2009 10:09 AMAnton Staykov Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
    Hello,
    Let me share what I know for sure:

    about the first item: Compute = $0.12 / hour. After I deploy my web role and worker role, regardless of whether they are busy or not, I will also pay for the hours. Am I right? so I will pay 0.12 * 24 for each role.
      -- YES, and not only for each Role, but for each instance of every role ! This is very important! And also regardles of whether your roles are suspended or not. Once they are initialized you are charged, eventhough you may have not started the roles yet.

    third item: Storage Transactions = $0.01 / 10K. I am very confused about this one. the 10k means traffic. So each read and write of the storage will cost me money. So if I have 1G data. then the web role handle the data and put the data to queue, then the worker get message from the queue, parse it,  then store the parsing result to the table storage. I should pay about 3000$. Is it right? So I think it is very expensive.
      -- NO, here 10k means 10 000 single transactions. This is number of requests sent to storage. Be it a request to add, update, delete, select item from storage. It is not traffic.

    fourth item: $0.10 in / $0.15 out / GB. what are the "in" and "out" based on? Based on the traffic to the microsoft data center? if it is, then I use a tool to access the storage, will the money be calucated twice. one is band width, the other is storage trcansactions.
     -- Good question. Here are my thoughts:
     - IN is data to datacenter, OUT is data out of it. If you use tool, or your website allows users to UPLOAD data -> this is IN for paying, if you render images or files, that are in storage - this is OUT. However good question here is the following scenario:
           1. Users upload their photo to my web site (this is definetelly IN traffic for Windows Azure)
           2. My web app saves the photo in BLOB storage - now what ? is it also counted?
           3. Visitors of my site browse user profiles and see photos of each user -> this is OUT traffic.
           4. But if I use HHTP handler to get photos out of blob first and then render to end-user -> is also an OUT traffic?
    • Marked As Answer byernie_wang Tuesday, November 03, 2009 11:05 AM
    •  
  • Tuesday, November 03, 2009 10:15 AMYi-Lun LuoMSFT, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
    1. Yes, as long as the project is deployed (no matter it is running or not), you will be charged.

    2. You must be aware that the maximum message size in a queue is 8 KB. Of course you can insert multiple messages into a queue, but queue is usually used for small data. It is blob that may end up with a very large size. Blob is usually used to store files. The files can be small text files, or they can be large video files. Also, since we support the Range header (download a part of the blob), for large blobs, it is generally recommended to download only a part of it using the Range header. For table storage, if you need to store a lot of data, SQL Azure may be a more economic choice. With SQL Azure, you only need to pay for the bandwidth, not the transactions.

    3. I think the bandwidth pricing is very reasonable. If you're using a tool to work with the storage, do you think you will upload/download 1 GB data per month?
    Lante, shanaolanxing This posting is provided "AS IS" with no warranties, and confers no rights.
    • Marked As Answer byernie_wang Tuesday, November 03, 2009 11:05 AM
    •  
  • Tuesday, November 03, 2009 6:56 PMSteve MarxMSFT, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
    Let me fill in on the bandwidth... it's bandwidth in and out of a subregion (like "USA - Southwest").  If your compute and storage are both in the same subregion, there's no charge for bandwidth between them.

    In Anton's scenario, a user uploading a photo is (charged) ingress bandwidth.  The web app saving the photo to blob storage does not incur bandwidth charges, assuming the web role instances and the storage account are in the same subregion (which is a best practice to reduce latency anyway).  A user browsing the site is (charged) egress bandwidth.  With the HTTP handler, the traffic between the HTTP handler and blob storage (presumed in the same subregion) is free, but the traffic between the HTTP handler and the end-user is (charged) egress bandwidth.
    • Marked As Answer byernie_wang Monday, November 09, 2009 3:58 PM
    •  

All Replies

  • Tuesday, November 03, 2009 10:09 AMAnton Staykov Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
    Hello,
    Let me share what I know for sure:

    about the first item: Compute = $0.12 / hour. After I deploy my web role and worker role, regardless of whether they are busy or not, I will also pay for the hours. Am I right? so I will pay 0.12 * 24 for each role.
      -- YES, and not only for each Role, but for each instance of every role ! This is very important! And also regardles of whether your roles are suspended or not. Once they are initialized you are charged, eventhough you may have not started the roles yet.

    third item: Storage Transactions = $0.01 / 10K. I am very confused about this one. the 10k means traffic. So each read and write of the storage will cost me money. So if I have 1G data. then the web role handle the data and put the data to queue, then the worker get message from the queue, parse it,  then store the parsing result to the table storage. I should pay about 3000$. Is it right? So I think it is very expensive.
      -- NO, here 10k means 10 000 single transactions. This is number of requests sent to storage. Be it a request to add, update, delete, select item from storage. It is not traffic.

    fourth item: $0.10 in / $0.15 out / GB. what are the "in" and "out" based on? Based on the traffic to the microsoft data center? if it is, then I use a tool to access the storage, will the money be calucated twice. one is band width, the other is storage trcansactions.
     -- Good question. Here are my thoughts:
     - IN is data to datacenter, OUT is data out of it. If you use tool, or your website allows users to UPLOAD data -> this is IN for paying, if you render images or files, that are in storage - this is OUT. However good question here is the following scenario:
           1. Users upload their photo to my web site (this is definetelly IN traffic for Windows Azure)
           2. My web app saves the photo in BLOB storage - now what ? is it also counted?
           3. Visitors of my site browse user profiles and see photos of each user -> this is OUT traffic.
           4. But if I use HHTP handler to get photos out of blob first and then render to end-user -> is also an OUT traffic?
    • Marked As Answer byernie_wang Tuesday, November 03, 2009 11:05 AM
    •  
  • Tuesday, November 03, 2009 10:15 AMYi-Lun LuoMSFT, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
    1. Yes, as long as the project is deployed (no matter it is running or not), you will be charged.

    2. You must be aware that the maximum message size in a queue is 8 KB. Of course you can insert multiple messages into a queue, but queue is usually used for small data. It is blob that may end up with a very large size. Blob is usually used to store files. The files can be small text files, or they can be large video files. Also, since we support the Range header (download a part of the blob), for large blobs, it is generally recommended to download only a part of it using the Range header. For table storage, if you need to store a lot of data, SQL Azure may be a more economic choice. With SQL Azure, you only need to pay for the bandwidth, not the transactions.

    3. I think the bandwidth pricing is very reasonable. If you're using a tool to work with the storage, do you think you will upload/download 1 GB data per month?
    Lante, shanaolanxing This posting is provided "AS IS" with no warranties, and confers no rights.
    • Marked As Answer byernie_wang Tuesday, November 03, 2009 11:05 AM
    •  
  • Tuesday, November 03, 2009 10:36 AMernie_wang Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    thank you!

    I know the maximum message size is 8kb. I meant that in the 1G file there are many items, and put these small items into the queue. that is my fault. Sorry. and thank you to point it out.

    yes, I will store a lot of data. but there is a limit for sql azure. so I have to use table storage. Our project is handling reports, parsing it, storing it, then we can do some analysis. there must be many reports. maybe for each report coming in, there will be 9 trsactions, two are queue opreating. seven are inserting to different tables. So if there are 1 million reports come in, we will pay about 10$. that's ok.

    Is there any other good design?
  • Tuesday, November 03, 2009 10:45 AMernie_wang Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Thank you

    your reply about the transactions put off my doubts and fears.
  • Tuesday, November 03, 2009 6:56 PMSteve MarxMSFT, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
    Let me fill in on the bandwidth... it's bandwidth in and out of a subregion (like "USA - Southwest").  If your compute and storage are both in the same subregion, there's no charge for bandwidth between them.

    In Anton's scenario, a user uploading a photo is (charged) ingress bandwidth.  The web app saving the photo to blob storage does not incur bandwidth charges, assuming the web role instances and the storage account are in the same subregion (which is a best practice to reduce latency anyway).  A user browsing the site is (charged) egress bandwidth.  With the HTTP handler, the traffic between the HTTP handler and blob storage (presumed in the same subregion) is free, but the traffic between the HTTP handler and the end-user is (charged) egress bandwidth.
    • Marked As Answer byernie_wang Monday, November 09, 2009 3:58 PM
    •  
  • Tuesday, November 03, 2009 7:18 PMAnton Staykov Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Let me fill in on the bandwidth... it's bandwidth in and out of a subregion (like "USA - Southwest").  If your compute and storage are both in the same subregion, there's no charge for bandwidth between them.

    In Anton's scenario, a user uploading a photo is (charged) ingress bandwidth.  The web app saving the photo to blob storage does not incur bandwidth charges, assuming the web role instances and the storage account are in the same subregion (which is a best practice to reduce latency anyway).  A user browsing the site is (charged) egress bandwidth.  With the HTTP handler, the traffic between the HTTP handler and blob storage (presumed in the same subregion) is free, but the traffic between the HTTP handler and the end-user is (charged) egress bandwidth.

    Thank you Steve for your clarification! It is really valuable!
  • Thursday, November 12, 2009 4:10 PMDavid E Stein Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    What exactly is a storage transaction? If I use the API to do logging... and I log an entry on each request... will I be charged for a storage transaction?
  • Thursday, November 12, 2009 11:57 PMSteve MarxMSFT, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Yes, in your scenario, each call to the storage service would be a transaction.
  • Friday, November 13, 2009 1:44 AMDavid E Stein Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    So, making a call to the API to do logging uses the storage service? Or can I just log to my local storage and avoid a per transaction charge? 
  • Friday, November 13, 2009 4:21 AMSteve MarxMSFT, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Sorry, I think I misread your original question.  If you write log messages to cloud storage, each message would be a transaction.

    If you're writing to the local drive, there's no charge.
  • Friday, November 13, 2009 9:36 AMAnton Staykov Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Also, to add to what Steve said,
    If you are using RoleManager.WriteToLog, there is no charge. Charge will only appear once you transfer the log to blob storage. But its a single transaction (I guess?).