August 25, 2025

We Upgraded Postgres and Cut Our Amazon RDS Bill by 59%

Rodion Salnik

CTO and Co-founder, Brocoders

6 min

Like others, in February, we received a notification from Amazon regarding the update to PostgreSQL for our Brocoders website. This started the process of immediately updating PostgreSQL for our clients. That made me think about other products that just ignored this notification.

Those who think, "If it's not broken, don't fix it."

And I understand why they postpone this. Probably, they’ve never connected this notification to the actual costs they are paying on AWS month after month, or they don't connect this to security vulnerabilities. In this article, I will demonstrate how legacy technology can lead to financial losses, security risks, and operational headaches, as well as reduced functionality.

The Real Cost of Standing Still

Let me show you the numbers that make this crystal clear. Once a database version reaches end-of-life, AWS charges Extended Support fees that can add 100-150% to your RDS costs.

A MySQL 5.7 RDS instance that normally costs around $101 per month suddenly balloons to $247 per month - that's $1,752 in avoidable fees annually for just one instance. Think about that. You ignore one notification, and suddenly you're paying almost double for the same service. However, what's worse is that the costs extend beyond explicit fees. Legacy database engines lack the performance optimizations found in newer versions, forcing organizations to scale up hardware to achieve the same performance.

PostgreSQL 17, for example, introduced optimizations that can improve write throughput by up to 2× under high concurrency. One case study found that simply upgrading PostgreSQL versions led to a 38% reduction in query execution time, eliminating I/O bottlenecks without complex optimizations.

That is why, for our client EveryPig, we updated their PostgreSQL version from 12 to 16 to avoid Extended Support fees and unlock significant performance improvements.

When Serverless Isn't So Efficient

Here's another example that hits close to home for many of us running serverless applications. The serverless revolution promised efficiency - unless you're running outdated runtimes. Moving from Node.js 18 to Node.js 22 in AWS Lambda can deliver significant performance improvements and cost savings. Node.js 22 is now available in AWS Lambda and includes enhanced query parallelism, WebSocket support, and experimental ES module loading capabilities. Since AWS Lambda bills per millisecond, these performance gains translate almost linearly to cost savings. But there's a bigger problem. Outdated runtimes create operational risk. AWS warns that functions on deprecated runtimes may contain unpatched vulnerabilities and "may eventually stop working." The operational cost includes not just firefighting outages, but the potential service disruption that could impact customers and revenue. Imagine explaining to your clients that their service went down because you decided not to update a runtime. That's a conversation nobody wants to have.

The Security Price Tag You Didn't Know You Were Paying

This is where ignoring updates gets truly expensive. Using old, unpatched operating systems exposes organizations to catastrophic financial risk. Vulnerable third-party software contributed to nearly 75% of cloud account breaches, often resulting in cryptojacking attacks where victims are stuck with massive cloud bills.

For our fintech SaaS client, security isn't just a concern - it's fundamental to their business model. That's why they maintain an aggressive update schedule for their Python tech stack, ensuring they're always running patched versions that close known vulnerabilities. In the financial services sector, a single security incident can destroy customer trust and regulatory standing, making the cost of staying current trivial compared to the potential downside.

Want a real-world example? One small company woke up to a $53,000 AWS bill for a single month after their normally $100/month environment was compromised and used for cryptocurrency mining. While Amazon waived most of the charges in this case, the principle remains: the cost of a breach can far exceed any savings from delaying updates. That notification you ignored? It might have prevented this.

What Happens When You Actually Update

Now let me show you the flip side - what happens when organizations stop ignoring those notifications and embrace modernization: PTT Digital upgraded from .NET Framework 4.8 to .NET 8 on Linux with AWS Graviton and achieved a 76% reduction in cloud infrastructure costs coupled with a 13× performance improvement A financial services firm estimated 40% cost savings by porting from .NET Framework to modern .NET on Linux, with an additional 10% savings by moving to Graviton processors Companies migrating to AWS Graviton2 instances report up to 40% better price-performance compared to comparable x86 instances These aren't marginal improvements—they're transformational changes that fundamentally alter the economics of running technology infrastructure. The companies that got these results? They stopped ignoring the notifications.

Version Management Best Practices for 2025

Recent industry trends and security updates demonstrate the critical importance of systematic version management:

Automated Dependency Monitoring

Use tools like Dependabot or Renovate that automatically scan for outdated packages, security patches, and deprecations across your stack Integrate these tools with CI/CD pipelines to block merges with known vulnerabilities Recent security updates for Django in 2025 highlight the importance of staying current with framework patches

Proactive Upgrade Scheduling

Implement calendar-based upgrade cadences (quarterly or semi-annually) rather than relying on emergency migrations Treat vendor EOL notices and extended support fee warnings as prioritized action items Microsoft's regular .NET updates in 2024 demonstrate the ongoing need for systematic patching

Infrastructure Modernization

Consider ARM-based instances like AWS Graviton for better price-performance Ensure ARM64-compatible machine images are specified in launch configurations Verify third-party monitoring tools support ARM64 architectures before migration

Security-First Approach

Django remains one of the most secure frameworks, providing built-in protection against common vulnerabilities Regular security updates address emerging threats like CVE-2024-21409 in .NET platforms Python and Django's continued evolution in 2025 includes enhanced security measures and AI integration capabilities

The Frontend Update Chain Reaction

Here's something we see regularly with our clients' React applications. Modern libraries and packages are built with the latest React features in mind, creating a domino effect: to access the best tools and most secure packages, you need to stay current with React itself.

When we update libraries for clients, we often discover that the most valuable improvements are only available in newer React versions - making framework updates not just beneficial, but necessary for accessing the broader ecosystem's innovations. You want to use that new security-focused library? You need React 18. You want better performance monitoring? You need the latest version. It's all connected.

Why We Don't Play the Waiting Game

This is why we don't treat technology updates as optional - for our clients or ourselves. Every quarter we don't upgrade is a quarter we're paying a "legacy tax" in the form of higher infrastructure costs, security risks, and operational complexity.

Our approach is proactive rather than reactive. We maintain upgrade roadmaps, test new versions in controlled environments, and plan migrations during low-impact windows. We've learned that the cost of planned, systematic updates is always lower than the cost of emergency migrations forced by security incidents or end-of-support deadlines.

Quality assurance plays a crucial role in this process. After every update - whether it's PostgreSQL for EveryPig and Brocoders, Python stack updates for our fintech client, or React version bumps - our QA team thoroughly tests all functionality to ensure nothing breaks in production. This systematic testing approach allows us to update confidently and frequently, knowing that any issues will be caught before they impact users.

For our clients, this translates to measurable value. Instead of discovering they're paying extended support fees or running on vulnerable systems, we help them stay ahead of the curve. Instead of emergency weekend migrations, we execute planned updates during business hours with full testing and rollback procedures.

The Choice Is Yours

The evidence overwhelmingly supports a simple principle: staying current with technology updates isn't just best practice - it's essential cost optimization. Organizations that treat updates as optional are effectively choosing to pay more for less performance, higher risk, and greater operational complexity.

In a world where cloud providers continuously introduce price-performance improvements, standing still means falling behind. The companies that thrive are those that embrace the continuous evolution of technology, treating updates not as interruptions to business but as opportunities to reduce costs, improve performance, and strengthen security. We've seen too many organizations learn this lesson the hard way - through unexpected bills, security incidents, or the painful realization that their "stable" legacy systems have become expensive technical debt. The cost of modernization is almost always less than the cost of standing still, especially when measured over time.

So the next time you receive that notification from Amazon or any other provider about updating PostgreSQL, Python, React, or any other technology in your stack, remember: that innocent-looking notification is actually an opportunity to save money, improve performance, and sleep better at night. The choice is clear: update proactively, or pay the legacy tax indefinitely. We know which one we choose—for our clients and ourselves.

4.89
Thank you for reading! Leave us your feedback!
4500 ratings

Read more on our blog