<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vlad Z</title>
    <description>The latest articles on DEV Community by Vlad Z (@vlad_z_16b6320e21f32bee0d).</description>
    <link>https://dev.to/vlad_z_16b6320e21f32bee0d</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4050207%2Feb6548cb-0bde-4cc3-9158-728f3ae9d8c0.jpg</url>
      <title>DEV Community: Vlad Z</title>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vlad_z_16b6320e21f32bee0d"/>
    <language>en</language>
    <item>
      <title>Everyone touches the cloud bill and nobody owns it</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Sat, 07 Nov 2026 10:32:06 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/everyone-touches-the-cloud-bill-and-nobody-owns-it-83</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/everyone-touches-the-cloud-bill-and-nobody-owns-it-83</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftai2g3u70dbz3ra4mxu8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftai2g3u70dbz3ra4mxu8.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cloud costs touch more stakeholders than most engineering projects&lt;/p&gt;

&lt;p&gt;And those stakeholders care about very different things&lt;/p&gt;

&lt;p&gt;The engineer running the optimization work cares about technical correctness. Is the rightsizing safe? Are the lifecycle policies configured correctly? Will the changes cause any issues?&lt;/p&gt;

&lt;p&gt;The engineering manager cares about risk and velocity. Will this break anything? How much time will it take? What else gets delayed while this happens?&lt;/p&gt;

&lt;p&gt;The CFO or finance team cares about one thing: when does the bill go down and by how much? They don't understand the technical mechanism. They understand the number and the timeline&lt;/p&gt;

&lt;p&gt;The founder or CEO cares about runway. How much longer does this give us? Does this change what we can do next quarter?&lt;/p&gt;

&lt;p&gt;The problem with most cost optimization work is that it's communicated in the language of the person doing the work. Technical findings presented to non-technical stakeholders. Savings projections presented without confidence intervals to people who need to make budget decisions&lt;/p&gt;

&lt;p&gt;The work gets done. The communication fails. The impact is smaller than it should be because nobody fully understood what happened or why&lt;/p&gt;

&lt;p&gt;What actually works is translating the same information into the language of each stakeholder&lt;/p&gt;

&lt;p&gt;To engineering: here are the specific changes, the risk level for each, the rollback plan, and the monitoring approach&lt;/p&gt;

&lt;p&gt;To the engineering manager: here's the scope, the timeline, the risk to other work, and why it's worth prioritizing now&lt;/p&gt;

&lt;p&gt;To finance: here's the current monthly cost, here's the projected cost after changes, here's when the changes will be complete, and here's the confidence level on the projection&lt;/p&gt;

&lt;p&gt;To the founder: here's what this does to the runway number and what it makes possible that wasn't possible before&lt;/p&gt;

&lt;p&gt;Same work. Four different translations&lt;/p&gt;

&lt;p&gt;The teams that get organizational support for cost optimization are the teams that learned to make those translations&lt;/p&gt;

&lt;p&gt;The ones that don't are still waiting for someone to understand why their spreadsheet matters&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>infrastructure</category>
      <category>management</category>
    </item>
    <item>
      <title>The reliability versus cost trade-off that keeps engineers awake</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Wed, 04 Nov 2026 21:12:46 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/the-reliability-versus-cost-trade-off-that-keeps-engineers-awake-15pf</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/the-reliability-versus-cost-trade-off-that-keeps-engineers-awake-15pf</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo62nzw7bv1h2s40c57y8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo62nzw7bv1h2s40c57y8.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The reliability-cost tradeoff is the one that keeps engineers up at night&lt;/p&gt;

&lt;p&gt;Because the cost of getting it wrong in one direction is financial. The cost of getting it wrong in the other direction is an outage&lt;/p&gt;

&lt;p&gt;And outages are not abstract. They're 2am pages, angry customers, recovery stress, lost revenue, and sometimes lasting reputation damage&lt;/p&gt;

&lt;p&gt;So when someone says "we can save $1,200 a month by removing the standby replica" the instinct is to resist. The replica hasn't saved us yet. But it might. And the day it does we'll be glad we paid for it&lt;/p&gt;

&lt;p&gt;That instinct is not irrational. It becomes expensive when it applies to everything&lt;/p&gt;

&lt;p&gt;Here's the question that cuts through it&lt;/p&gt;

&lt;p&gt;What does a failure of this resource actually cost?&lt;/p&gt;

&lt;p&gt;Not in the abstract. Specifically. If this instance fails, what breaks? For how long? What is the revenue impact per hour of downtime? What is the customer support cost? What is the engineering time to recover?&lt;/p&gt;

&lt;p&gt;For a critical production database in a revenue-generating system: the cost of downtime is high and the cost of the standby replica is probably justified many times over&lt;/p&gt;

&lt;p&gt;For a development environment database: what does a failure actually cost? A few hours of one developer's time. Is the standby replica saving you more than that per month? Almost certainly not&lt;/p&gt;

&lt;p&gt;Reliability investment should scale with the business impact of failure&lt;/p&gt;

&lt;p&gt;Infrastructure that the product's revenue depends on directly: invest in reliability&lt;/p&gt;

&lt;p&gt;Infrastructure used by internal teams, test environments, low-traffic services: apply the cost constraint first and add reliability when the business case is clear&lt;/p&gt;

&lt;p&gt;The mistake is applying the same reliability standard to everything&lt;/p&gt;

&lt;p&gt;That's not engineering rigor. That's a refusal to make the decision&lt;/p&gt;

&lt;p&gt;The decision is: what is this worth protecting and what would it cost us if it failed?&lt;/p&gt;

&lt;p&gt;Make that calculation. Then design accordingly&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>infrastructure</category>
      <category>sre</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>Cost and performance are not enemies</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Tue, 03 Nov 2026 09:53:00 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/cost-and-performance-are-not-enemies-gih</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/cost-and-performance-are-not-enemies-gih</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0fnj6xriaf480ra2jwbj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0fnj6xriaf480ra2jwbj.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cost optimization and performance are not always at odds&lt;/p&gt;

&lt;p&gt;But sometimes they are. And pretending otherwise leads to bad decisions in both directions&lt;/p&gt;

&lt;p&gt;The engineer who refuses to rightsize a database because "it might affect performance" without checking the actual utilization is using performance as an excuse to avoid change. At 12 percent average CPU utilization, the smaller instance will perform identically&lt;/p&gt;

&lt;p&gt;That's the false tradeoff. And it's common&lt;/p&gt;

&lt;p&gt;The real tradeoff is different&lt;/p&gt;

&lt;p&gt;Caches cost money. They also dramatically reduce database load and response times. Removing a cache to reduce costs can save $200 a month and increase your database bill by $800 while also making your product slower. That's not optimization. That's just moving the cost and degrading the experience&lt;/p&gt;

&lt;p&gt;Multi-AZ database deployments cost twice as much as single-AZ. They also mean automatic failover in under 60 seconds when the primary instance has a hardware failure. The cost of going single-AZ to save money is the cost of a database outage happening at the worst possible time. That's a real tradeoff and it depends on how much that outage costs you&lt;/p&gt;

&lt;p&gt;CDNs cost money. They also reduce egress costs from origin and make your product faster for users outside your primary region. Removing the CDN to save money often costs more in egress than it saves in CDN fees. The math matters&lt;/p&gt;

&lt;p&gt;Here's how I think about the performance-cost tradeoff&lt;/p&gt;

&lt;p&gt;What does this resource actually do for the product?&lt;/p&gt;

&lt;p&gt;If it has a clear, measurable contribution to performance or reliability that the product depends on: understand the tradeoff before reducing it. Quantify what you'd lose&lt;/p&gt;

&lt;p&gt;If the contribution is theoretical or unmeasured: measure first. Don't protect something valuable. Don't destroy something valuable by assuming it isn't&lt;/p&gt;

&lt;p&gt;Performance concerns that can't be measured are usually fears, not facts&lt;/p&gt;

&lt;p&gt;Fears are expensive to hold. Get your data. Measure them first&lt;/p&gt;

&lt;p&gt;Then make educated decisions based on past information rather than guesswork&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>infrastructure</category>
      <category>performance</category>
    </item>
    <item>
      <title>The checklist I run on every cloud account</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Mon, 02 Nov 2026 14:24:30 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/the-checklist-i-run-on-every-cloud-account-714</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/the-checklist-i-run-on-every-cloud-account-714</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqrxlbbaa7swamaa6styk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqrxlbbaa7swamaa6styk.jpg" alt=" " width="800" height="1422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every account I review, I go through the same checklist&lt;/p&gt;

&lt;p&gt;Not because I need the checklist. Because the checklist makes sure I don't skip things when I'm moving fast or when something interesting distracts me early&lt;/p&gt;

&lt;p&gt;Here it is&lt;/p&gt;

&lt;p&gt;Billing and visibility&lt;br&gt;
Are budget alerts configured at meaningful thresholds?&lt;br&gt;
Is billing export set up for deep analysis?&lt;br&gt;
What percentage of resources have cost allocation tags?&lt;br&gt;
What is the tag coverage gap and what does it make invisible?&lt;/p&gt;

&lt;p&gt;Compute&lt;br&gt;
What is the average CPU utilization across EC2 or Compute Engine instances over the last 30 days?&lt;br&gt;
What is the average memory utilization?&lt;br&gt;
Are there instances with consistent utilization under 20 percent?&lt;br&gt;
Are there instances that could run on spot or preemptible capacity?&lt;br&gt;
Is autoscaling configured where the workload allows it?&lt;/p&gt;

&lt;p&gt;Storage&lt;br&gt;
What storage class is the majority of object storage using?&lt;br&gt;
When were the objects last accessed?&lt;br&gt;
Are there snapshots or backups older than the recovery requirement?&lt;br&gt;
Are there volumes or disks not attached to any compute resource?&lt;/p&gt;

&lt;p&gt;Databases&lt;br&gt;
What is the RDS or Cloud SQL utilization compared to provisioned capacity?&lt;br&gt;
Are automated backup retention policies aligned with actual recovery requirements?&lt;br&gt;
Are read replicas being used and is their utilization justified?&lt;/p&gt;

&lt;p&gt;Networking&lt;br&gt;
What is the data transfer cost broken down by type?&lt;br&gt;
Is there traffic crossing regional or AZ boundaries that doesn't need to?&lt;br&gt;
Are there NAT gateways or load balancers with no traffic?&lt;/p&gt;

&lt;p&gt;Forgotten resources&lt;br&gt;
Are there resources in regions not being actively used?&lt;br&gt;
Are there services that were provisioned for testing and never decommissioned?&lt;br&gt;
Are there reserved instances that expired and weren't renewed?&lt;/p&gt;

&lt;p&gt;Spending commitments&lt;br&gt;
What percentage of steady-state compute is covered by savings plans or reserved instances?&lt;br&gt;
Are the commitments sized based on rightsized utilization or on historical on-demand usage?&lt;/p&gt;

&lt;p&gt;This list is not complete. Every account adds something new&lt;/p&gt;

&lt;p&gt;But accounts that are clean on this list are accounts that have their costs under control&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>The tools I actually use for a cloud cost audit</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Sun, 01 Nov 2026 18:35:14 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/the-tools-i-actually-use-for-a-cloud-cost-audit-4mkp</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/the-tools-i-actually-use-for-a-cloud-cost-audit-4mkp</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvryz4smd930whegnsx9n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvryz4smd930whegnsx9n.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;People ask me what tools I actually use&lt;/p&gt;

&lt;p&gt;Not the tools I recommend in theory. The ones I actually open when I get access to a new account&lt;/p&gt;

&lt;p&gt;AWS Cost Explorer: first stop. Not for the totals. For the service breakdown and the month-over-month deltas. I'm looking for anomalies and concentration - where does the spend cluster and what changed recently&lt;/p&gt;

&lt;p&gt;AWS Compute Optimizer: I turn this on immediately if it isn't already on. Let it run for a couple of weeks minimum. The EC2 and RDS recommendations are genuinely useful when the utilization data is mature enough&lt;/p&gt;

&lt;p&gt;CloudWatch Container Insights and Application Insights: for accounts running EKS or ECS, this is where I look for over-provisioned workloads and underutilized nodes. Pod resource requests versus actual usage is almost always worth examining&lt;/p&gt;

&lt;p&gt;AWS Cost and Usage Report exported to Athena: for deep analysis. When the Cost Explorer view isn't granular enough, CUR gives you the full breakdown. I write queries against it to find specific patterns - resources with no tags, services with unexpected cost spikes, cross-region data transfer by source and destination&lt;/p&gt;

&lt;p&gt;For GCP: billing export to BigQuery is the equivalent. It's the only way to get the full granularity. The billing console is good for overview. BigQuery queries are how you find the specific things&lt;/p&gt;

&lt;p&gt;INFORMATION_SCHEMA.JOBS in BigQuery: for any account with significant BigQuery spend, this is mandatory. Shows you exactly which queries are processing the most data. The top 10 by bytes processed is always revealing&lt;/p&gt;

&lt;p&gt;GCP Recommender: useful for Compute Engine rightsizing and idle resource detection. Not as mature as AWS Compute Optimizer but getting better&lt;/p&gt;

&lt;p&gt;For both platforms: a simple spreadsheet&lt;/p&gt;

&lt;p&gt;Every finding goes in with resource ID, current cost, projected cost after fix, effort required, risk level, and owner. This is not fancy. It's just organized. And organized information is what turns a list of findings into an executable remediation plan&lt;/p&gt;

&lt;p&gt;The tools find the opportunities. The spreadsheet determines the order&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>infrastructure</category>
      <category>tools</category>
    </item>
    <item>
      <title>The same account after cleanup: $9,800 a month</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Thu, 29 Oct 2026 22:00:47 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/the-same-account-after-cleanup-9800-a-month-2ip0</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/the-same-account-after-cleanup-9800-a-month-2ip0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnnbf7dm3n7rirm2r43jz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnnbf7dm3n7rirm2r43jz.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's what the same account looks like after&lt;/p&gt;

&lt;p&gt;Consistent naming. Every resource follows a pattern: service-environment-region-purpose. You can read a resource name and know immediately what it does, where it lives, and what environment it belongs to&lt;/p&gt;

&lt;p&gt;Tags on everything. Team. Service. Environment. Cost center. Created date. Owner. The billing dashboard shows spend by team, by service, by environment. When something spikes, you know immediately what it is and who to talk to&lt;/p&gt;

&lt;p&gt;Active regions: two. Us-east-1 for production and us-west-2 as a failover target. Everything else cleaned up. The experiments in other regions: deleted. The total active resource count: reduced by 40 percent from when we started, with the same workload running&lt;/p&gt;

&lt;p&gt;Orphaned resources: gone. A quarterly cleanup process now runs through the account looking for unattached volumes, unused IPs, load balancers with no targets, security groups associated with nothing. Takes two hours. Catches things before they accumulate&lt;/p&gt;

&lt;p&gt;Log retention policies set on every log group. Application logs: 30 days. Infrastructure logs: 90 days. Audit logs: 365 days. Log levels in production: info, not debug. The CloudWatch bill reduced by 75 percent&lt;/p&gt;

&lt;p&gt;RDS instances sized for actual utilization. Automated backup retention set to match the actual recovery requirement, not the AWS default. Old manual snapshots deleted after confirming they're not needed&lt;/p&gt;

&lt;p&gt;Reserved instances and Savings Plans purchased for the stable baseline workload. On-demand only for variable capacity&lt;/p&gt;

&lt;p&gt;Monthly spend: $9,800&lt;/p&gt;

&lt;p&gt;From $24,000 to $9,800. Same product. Same users. Same capabilities&lt;/p&gt;

&lt;p&gt;The difference is not technical sophistication. Both states have technically sound infrastructure&lt;/p&gt;

&lt;p&gt;The difference is attention. The first state is what happens when nobody is watching. The second state is what happens when someone is&lt;/p&gt;

&lt;p&gt;That's the whole story&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>What a neglected cloud account looks like: $24,000 a month</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Wed, 28 Oct 2026 23:55:19 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/what-a-neglected-cloud-account-looks-like-24000-a-month-19pj</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/what-a-neglected-cloud-account-looks-like-24000-a-month-19pj</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8akxxy1ogfi34ewd7kz8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8akxxy1ogfi34ewd7kz8.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's what a neglected cloud account actually looks like when you open it&lt;/p&gt;

&lt;p&gt;No consistent naming convention. Resources called things like "test-new-2", "db-final-v3", "loadbalancer-dont-delete". The names tell you nothing about purpose, environment, or owner&lt;/p&gt;

&lt;p&gt;Tags: either completely absent or present on 30 percent of resources with no consistent schema. Some resources tagged with "env:prod". Others with "environment:production". Others with nothing&lt;/p&gt;

&lt;p&gt;Multiple regions active with no clear reason. The main workload runs in us-east-1. There are resources in eu-west-1, ap-southeast-2, and us-west-2. Some of them might be for users in those regions. Most of them are from experiments that ran in those regions because someone had a reason at the time and the resources never got cleaned up&lt;/p&gt;

&lt;p&gt;Orphaned resources everywhere. EBS volumes not attached to any instance. Elastic IPs not associated with any resource. Load balancers with no healthy targets. Security groups referenced by nothing&lt;/p&gt;

&lt;p&gt;Log groups without retention policies, ingesting data at rates that don't match the traffic the services should be generating&lt;/p&gt;

&lt;p&gt;RDS instances with automated backups retained for 35 days when the company's recovery requirement is 7 days. Multiple database snapshots taken manually for reasons nobody remembers. The oldest ones: from two years ago&lt;/p&gt;

&lt;p&gt;Reserved instances that expired and weren't renewed, leaving workloads back on on-demand pricing without anyone noticing for four months&lt;/p&gt;

&lt;p&gt;The total monthly spend: $24,000&lt;/p&gt;

&lt;p&gt;The team's honest estimate of what it should cost: $10,000 to $12,000&lt;/p&gt;

&lt;p&gt;The $12,000 to $14,000 gap is not from bad engineering decisions&lt;/p&gt;

&lt;p&gt;It's from the accumulated weight of good engineers moving fast and never having the mandate, the time, or the tools to look back&lt;/p&gt;

&lt;p&gt;This is what the starting point looks like. The good news is that starting points are just starting points&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Built for a scale that never came</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Tue, 27 Oct 2026 10:23:51 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/built-for-a-scale-that-never-came-59nh</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/built-for-a-scale-that-never-came-59nh</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxqqobn3vpicstmwf9bp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxqqobn3vpicstmwf9bp.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The second most expensive mistake I see is infrastructure built for a scale that never came&lt;/p&gt;

&lt;p&gt;A startup spends three months building a multi-region, highly available, auto-scaling architecture. Kafka for event streaming. Separate read replicas for every database. Cross-region failover. The works&lt;/p&gt;

&lt;p&gt;They have 200 users&lt;/p&gt;

&lt;p&gt;Not 200,000. 200&lt;/p&gt;

&lt;p&gt;The infrastructure can handle 50,000 concurrent users without breaking a sweat. 200 users use about 4 percent of its capacity. The other 96 percent runs continuously, full price, waiting for traffic that may or may not ever arrive&lt;/p&gt;

&lt;p&gt;This is a real thing I've seen. Not once&lt;/p&gt;

&lt;p&gt;The motivation is always good. Engineers want to build things right. They've read about the companies that got caught unprepared when they went viral. They don't want to be the team that had to rewrite everything under load. They build for the future to avoid the pain of not being ready&lt;/p&gt;

&lt;p&gt;The problem is that the future is uncertain and the infrastructure bill is not&lt;/p&gt;

&lt;p&gt;Every month you run infrastructure at 4 percent utilization is a month of runway spent on capacity you don't have the users to justify yet&lt;/p&gt;

&lt;p&gt;The right question is not "can this architecture handle our growth?" but "what's the cheapest architecture that handles our current load and can be upgraded when we actually need to upgrade it?"&lt;/p&gt;

&lt;p&gt;The answer at 200 users is almost always simpler than what teams build&lt;/p&gt;

&lt;p&gt;One region. One availability zone, maybe two. A single appropriately sized database. An application server that can be vertical scaled or replicated when needed. Basic monitoring. That's it&lt;/p&gt;

&lt;p&gt;You build the complex architecture when the growth makes it necessary, not when the ambition makes it appealing&lt;/p&gt;

&lt;p&gt;The companies that write those viral "how we scaled to X users" blog posts almost never built that architecture at 200 users&lt;/p&gt;

&lt;p&gt;They built it when they needed it. Because they still had runway to get there&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>infrastructure</category>
      <category>startup</category>
    </item>
    <item>
      <title>The most expensive phrase in cloud: we'll clean it up later</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Sun, 25 Oct 2026 23:16:01 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/the-most-expensive-phrase-in-cloud-well-clean-it-up-later-165b</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/the-most-expensive-phrase-in-cloud-well-clean-it-up-later-165b</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuvit67snxedef7637c8a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuvit67snxedef7637c8a.jpg" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most expensive phrase in cloud infrastructure is "we'll clean it up later"&lt;/p&gt;

&lt;p&gt;I've heard it in every account I've worked with&lt;/p&gt;

&lt;p&gt;A dev environment gets created for a sprint. We'll clean it up later&lt;/p&gt;

&lt;p&gt;A service gets deployed with debug logging enabled. We'll turn that down later&lt;/p&gt;

&lt;p&gt;A database gets provisioned at a size that's too large for current needs because the cost of under-provisioning feels riskier than the cost of over-provisioning. We'll rightsize it later&lt;/p&gt;

&lt;p&gt;Later never comes. Not because the team is irresponsible. Because later becomes now and now is always full&lt;/p&gt;

&lt;p&gt;The sprint ends and the next sprint starts. The debug logging produces useful information once and now removing it feels risky. The database has been running for three months and suddenly changing it requires coordination and a maintenance window and it's never the right week&lt;/p&gt;

&lt;p&gt;The resource just keeps running&lt;/p&gt;

&lt;p&gt;I've found dev environments running for 18 months that were created for a feature that shipped in week two&lt;/p&gt;

&lt;p&gt;The cost isn't just the money. It's the compounding weight of things you meant to do that you didn't do. Every resource you know should be removed but haven't removed adds cognitive overhead. Every time someone looks at the account they have to decide again whether this thing is safe to touch. That decision cost happens over and over&lt;/p&gt;

&lt;p&gt;The pattern that actually works is not doing the cleanup later&lt;/p&gt;

&lt;p&gt;It's building cleanup into the creation&lt;/p&gt;

&lt;p&gt;When you spin up a dev environment, set a termination date in the tags. Schedule a reminder. Make the cleanup part of the task, not an afterthought&lt;/p&gt;

&lt;p&gt;When you enable verbose logging, create a ticket immediately to reduce log level before the service goes to production. That ticket sits in the backlog as a concrete reminder instead of a vague intention&lt;/p&gt;

&lt;p&gt;When you provision infrastructure you might need to rightsize, set a calendar reminder for 30 days later to check utilization&lt;/p&gt;

&lt;p&gt;The discipline is not the cleanup&lt;/p&gt;

&lt;p&gt;The discipline is treating the cleanup as part of the work when the work happens&lt;/p&gt;

&lt;p&gt;Later is a cost you pay monthly until you do&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Day two of the audit: CloudWatch went from $2,400 to $380</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Sat, 24 Oct 2026 10:09:34 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/day-two-of-the-audit-cloudwatch-went-from-2400-to-380-3opo</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/day-two-of-the-audit-cloudwatch-went-from-2400-to-380-3opo</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F966f7kj5koqns1va70vt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F966f7kj5koqns1va70vt.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Continuing from where we left off with the B2B SaaS account&lt;/p&gt;

&lt;p&gt;Day three: we started making changes. We had the map. We had the findings. We had write access. We had a rollback plan for each change and a monitoring window defined in advance&lt;/p&gt;

&lt;p&gt;First change: delete the unused OpenSearch cluster&lt;/p&gt;

&lt;p&gt;Confirmed with the CTO that nobody was using it and nobody planned to use it. Deleted. Immediate: $800 a month gone&lt;/p&gt;

&lt;p&gt;Second change: set retention policies on CloudWatch log groups&lt;/p&gt;

&lt;p&gt;43 log groups. Most had no retention policy. We set 30 days on application logs, 90 days on infrastructure logs, 365 days on audit logs. Deleted three log groups receiving data from services that no longer existed. Reduced the data volume on two log groups by changing log levels from debug to info&lt;/p&gt;

&lt;p&gt;CloudWatch went from $2,400 to $380 a month&lt;/p&gt;

&lt;p&gt;Third change: RDS rightsizing&lt;/p&gt;

&lt;p&gt;Two of the three RDS instances were running at under 20 percent CPU and under 30 percent memory. We moved both from db.r5.2xlarge to db.r5.large. Scheduled maintenance windows, ran the resize, monitored for 48 hours each&lt;/p&gt;

&lt;p&gt;No issues. RDS went from $3,100 to $1,400 a month&lt;/p&gt;

&lt;p&gt;Fourth change: S3 lifecycle policies&lt;/p&gt;

&lt;p&gt;Set up policies across 11 buckets. Objects over 90 days old move to Standard-IA. Objects over 365 days old move to Glacier Instant Retrieval. Two buckets containing data that hadn't been accessed in two years moved entirely to Glacier Deep Archive&lt;/p&gt;

&lt;p&gt;S3 went from $1,100 to $420 a month&lt;/p&gt;

&lt;p&gt;End of week one. No EC2 changes yet. No data transfer work yet&lt;/p&gt;

&lt;p&gt;Already saved: $5,100 a month from four changes&lt;/p&gt;

&lt;p&gt;The CTO was quiet for a moment when I showed him the numbers. Then he said: why has nobody looked at this before?&lt;/p&gt;

&lt;p&gt;I didn't have a good answer. It's the same account I see everywhere. Not neglect. Not incompetence. Just nobody whose job it was to look&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>infrastructure</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>A 12 person company, a $19,200 AWS bill, and a CTO who was right</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Fri, 23 Oct 2026 20:41:08 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/a-12-person-company-a-19200-aws-bill-and-a-cto-who-was-right-3d8a</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/a-12-person-company-a-19200-aws-bill-and-a-cto-who-was-right-3d8a</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1tdjxhfr3b4fbcpfze5b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1tdjxhfr3b4fbcpfze5b.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I want to walk through a full engagement from start to finish&lt;/p&gt;

&lt;p&gt;Not a highlight reel. The whole thing, including the parts that were slower and messier than I expected&lt;/p&gt;

&lt;p&gt;B2B SaaS company. 12 employees. AWS account. Monthly spend when I started: $19,200&lt;/p&gt;

&lt;p&gt;Their CTO had looked at the bill and estimated it should be around $8,000 to $10,000 for their workload. He was right. That instinct was correct. But he didn't know where the extra $9,000 was coming from and didn't have time to find it&lt;/p&gt;

&lt;p&gt;Day one: I asked for read-only access to the account and access to their CloudWatch metrics. No write access at this stage. I wanted to understand the whole picture before touching anything&lt;/p&gt;

&lt;p&gt;Day one findings: six areas worth investigating. CloudWatch Logs retention policies not set. RDS over-provisioned. EC2 instances with CPU utilization under 15 percent consistently. S3 Standard storage on objects not accessed in over a year. Data transfer between regions. One completely unknown service generating $800 a month that nobody could explain immediately&lt;/p&gt;

&lt;p&gt;I documented each finding with the resource identifiers, current cost, and initial hypothesis for what was wrong&lt;/p&gt;

&lt;p&gt;Day two: I started with the unknown service. Always start with the unknown. It turned out to be an ElasticSearch cluster (their term - AWS OpenSearch) that had been provisioned during a performance investigation, determined to not be needed, and never decommissioned. $800 a month for eight months: $6,400 total spent on something they'd decided not to use before it even launched&lt;/p&gt;

&lt;p&gt;That discovery set the tone for the rest of the engagement. It told me this account had multiple things running that weren't being actively used. Which meant the real savings were larger than the obvious inefficiencies&lt;/p&gt;

&lt;p&gt;We hadn't made a single change yet. We had a map&lt;/p&gt;

&lt;p&gt;The map made everything that followed faster and more confident&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>infrastructure</category>
      <category>startup</category>
    </item>
    <item>
      <title>GCP project sprawl is quietly a cost problem</title>
      <dc:creator>Vlad Z</dc:creator>
      <pubDate>Wed, 21 Oct 2026 20:19:56 +0000</pubDate>
      <link>https://dev.to/vlad_z_16b6320e21f32bee0d/gcp-project-sprawl-is-quietly-a-cost-problem-bae</link>
      <guid>https://dev.to/vlad_z_16b6320e21f32bee0d/gcp-project-sprawl-is-quietly-a-cost-problem-bae</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9pg02w2551zqnc5fc0z4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9pg02w2551zqnc5fc0z4.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Project sprawl is a GCP-specific problem with real cost implications&lt;/p&gt;

&lt;p&gt;It starts innocently. Someone needs a sandbox. Someone else needs a separate environment for a new service. A contractor spins up a project for a proof of concept. A team creates a project for each major feature because that seemed like clean separation at the time&lt;/p&gt;

&lt;p&gt;Two years later there are 30 projects. Eight of them have no clear owner. Five of them haven't had active resources for six months but still have a few things running that nobody is confident removing&lt;/p&gt;

&lt;p&gt;The cost of the abandoned resources is real. The cost of the confusion is also real, just harder to measure&lt;/p&gt;

&lt;p&gt;Managing 30 projects requires 30 sets of billing alerts, 30 sets of IAM reviews, 30 sets of security posture checks. Teams with good hygiene do this. Most teams don't, which means the 30 projects are effectively unmonitored&lt;/p&gt;

&lt;p&gt;Project sprawl also creates a discovery problem. When something is wrong, which project is it in? When you need to understand your architecture, how do you get a coherent picture across 30 projects with inconsistent naming and labeling?&lt;/p&gt;

&lt;p&gt;The consolidation work is genuinely hard. GCP doesn't make it easy to merge projects or move most resources between them. But there are approaches&lt;/p&gt;

&lt;p&gt;Identify projects with no active resources by billing data: zero spend for 90 days is a reasonable threshold for a deletion candidate. Notify the listed owner. Wait 30 days. If no objection, delete&lt;/p&gt;

&lt;p&gt;For projects with active resources that should be consolidated: document the migration required to move workloads to the target project. Treat it as a migration project with a deadline&lt;/p&gt;

&lt;p&gt;For future projects: establish a project creation process. Require an owner, a purpose, and a planned retirement date. Review quarterly&lt;/p&gt;

&lt;p&gt;The sprawl didn't happen in a day. It won't be fixed in a day&lt;/p&gt;

&lt;p&gt;But each project you consolidate or delete reduces the surface area of the problem for every future optimization effort&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>infrastructure</category>
      <category>management</category>
    </item>
  </channel>
</rss>
