<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Finops on LeanerCloud</title><link>https://leanercloud.com/tags/finops.html</link><description>Recent content in Finops on LeanerCloud</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 20 Aug 2026 02:08:40 +0200</lastBuildDate><atom:link href="https://leanercloud.com/tags/finops/index.xml" rel="self" type="application/rss+xml"/><item><title>ElastiCache cost optimization: rightsizing, Valkey, and reserved instances</title><link>https://leanercloud.com/blog/2025-09-30-elasticache-cost-optimization-case-study.html</link><pubDate>Tue, 30 Sep 2025 15:23:51 +0000</pubDate><guid>https://leanercloud.com/blog/2025-09-30-elasticache-cost-optimization-case-study.html</guid><description>&lt;h2 id="elasticache-is-where-i-find-the-most-extreme-overprovisioning"&gt;ElastiCache is where I find the most extreme overprovisioning&lt;/h2&gt;
&lt;p&gt;Of all the AWS services I optimize, ElastiCache is where I most often find caches provisioned far beyond anything the workload needs. Databases at least tend to grow into their instances. Caches get sized once, generously, and then nobody revisits them.&lt;/p&gt;
&lt;p&gt;On one client the ElastiCache clusters were provisioned at 20x to 300x the capacity they actually used. That is not a typo. The smallest available ElastiCache instance was still 2x to 30x larger than what those workloads needed, so even dropping to the floor of the instance range left plenty of headroom. Rightsizing that footprint, together with converting it to Graviton, cut the cost by about 90%, roughly 10x cheaper than before.&lt;/p&gt;</description></item><item><title>Converting Aurora Serverless to provisioned for cost and performance</title><link>https://leanercloud.com/blog/2025-07-16-converting-aurora-serverless-to-provisioned-rds.html</link><pubDate>Wed, 16 Jul 2025 10:26:20 +0000</pubDate><guid>https://leanercloud.com/blog/2025-07-16-converting-aurora-serverless-to-provisioned-rds.html</guid><description>&lt;h2 id="serverless-is-a-scaling-tool-not-a-default"&gt;Serverless is a scaling tool, not a default&lt;/h2&gt;
&lt;p&gt;Aurora Serverless scales capacity up and down automatically, which is genuinely useful when your load is bursty or unpredictable. The trouble is that it gets adopted as a default for databases whose load is nothing like that, and at scale the per-capacity-unit price makes it an expensive way to run a steady workload.&lt;/p&gt;
&lt;p&gt;I think of Aurora Serverless less as a permanent home for a steady database and more as a temporary configuration that helps you discover the capacity a database actually needs, so you can then move it to a right-sized provisioned instance. If a database has been running at a roughly constant capacity for a year, it is not a Serverless workload.&lt;/p&gt;</description></item><item><title>Slashing S3 costs with the right storage class and lifecycle rules</title><link>https://leanercloud.com/blog/2025-05-29-s3-storage-class-and-lifecycle-savings.html</link><pubDate>Thu, 29 May 2025 21:31:47 +0000</pubDate><guid>https://leanercloud.com/blog/2025-05-29-s3-storage-class-and-lifecycle-savings.html</guid><description>&lt;h2 id="most-large-s3-bills-are-old-data-in-the-wrong-tier"&gt;Most large S3 bills are old data in the wrong tier&lt;/h2&gt;
&lt;p&gt;When a client has a large S3 bill, the cause is usually not the data they are actively using. It is data they stopped using years ago and kept paying full price to store, because it is sitting in S3 Standard when it should be in a cheaper tier or deleted outright.&lt;/p&gt;
&lt;p&gt;On one client, the vast majority of their S3 cost came from buckets storing logs. They had many dozens of terabytes of old log files as S3 Standard, spread across multiple buckets, some of it dating back five years. They only needed a few months of retention. They were paying thousands of dollars a month to keep years of logs they would never look at.&lt;/p&gt;</description></item><item><title>Finding and cutting unused and idle RDS databases</title><link>https://leanercloud.com/blog/2025-04-08-finding-and-cutting-unused-idle-rds-databases.html</link><pubDate>Tue, 08 Apr 2025 11:48:32 +0000</pubDate><guid>https://leanercloud.com/blog/2025-04-08-finding-and-cutting-unused-idle-rds-databases.html</guid><description>&lt;h2 id="the-databases-nobody-is-using-anymore"&gt;The databases nobody is using anymore&lt;/h2&gt;
&lt;p&gt;On almost every non-trivial AWS account I look at, some RDS databases are running that nobody uses. They were spun up for a migration that finished, a service that got decommissioned, or a test that became permanent. They still run 24/7, still carry storage, and still show up on the bill every month.&lt;/p&gt;
&lt;p&gt;The problem is not that these are hard to fix. Deleting an unused database or dropping an instance a size is a few minutes of work. The problem is finding them. On an account with dozens of databases spread across several regions, the waste is spread thin, and no single database is obviously wrong to an engineer who does not stare at RDS metrics all day.&lt;/p&gt;</description></item><item><title>The cross-AZ data transfer costs hiding in your database traffic</title><link>https://leanercloud.com/blog/2024-09-20-cross-az-data-transfer-costs.html</link><pubDate>Fri, 20 Sep 2024 22:24:02 +0000</pubDate><guid>https://leanercloud.com/blog/2024-09-20-cross-az-data-transfer-costs.html</guid><description>&lt;h2 id="the-line-item-nobody-can-explain"&gt;The line item nobody can explain&lt;/h2&gt;
&lt;p&gt;Cross-AZ data transfer is one of the least understood costs on an AWS bill. It does not map to a resource you can point at, it just shows up as data transfer charges, and it grows silently as traffic increases. A common source is an application instance talking to its database across an Availability Zone boundary, paying per gigabyte in both directions for traffic that could have been free.&lt;/p&gt;</description></item><item><title>Moving bursty Fargate and EC2 workloads to Lambda for 10x savings</title><link>https://leanercloud.com/blog/2024-07-25-fargate-to-lambda-for-bursty-workloads.html</link><pubDate>Thu, 25 Jul 2024 19:04:45 +0000</pubDate><guid>https://leanercloud.com/blog/2024-07-25-fargate-to-lambda-for-bursty-workloads.html</guid><description>&lt;h2 id="fargate-is-not-always-the-cheapest-place-to-run-a-request"&gt;Fargate is not always the cheapest place to run a request&lt;/h2&gt;
&lt;p&gt;Fargate is a good default for containerized services, but for spiky web frontends and REST APIs it can be an expensive one. If your containers spend most of their time idle and then get slammed with requests for a few seconds at a time, you are paying for provisioned capacity that mostly sits waiting, and Fargate is often too slow to scale into the burst anyway, so users see latency spikes on top of the cost.&lt;/p&gt;</description></item><item><title>Cutting CloudWatch Logs costs hiding in a few log groups</title><link>https://leanercloud.com/blog/2024-04-09-cutting-cloudwatch-logs-costs.html</link><pubDate>Tue, 09 Apr 2024 17:05:18 +0000</pubDate><guid>https://leanercloud.com/blog/2024-04-09-cutting-cloudwatch-logs-costs.html</guid><description>&lt;h2 id="a-line-item-that-is-easy-to-ignore"&gt;A line item that is easy to ignore&lt;/h2&gt;
&lt;p&gt;CloudWatch Logs rarely shows up as a headline on an AWS bill, which is exactly why it is worth checking. The cost is spread across ingestion, storage, and retention, and it accumulates quietly on log groups that were configured once and never revisited. By the time it is real money, it is buried among hundreds of other log groups.&lt;/p&gt;
&lt;h2 id="one-log-group-8000-a-year"&gt;One log group, $8,000 a year&lt;/h2&gt;
&lt;p&gt;On one client the biggest single offender was a VPC flow log. Flow logs can be extremely verbose, and this one group had accumulated 2TB of data, costing about $8,000 a year on its own.&lt;/p&gt;</description></item></channel></rss>