Overview

Skill Level: Any Skill Level

Are you getting unexpected charges in your monthly cloud bill? This recipe focuses on tools & techniques that should help developers and entrepreneurs to keep track of expenses in the cloud

Ingredients

If you’re an entrepreneur or a developer running a stack in the cloud, keeping track of your expenses and your budget is crucial. Things can go haywire if proper checks are not in place. To optimize the cost,  and choose a plan that fits into your use case. To make the pricing convenient, cloud service providers like AWS, Azure and IBM Cloud offer tools to track the prices and estimate the cost for the foreseeable future. This recipe will help you understand how the pricing works and make the best out of it.

 

Step-by-step

  1. Go For the Free Trial If You’re a Developer

    All vendors offer free trials for developers. IBM offers free development plan that’s aimed at developers known as IBM Lite. With the Lite plan, you can develop worry-free and at no cost services for as long as you like. Although the instance comes with minimum configuration this plan is sufficient to get you started if you’re a developer.  Amazon AWS offers a free tier for a duration 12 months in addition to the non-expiring offers that renew on a monthly basis. Google cloud, on the other hand, provides a $300 credit when you sign up.

    However, remember that the trials are aimed at developers to experiment the features during the development and the testing phase. You shouldn’t be using it for production on critical applications like eCommerce stores, and social platforms.

     

     

  2. Calculate Expenses using a Cloud Pricing Calculator

    Cloud calculators are a handy tool that consolidates a wide cluster of price calculations across regions. The prices used in the calculator is guaranteed to be up to date. In the case of AWS, the calculators usually come in two forms:

    1. Simple monthly calculator: You can estimate your bills using monthly calculators that determine the pricing based on the number of individual services that you are using.
    2. AWS TCO Calculator: This lets you evaluate the savings from using AWS and offers options that let you effectively reduce the expenses. AWS uses the information about the current cloud infrastructure and determines the best possible options to save more.

    It’s not just AWS, all major cloud giants have an integrated calculator that you can use to estimate the pricing.  Apart from that, there are third party calculators that you can like NetApp’s AWS calculator, Scalyr Cloud Calculator etc. that you can use to compare and match the pricing of services across various cloud vendors.

     

     

  3. Visit The Dashboard Frequently

    It is always a good practice to frequently check the dashboard available on the Billing & Cost Management tool. Irrespective if you are currently utilizing the free tier, the graphs on your dashboard will show a breakdown of your usage. The dashboard currently has the different graphs available:

    1. Spend Summary – This includes a summary of your previous month’s spend, an estimated cost of your current month to date usage as well as a forecast of your final billing amount for the current month.
    2. Spend by Service – Lists the top services you use and how much it contributes towards your month to date costs.
    3. Top Spend by Service – List the services you use the most and the costs it is responsible for in the current month to date costs.

     

  4. Stay Up To Date With the Pricing

    Price calculators give you an estimated pricing for a particular period of time. But what if you need something more customized to meet your usage patterns. Cloud providers offer APIs that you can use to fetch the latest prices for all their services/products and you can use that to dynamically generate the pricing details for your business on a monthly basis.  

    Furthermore, you can add that your personalized dashboard for your application so that you can keep track of the expenses.  Here’s what the Amazon price list API looks like:

    The Price List API is hosted on   

    https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/index.json 

    This is what it looks like: 

    {  "formatVersion" : "v1.0", 
    "disclaimer" : "This pricing list is for informational purposes only.",
    "publicationDate" : "2018-05-25T01:04:17Z",
    "offers" : {
    "AmazonCognito" : {
    "offerCode" : "AmazonCognito",
    "versionIndexUrl" : "/offers/v1.0/aws/AmazonCognito/index.json",
    "currentVersionUrl" : "/offers/v1.0/aws/AmazonCognito/current/index.json",
    "currentRegionIndexUrl" :
    "/offers/v1.0/aws/AmazonCognito/current/region_index.json"
    },
    "AmazonECS" : {
    "offerCode" : "AmazonECS",
    "versionIndexUrl" : "/offers/v1.0/aws/AmazonECS/index.json",
    "currentVersionUrl" : "/offers/v1.0/aws/AmazonECS/current/index.json",
    "currentRegionIndexUrl" : "/offers/v1.0/aws/AmazonECS/current/region_index.json"
    },
    …
    }

     

    This API endpoint serves as an entry page to service specific price listing API. For a particular service, the currentVersionUrl property returns the current pricing and versionIndexUrl points to another JSON with links to outdated prices.

    A GET request on Amazon S3’s current pricing returns something like this:

    {
    "formatVersion" : "v1.0",
    "disclaimer" : " ",
    "offerCode" : "AmazonS3",
    "version" : "20180404165311",
    "publicationDate" : "2018-04-04T16:53:11Z",
    "products" : {
    "YTBTUFDC7FRAJJAP" : {
    "sku" : "YTBTUFDC7FRAJJAP",
    "productFamily" : "Data Transfer",
    "attributes" : {
    "servicecode" : "AWSDataTransfer",
    "transferType" : "Accelerated InterRegion Outbound using edge locations within US, Europe or Japan",
    "fromLocation" : "EU (Ireland)",
    "fromLocationType" : "AWS Region",
    "toLocation" : "South America (Sao Paulo)",
    "toLocationType" : "AWS Region",
    "usagetype" : "EU-SAE1-AWS-Out-ABytes-T1",
    "operation" : "",
    "servicename" : "AWS Data Transfer"
    }
    },
    …
    }

     

    The data returned consists of metadata and the actual pricing of each unit. Google Cloud’s price API is simpler without any metadata. Azure’s pricing API is different. It offers two APIs to track usage:

    1. Resource Usage API: This API retrieves the resource consumption data for an Azure subscription.
      Resource RateCard: This API gets the resource metadata with the actual prices
    2. However, you will need to be authenticated to make API calls.

     

     

  5. Summary

    To conclude, here is a quick compilation of some additional tips you can use to control your cloud costs –

    • Tag Everything – Tags are labels attached to different services and are assigned either by the user or by the service provider. Tags can be used to organize resources. Tags for cost allocation allow you to track costs on a more detailed level.
    • Build a Responsibility Model – Build a model where project owners and budget owners are both aware and responsible for their upfront and ongoing costs. Ensuring costs are appropriately communicated through the hierarchy helps.
    • Reduce Usage – In addition to the official tools, there are a number of third-party tools also available to help track old or redundant services you may be paying for but don’t necessarily use.
    • Set up alerts and notifications – Use the Pricing API to build alerts and notifications or use your cloud provider’s alert system when the service encounters something unexpected.

     

Join The Discussion