Mike Fuller
FinOps Foundation
Key Insight: To support the adoption of FOCUS™, the FinOps Foundation has augmented the Use Case Library with the introduction of the FOCUS Sandbox. FinOps Practitioners can use this sandbox to run SQL queries on actual (anonymized) FOCUS billing data to gain a clear understanding of what FOCUS data looks like, and the real-world insights it yields. This understanding should help Practitioners realize how FOCUS makes it easier to get insights out of their own data.
The FinOps Open Cost and Usage Specification (FOCUS™) is an open-source technical specification for cloud cost and usage billing data. In plain language, it is the unifying format for cloud bills. FOCUS defines clear requirements for providers to generate billing files in a single format, eliminating the complexity of data normalization, enabling improved interoperability across team workflows, and making it easier for FinOps Practitioners to meet their objectives. The time previously spent on data ingestion and normalization can be redirected toward iteratively improving FinOps Capabilities to an appropriate maturity.
Many FinOps Practitioners want to understand what FOCUS means for them, and are looking for guidance on how to get started. Creating a sandbox with real-world data helps Practitioners to see how having consistent and normalized FOCUS datasets simplifies FinOps practices. This article outlines our experience building the FOCUS Sandbox with real FOCUS datasets, and provides some key tips and links to get you started on your own FOCUS journey.
Over the past few weeks, Mike Fuller and the team at the FinOps Foundation have been gathering real-world FOCUS datasets from major cloud service providers and bringing them together in the same way FinOps Practitioners have started doing within their own organizations.
We collected and anonymized real FinOps data for AWS, GCP, and OCI. Sample Microsoft data was obtained from their FinOps toolkit and merged with real data. The combined dataset was obtained via the following FOCUS versions:
Our goal was to experience first-hand what it is like to adopt FOCUS, and to provide a solution that enables Practitioners to better understand and demonstrate what FOCUS will look like in their environments as they plan for FOCUS adoption.
In his previous role at Atlassian, Mike managed cloud billing data from multiple cloud providers and found that consolidating and normalizing data from different sources was not a simple task. By comparison, our experience building the FOCUS Sandbox with FOCUS-formatted data was much more straight-forward. First, we downloaded FOCUS datasets from each of the cloud providers’ consoles. Then, we loaded each of them to a database linked to our FOCUS website. Mike found only minor edge cases to handle, as the schema for the core FOCUS Columns is consistent across the providers generating the billing file. Any issues we did face were resolved by referencing well-documented conformance reports, which are currently provided by Microsoft and AWS.
We faced only two minor issues after merging our multi-cloud FOCUS data, and here is how we resolved those issues:
Setting column lengths long enough for the expected data is important to ensure we are not truncating the data so much that it is unreadable. FOCUS does not currently specify a maximum length for string columns, so we needed to determine an appropriate length for each column of data. We found the longest string in each column and used them as guides to come up with the following column lengths as a good starting point.
You may need to adjust these sizes for your FOCUS data:
Column Name | Length | Column Name | Length |
AvailabilityZone | 50 | PricingCategory | 25 |
BillingAccountId | 100 | PricingUnit | 100 |
BillingAccountName | 100 | ProviderName | 100 |
BillingCurrency | 5 | PublisherName | 100 |
ChargeCategory | 25 | RegionID | 100 |
ChargeClass | 25 | RegionName | 100 |
ChargeDescription | 1024 | ResourceId | 1024 |
ChargeFrequency | 50 | ResourceName | 1024 |
CommitmentDiscountCategory | 25 | ResourceType | 255 |
CommitmentDiscountId | 255 | ServiceCategory | 255 |
CommitmentDiscountName | 255 | ServiceName | 255 |
CommitmentDiscountStatus | 25 | SkuId | 255 |
CommitmentDiscountType | 100 | SkuPriceId | 255 |
ConsumedUnit | 100 | SubAccountId | 100 |
InvoiceIssuerName | 50 | SubAccountName | 100 |
These values are unofficial guides that may need to be changed for your data. It is also possible that future versions of the FOCUS Specification define these values, or that providers/vendors may change their maximum lengths in the future.
The FOCUS Specification does allow some columns to have null values. However, if you find nulls, it is important to check conformance gap reports (currently provided by Microsoft and AWS), as we found that some of our data had null values, or values that represent nulls like empty strings (‘’), which needed to be corrected (i.e., set to a null) before loading data in.
After resolving these issues, we loaded our data into MySQL, which was useful for connecting it to our existing website assets, and worked well for our small sample set of FOCUS data. You should assess the size of your FOCUS datasets and identify which tools you will be using to interact with the data in order to determine the best location to house your data.
With our multi-cloud FOCUS data ready to query, all that was left to do was add some common use cases with SQL queries from our Use Case Library to the new FOCUS Sandbox so you can easily see the kind of results these queries generate on FOCUS datasets. This work continues, as we aim to include all use cases in the FOCUS Sandbox over time.
We are excited to share this new FOCUS Sandbox with you, and hope it helps illuminate how FOCUS can be helpful to you and your organization.
The Sandbox is easy to use:
For graphical visualization, you might even consider asking Generative AI to make a chart of the data output!
While we see the FOCUS Sandbox as a useful resource in enabling you to explore FOCUS data, nothing is better than your own, real billing data from your cloud service providers. By turning on your FOCUS exports, you give an important signal to the cloud providers that FOCUS is helpful to your FinOps practice, and you would like to see them continue development to align with this Specification.
Each of the major cloud service providers has created clear, step-by-step instructions enabling you to get FOCUS-formatted exports of your own billing data. The FOCUS website is your portal to current documentation from each provider:
Once configured, your FOCUS data is made available either in an Object Store, via an API, or stored in a Data Warehouse, depending on the cloud provider and your configuration.
Review the unified data to check for any issues, as described above.
Now you can begin querying your own data using SQL queries available in the Use Case Library, or modify those queries for a related use case. Please share your new queries with the community via this form.
Several FinOps Practitioners have shared how they are using FOCUS data in their own workflows. We encourage you to learn from their efforts.
Pierre-Emmanuel Nuiry, Director of Cloud Financial Operations at STMicroelectronics, recommends establishing a FOCUS data flow in parallel with your existing process while you transition to its standardized language and metrics. Pierre-Emmanuel plans to transition to FOCUS as their primary data flow starting in January 2025. Watch his presentation at FinOps X 2024 in Barcelona.
Also in Barcelona, Neven Drljević and Julian Radu shared how the European Parliament is using FOCUS to unify data from different clouds for analysis by the European Commission for the European Parliament and other European Union organizations. Watch their presentation.
GitLab, Zoom, Citi, and The Australian Retirement Trust have also shared how they are using FOCUS today, and what they have learned on their own journeys.
The FinOps Foundation has also made available Training and Certification in order to better prepare you for using FOCUS:
If you want to stay up-to-date on what is happening with the FOCUS Project, please join the FOCUS User Group. These weekly calls are available in three time zone regions, and are a great place to share your use-case needs, ask questions, and engage with fellow Practitioners.
We look forward to your feedback and participation!