Your AWS setup looks simple. That does not mean your cloud costs are optimized.

 |  Eric Pinet

A lot of SaaS and technology teams look at their AWS environment and assume there is not much to optimize. The logic is understandable. They are not running a massive multi-region architecture. They are not juggling hundreds of exotic services. Their setup is mostly EC2, S3 and RDS, with maybe a few Lambda, networking components, monitoring tools, backups and CI/CD workloads around the edges.

So when the topic of AWS cost optimization comes up, the reaction is often pretty direct: where exactly are the savings supposed to come from? DevOps teams naturally assume they have everything under control because their setups are so simple.

But with AWS, simple does not always mean lean. Familiar does not always mean efficient. And an environment built on core services can still contain a surprising number of costs that fly by the radar

In fact, services like EC2, S3 and RDS are often where cloud waste builds up. Not because teams are careless, but because these services are used every day, changed often and rarely reviewed with the same level of financial scrutiny as architecture, security or performance. The result is not usually one giant mistake. It is a collection of small decisions, defaults, leftovers and usage shifts that slowly start adding weight to the bill.

The problem is not EC2, S3 or RDS. The problem is drift.

Most AWS environments start with a plan. An instance size is chosen. A bucket is created. A RDS database is deployed. A storage policy makes sense at the time. A commitment is purchased based on current usage. A snapshot is kept “just in case.” Logs are retained because no one wants to delete something they may need later.

None of these decisions are necessarily wrong. The issue is that environments change.

Customer usage increases. Product features evolve. Data volumes grow. Teams test new workloads. Engineers ship fixes quickly. AI features move from experiment to production. Some resources become more important, while others become irrelevant. 

Cloud costs are shaped by those divergences. An AWS environment that looked properly sized six months ago may no longer reflect how the business operates today. What was once a safe storage choice may now be too expensive for the access pattern. A Lambda function that was low-cost at low volume may become material as usage scales. An EC2 commitment that once made perfect sense may no longer match the shape of the workload.

That is why cost optimization cannot be treated as a one-time cleanup. It has to be continuous. AWS environments keep moving, and cost visibility has to move with them.

EC2: Where “it works” can hide cloud waste

EC2 is one of the clearest examples of a service that can look straightforward while hiding unnecessary spend. If an instance is stable, available and not causing problems, teams may leave it alone. From an operational perspective, that makes sense. No one wants to risk performance just to shave a few dollars off the bill.

But from a FinOps perspective, “it works” is not the same as “it is right-sized.” EC2 waste can come from oversized instances, underused compute, unattached or underused EBS volumes, old snapshots, inactive AMIs, orphaned resources or commitments that no longer fit the workload.

The uncomfortable truth is that many EC2 environments are sized around fear: fear of downtime, latency, a deployment going sideways, being the person who made the instance smaller and broke something. So teams overprovision. Then they move on.

That may be reasonable during early growth or high uncertainty. But if the usage pattern becomes predictable and no one comes back to review the decision, the business keeps paying for caution that may no longer be needed.

Rightsizing is not only downsizing infrastructure. It is about comparing what resources are provisioned against what the workload actually uses. The key is context. A recommendation is only useful if the team understands the workload behind it. Is the instance supporting a critical production service? Is it seasonal? Does it need headroom? Is it part of a migration path? Is the low utilization temporary or structural?

That is where a proactive FinOps mindset matters. The objective is to make better infrastructure decisions with cost, performance and business impact in view.

S3: Cheap storage can become expensive storage

S3 is often seen as inexpensive, flexible and easy to use. That is exactly why it can become messy.

Teams store files, backups, logs, exports, versions, test data, customer assets, analytics outputs, temporary uploads and archived information in S3. Over time, buckets multiply. Data keeps accumulating. Access patterns change. A number of objects are used constantly. Others are rarely touched. And still others are forgotten entirely.

The unit cost may look low, but scale changes the conversation. S3 cost optimization is rarely about one dramatic move. It is about storage discipline.

Are objects sitting in the right storage class? Are lifecycle rules in place? Are noncurrent versions being retained longer than necessary? Are incomplete multipart uploads consuming storage? Is data being kept because it has value, or because no one owns the cleanup decision?

That may sound like standard housekeeping, but for SaaS companies, storage discipline is a margin issue. A customer may generate far more data than expected. A feature may create logs or exports that balloon in the background. A retention policy may have been copied from one use case to another without asking whether it still makes sense. A bucket created for a temporary project may still be accumulating costs months later.

Individually, these issues may not look urgent. Together, they create a cloud bill that keeps growing without a clear link to business value.

Lambda: Serverless does not mean costless

Lambda is great because it removes server management and scales automatically. That convenience is powerful. It can also make costs harder to reason about.

When teams do not provision servers directly, it is tempting to assume the cost model takes care of itself. But Lambda spend is still shaped by architecture and configuration. Memory settings, execution duration, invocation volume, retries, logging, downstream services and error patterns can all affect the final cost.

That means Lambda optimization is not just about lowering memory. Sometimes increasing memory can reduce execution time enough to improve performance and cost efficiency. Sometimes the issue is not the function itself, but how often it runs. Sometimes retries create avoidable usage. Sometimes logging is too noisy. Sometimes a downstream service is doing expensive work every time the function is triggered.

Serverless can hide cost problems because there is no obvious idle server sitting there looking wasteful. The waste is in the pattern.

A function that made sense at low volume can become expensive when product usage grows. A background job that felt harmless during early development can become meaningful when triggered thousands or millions of times. A poorly tuned function can tax the business every time customers interact with a feature.

For SaaS companies, that matters because product adoption is supposed to create leverage. If every new user, workflow or API call adds more cost than expected, growth can start to erode margins.

“Simple” environments still need visibility

When a company says, “Our AWS setup is simple.” But what does that mean? Is it simple to describe or simple to understand financially? Those are not the same thing.

An environment built on EC2, S3 and RDS may be easy to list in a sentence. But the cost drivers behind those services can still be complex. Which instances are underused? Which storage classes are misaligned with access patterns? Which buckets are accumulating old versions or stale data? Which Lambda functions are becoming more expensive as usage scales? Which commitments still match actual consumption? Which resources are no longer tied to a current business need?

Without visibility, teams are left guessing. And guessing creates two problems. First, savings opportunities sit untouched, so the company keeps paying for resources, configurations or commitments that no longer make sense. Second, teams lose confidence. If they cannot see what is driving spend, every optimization conversation becomes harder. Engineering worries about performance. Finance worries about budget. Leadership worries about margins. Everyone has part of the picture, but no shared view.

That is exactly where proactive FinOps becomes exceptionally useful. FinOps gives teams a way to connect cloud spend to usage, architecture and business impact.

Cost optimization should not depend on someone having free time

Most DevOps teams are already carrying a heavy load. They are managing uptime, releases, security, incidents, performance, infrastructure changes, monitoring, compliance requests and the occasional mystery fire that appears at 4:47 p.m. on a Friday, because of course it does.

Cloud cost monitoring often gets pushed into the “when we have time” category, which, in real operational life, means somewhere between next Tuesday and never. That is not a talent problem. It is a bandwidth problem.

DevOps teams know optimization matters. They also know that every recommendation takes context. Someone has to investigate it, validate it, understand the risk, prioritize the work and decide whether action makes sense.

Manual cost reviews are useful, but they are easy to delay. Quarterly cleanup projects can help, but they are reactive by nature. By the time the team reviews the issue, the cloud waste may have been running for weeks or months.

Where Stable fits into your AWS cloud optimization strategy

Stable, Unicorne’s AWS cloud optimization platform, approaches this differently. It keeps AWS cost visibility active in the background, so teams do not have to manually chase every possible savings opportunity across services, accounts and usage patterns.

For EC2, S3 and RDS alone, Stable currently has 14 recommendations…with more coming. Depending on the environment, Stable can help identify up to 40% in potential AWS savings. That does not mean every recommendation should be applied automatically. It means teams get a clearer view of where savings may exist, what is worth investigating and where cloud spend is drifting away from actual business needs.

Continuous optimization beats occasional cleanup

AWS environments do not wait for quarterly reviews to change. Usage changes every day. If optimization only happens occasionally, the business is always catching up. Continuous visibility changes the rhythm.

Instead of asking, “Why did the AWS bill spike last quarter?” teams can ask better questions earlier. Which services are trending up? Which recommendations have the highest potential impact? Which resources look idle or underused? Which storage patterns are no longer aligned with usage? Which workloads are becoming more expensive as the product scales? Which opportunities can be acted on safely now, and which need deeper review?

That is a healthier operating model. It moves cost optimization out of panic mode and into regular cloud management. It also helps DevOps, finance and leadership work from the same reality instead of arguing from different dashboards, assumptions or gut feelings.

FinOps is not a cost-cutting exercise

Cost optimization is often framed as reducing the bill. That framing is too narrow.

Cost cutting looks for reductions. FinOps looks for alignment. It helps teams understand where cloud spend supports growth, where it protects performance, where it creates flexibility and where it simply hits a company’s bottom line. In other words, cloud spend has to be understood in context and continuously.

Sign up for your free Stable trial today and let Unicorne show you the savings you are missing out on.

FAQs

Is AWS cost optimization still useful if we only use EC2, S3 and RDS?

Yes. In fact, EC2, S3 and Lambda are often where AWS cost optimization opportunities appear because they are used constantly and change frequently. EC2 may include oversized instances, unused EBS volumes or old snapshots. S3 may include outdated storage classes, unnecessary versions or incomplete multipart uploads. RDS may include inefficient memory or storage settings.

Why do simple AWS environments still generate cloud waste?

Simple AWS environments can generate waste because cloud usage rarely stays static. Customer activity changes, product features evolve, data volumes grow and teams deploy new workloads under pressure. A configuration that made sense at one point may become too expensive, underused or misaligned over time. The environment may still be simple to describe, but its cost drivers can become harder to see.

What are common EC2 cost optimization opportunities?

Common EC2 optimization opportunities include rightsizing oversized instances, terminating unused instances, reviewing unattached or underused EBS volumes, cleaning up old snapshots, removing inactive AMIs and reassessing Reserved Instances or Savings Plans that no longer match actual usage. The goal should be to compare provisioned resources with real workload requirements.

How can S3 storage become expensive over time?

S3 can become expensive when data keeps accumulating without clear lifecycle management. Older object versions, stale backups, logs, exports, incomplete multipart uploads and data stored in the wrong storage class can all increase costs. As usage scales, these small storage decisions can create meaningful spend, especially when no one owns the cleanup or retention strategy.

What makes RDS costs harder to monitor?

RDS costs can be harder to monitor because charges accumulate even when the database is idle. Costs are tied to instance type, allocated storage, I/O operations, multi-AZ configuration, automated backups, and data transfer between services. An RDS instance that seems appropriately sized at launch can become costly as query volume grows, storage expands, or underutilized instances are left running outside of production hours.​​​​​​​​​​​​​​​​

How does FinOps help DevOps teams optimize AWS costs?

FinOps helps DevOps teams connect cloud spend to infrastructure, usage and business impact. Instead of treating cost optimization as a finance-driven cleanup exercise, FinOps gives teams visibility into which services, workloads and resources are driving spend. This helps engineering teams prioritize optimization work without cutting capacity or putting performance at risk.

Why is continuous AWS cost visibility important?

Continuous AWS cost visibility matters because cloud environments change constantly. New features, customers, data volumes, AI workloads, AWS updates and usage patterns can all affect spend. If teams only review costs quarterly, waste may run for weeks or months before anyone notices. And continuous visibility helps teams catch cost shifts earlier and act with more context.

What is the difference between cost cutting and AWS cost optimization?

Cost cutting focuses on reducing spend. AWS cost optimization focuses on understanding whether cloud spend is justified, efficient and aligned with the business. Some costs support performance, growth or reliability and should be protected. Other costs come from waste, outdated assumptions or underused resources. Good FinOps helps teams tell the difference.

How can Stable help identify AWS savings opportunities?

Stable helps teams monitor AWS cost optimization opportunities across services, accounts and usage patterns. For EC2, S3 and Lambda alone, Stable currently has 14 recommendations, with more coming. Depending on the environment, Stable can help identify up to 40% in potential AWS savings by giving teams better visibility into where cloud spend may be misaligned or unnecessary.