Cost Optimization Strategies
Cloud computing providers like Amazon Web Services, Microsoft Azure, and Google Cloud Platform are becoming a larger part of our IT budget, making it necessary to understand their cost. We may even be surprised to see public cloud bills to be higher than expected. I am going to take a closer look at the top contributors and what we can do to reduce overall spending while maintaining innovation velocity.
In this course, you'll learn what makes the cloud such an attractive solution, what drives cloud adoption, and what are the typical costs of cloud computing are. You'll learn about a wide range of cloud cost optimization techniques, the best practices for cost management, and how to gamify the cloud cost experience.
If you have any feedback relating to this course, please let us know at firstname.lastname@example.org.
- Understand what makes cloud attractive and how adoption will drive cost
- Learn how to gain visibility into cloud cost and how to hold departments accountable for their spending
- Learn about cloud cost drivers and how to get the most out of your budget
- Discover how to establish best practices and build a culture of cost-consciousness
This course is for executives, architects, and technical leads looking to understand what drives public cloud cost and to learn about best practices of cloud cost optimization.
To get the most out of this course, you should have a basic understanding of cloud concepts. Some familiarity with cloud services like compute and storage would also be helpful but is not required.
Welcome back to our Cost Optimization Strategies for the Cloud course. I'm Dieter Matzion, and I will be your instructor for this lecture. In this lecture, we're going to talk about cloud cost visibility. I will show you how to build a self service cost reporting infrastructure and how to attribute cost to business units and software releases.
Our key motivation is visibility at the beginning of your cloud cost optimization journey. We make more informed decisions when we can see where we are driving. The cloud cost reporting infrastructure will be the foundation for many cost optimization efforts. You need to periodically enhance your reporting capabilities to be able to tackle more sophisticated cost optimization efforts.
Plan on building an infrastructure that is extensible and can grow with your needs. Cloud providers want to get paid for their services, so in addition to a high level invoice they will also provide you with an itemized bill telling you how exactly you spent your money. These bills are available electronically in different formats, and build the basis of your initial cloud cost reporting infrastructure. We are very comfortable with flat files as they have been around for a while, and our confidence in this technology is high.
However, if you need more real time visibility into your cloud usage, cloud providers offer application interfaces, or APIs, where you obtain data in extensible markup language, or XML, via hypertext transfer protocol, or HTTP. Software development kits, or SDKs, exist for all major programming languages including iOS and Android.
Cloud providers also offer web based user interfaces where you can customize reports to gain visibility into your cloud cost. However, they need to serve a large customer base, and it might be challenging to build the exact report you need. Let's look at Amazon Web Services as an example. They offer four different versions of a comma separated file, or CSV, called the Detailed Billing Report, or DBR for short.
You configure these files to be stored in a simple storage service bucket, or S3 for short, as a daily data feed. Each line in the file corresponds to a specific cloud usage and tells you how much of a service you consumed and how much you paid for it. For completeness, AWS now offers a newer version of this report called the Cost and Usage Report, or CUR for short, which integrates with Amazon QuickSight, a business analytics tool, and Amazon Redshift, a data warehouse service. Where the cloud reporting feature set of cloud vendors may fall short, third party vendors like CloudHealth or Cloudability enter the cloud cost reporting area. Their software integrates out of the box with the main cloud providers like Amazon Web Services, Microsoft Azure, and Google Cloud Platform, and their businesses take advantage of gaps in service offerings. However, report customization is limited to the reporting platforms, and customer feature requests have to be prioritized across their customer base. Depending on the size of the pool of software engineers your business has available, you need to evaluate the options that will work best for you.
If your bench strength is limited, you may want to take advantage of out of the box service offerings instead of building an in house reporting solution. Keep in mind though that the ability to customize depends on the flexibility of the reporting provider, and also that your cloud cost reporting infrastructure will form the basis of your cloud optimization program. Ideally, you want self service capabilities in your cloud cost reporting infrastructure, meaning everyone within your organization has access to cost reporting. This will allow you to share the same information across your business.
To maximize productivity, you want users to be able to customize reports and share them with others via email or chat. Your reporting system will need to be able to save user selections, like filters and graph types, into a shareable link. Having this ability will also allow to gamify the cloud cost experience down the road, allowing teams to compete on the basis of cost and revenue.
You also want the ability to attribute cost to business units, and even down to projects and discrete software releases. There are multiple ways to do that. For example, on a high level, Google Cloud Platform offers the concept of projects. This allows you to separate and identify development efforts, while Amazon Web Services offers accounts to section your cloud spending. Taking advantage of pre-existing workarounds requires a lower investment, and can be useful early in your cloud cost optimization journey.
For example, you can build a naming convention when specifying identifiers for your cloud resources. With a little parsing, the information in the names can be used for identification of the application, team, environment, or release version. Cloud providers and third party reporting vendors also support tagging where multiple strings can be attached to cloud resources, which in turn can be leveraged in cost reporting. To utilize tagging, you will need to build a tagging taxonomy, essentially a guideline for naming things in the cloud. Once tags are in the cloud you will need to dedicate resources to maintain these tags.
This will ensure consistency in your reports. Depending on the number of cloud resources and the size of your developer pool, you may also want to consider building an in house tagging system. Keep in mind that API calls may occasionally time out or return error codes, because cloud providers may have to throttle responses when thousands of requests are made at the same time.
This can slow down real time reading of tags, as the tag retrieval algorithm needs to have built in wait times, which in turn may impact your downstream applications that rely on the accuracy of these tags. The solution here is to use a caching service that periodically reaches out to the cloud via API calls to refresh its tag database. Given all the options outlined in this lecture, you are now able to use cloud cost reporting to identify cloud spending on all organizational levels down to software releases, and everyone in your company has full visibility into cloud cost. This enables you to react to changes in the cloud, and it becomes the foundation of the cloud cost optimization program.
Dieter Matzion is a member of Intuit’s Technology Finance team supporting the AWS cost optimization program.
Most recently, Dieter was part of Netflix’s AWS capacity team, where he helped develop Netflix’s rhythm and active management of AWS including cluster management and moving workloads to different instance families.
Prior to Netflix, Dieter spent two years at Google working on the Google Cloud offering focused on capacity planning and resource provisioning. At Google he developed demand-planning models and automation tools for capacity management.
Prior to that, Dieter spent seven years at PayPal in different roles ranging from managing databases, network operations, and batch operations, supporting all systems and processes for the corporate functions at a daily volume of $1.2B.
A native of Germany, Dieter has an M.S. in computer science. When not at work, he prioritizes spending time with family and enjoying the outdoors: hiking, camping, horseback riding, and cave exploration.