Saving Hundreds of thousands on Logging: Discovering Related Financial savings

2023-01-27 14:21:06

In tech firms, Cost of Goods Sold is a key enterprise metric pushed largely by the effectivity of software program architectures. Saving cash all the time appears like an excellent thought, however it’s not all the time a precedence over options and progress, neither is it simple. At Hubspot, our comparatively new Backend Efficiency workforce is tasked with bettering the runtime and price efficiency of our backend software program. On this two-part weblog collection, we are going to have a look at a structured methodology we use for approaching price financial savings work and demonstrating how we apply it at Hubspot to save lots of thousands and thousands on the storage prices of our software logs.

The primary part to engaged on price financial savings is discovery. We have to understand how a lot every of our software program programs are costing. The foundations for price information typically begin with cloud suppliers like Amazon Net Providers (AWS). They typically present detailed price information for the cloud sources you employ. In easier programs, this can be sufficient to start out piecing collectively price categorizations.

Categorizing Prices

At Hubspot, our backend microservices are deployed utilizing a customized Mesos layer referred to as Singularity on high of AWS EC2 hosts. Any given EC2 host could also be working a number of totally different deployable functions at any time. We additionally run our personal database servers by way of Kubernetes as an alternative of utilizing cloud-hosted databases. All of this virtualization makes it onerous to correlate the price of a single EC2 occasion to the price of a particular software.

To handle this problem, we have now constructed an inside library that correlates functions to AWS sources by intercepting samples of software community calls to trace utilization of sources like S3, AWS Lambda, our inside hosted databases, and extra. Tying all this information collectively, we’re capable of combination the prices of functions and databases, in addition to attribute utilization of database prices to functions.

Exploring Prices

We will now construct explorations into our software program prices. We retailer our price information in S3, accessible by AWS Athena in addition to the third-party Redash product. It is very important have the fee information accessible to analytic question engines to grasp the prices of advanced programs.

Utilizing this tooling, we are able to now have a look at the best price areas of our ecosystem. The upper the fee share, the extra leverage attaining price effectivity of, say 10%, may help. The chart above captures every day price breakdowns for the month of July. What stands out is that S3 prices account for between 45% to 50% of our every day prices.

So we all know S3 could be a possible goal for price financial savings, however how? Subsequent we drill all the way down to the month-to-month price of particular person S3 buckets.


% of S3 Prices














It’s beginning to change into clear there are particular excessive price buckets, significantly hubspot-live-logs-prod and hubspot-hbase-backups. Nice! Since buckets are usually owned by a workforce at HubSpot, we now have two totally different groups to comply with up with on their utilization of S3.

Attribute Prices to Performance

We comply with up on this price information with the groups concerned, our HBase Infrastructure workforce and our Logging workforce. Dialogue with the HBase workforce reveals they’re actively engaged on a model migration and consolidation of backups, so future price discount appears to be taken care of. For logging, we realized that logs are first saved as uncooked JSON in S3 after which an asynchronous compaction job converts the information to compressed ORC format. Nevertheless, a key revelation was that solely about 30% of the information find yourself getting compacted. The Spark compaction job is just not maintaining with the amount of logs.

Now we have many alternative log streams at Hubspot: software logs, request logs, load balancer logs, database logs, and so on. Our ultimate measurement concerned writing a job to dimension every log sort within the uncooked JSON logs bucket to see if there have been any particular heavy log varieties. The outcomes confirmed our request logs got here in at about 31 petabytes of information, with our software logs in second at about 10 petabytes of information.

See Also


As soon as we have now enough price information attributing our highest price areas to particular components of our software program structure, we are able to begin forming hypotheses on potential design adjustments to cut back price whereas preserving enough performance.

Since storage prices had been by far our largest price for our log information, lowering the scale and quantity of log information we retailer appear to be viable vectors for price financial savings. We have already got a technique of compacting uncooked JSON to compressed ORC. These details naturally lead us to our speculation: 

We will retailer all log information as compressed ORC

We body our speculation round ORC for a couple of causes. We have already got tooling constructed round supporting ORC. ORC is a columnar storage format, giving it nice compression and dimension traits. We use AWS Athena to question our log information, and Athena helps ORC and Parquet. ORC compresses a bit higher than Parquet, that means smaller storage dimension and price.

Optimized Row Columnar (ORC) information construction structure


With our new speculation fashioned, we subsequent wish to measure what the anticipated end result of implementing our speculation could be. It’s vital to steadiness potential price financial savings towards the engineering funding of implementation and preservation of efficiency.

We wrote jobs to confirm compression charges and the efficiency of conversion. We wish to ensure that the compression is giant sufficient and that the conversion of uncooked logs to ORC is just not a efficiency bottleneck in comparison with conversion to JSON.

The roles revealed that the identical request log information compressed as ORC is about 5% the scale of the uncooked JSON information, or 20x smaller. In the meantime, the CPU and IO time to transform uncooked logs to Snappy compressed ORC is similar as uncooked JSON, each coming in at a bit of over one second to transform 122 megabytes of uncooked log information.

Given the present dimension of our logs, we estimated that the remaining lifetime price of the present uncooked JSON logs was within the 7 figures vary, and that the price of the identical logs all saved as ORC would as an alternative be a low 6 figures quantity, resulting in a complete estimated price financial savings of seven figures. 

Subsequent Steps

After preliminary discovery and taking measurements to estimate the affect of potential work, the following steps are the design and execution of the fee financial savings measures. Keep tuned for our second and ultimate submit on this collection, the place we stroll by way of the design and implementation of the fee financial savings, the fee and efficiency outcomes of endeavor this mission, and the broader information for exploring price financial savings of your individual.


All for engaged on difficult initiatives like this? Take a look at our careers page in your subsequent alternative! And to be taught extra about our tradition, comply with us on Instagram @HubSpotLife.

Source Link

What's Your Reaction?
In Love
Not Sure
View Comments (0)

Leave a Reply

Your email address will not be published.

2022 Blinking Robots.
WordPress by Doejo

Scroll To Top