Readit News logoReadit News
Posted by u/rumno0 a year ago
Show HN: See the impact on your cloud costs as you code
Hey folks, my name is Owen and I recently started working at a startup (https://infracost.io/) that shows engineers how much their code changes are going to cost on the cloud before being deployed (in CI/CD like GitHub or GitLab). Previously,

I was one of the founders of tfsec (it scanned code for security issues). One of the things I learnt was if we catch issues early, i.e. when the engineer was typing their code, we save a bunch of time.

I was thinking … okay, why not build cloud costs into the code editor. Show the cloud cost impact of the code as the engineers are writing it.

So I spent some weekends and built one right into JetBrains - fully free - keep in mind it is new, might be buggy, so please let me know if you find issues. It is check it out: https://plugins.jetbrains.com/plugin/24761-infracost

I recorded a video too, if you just want to see what it does:

https://www.youtube.com/watch?v=kgfkdmUNzEo

I'd love to get your feedback on this. I want to know if it is helpful, what other cool features we can add to it, and how can we make it better?

Final note - the extension calls our Cloud Pricing API, which holds 4 million prices from AWS, Azure and GCP, so no secrets, credentials etc are touched at all.

If you want to get the same Infracost goodness in your CI/CD, check out https://www.infracost.io/cicd

jbs789 · a year ago
I have more macro questions about this. Sometimes I find engineers aren’t best placed to evaluate cost at all. What might be perceived as expensive (say relative to a salary) is not expensive at all in the context of the business problem being solved.

Think there’s a book called “measure what matters” and the idea is what we measure shapes companies and behaviour. So I’d be very careful about implementing anything like this in my org.

rumno0 · a year ago
You're right, there are multiple roles for FinOps in an organization from the engineer up to finance and engineering management.

This is tackling one aspect of this - highlighting the cost to the engineer.

mhuffman · a year ago
Why not provide it to them all then? Have you considered piping your results to a (possibly cloud hosted) dashboard that might offer (possibly aggregated) real-time cost estimates to people higher up the corporate chain? A high-level view of the cost of what is being created, if you will.
pclmulqdq · a year ago
What about money doesn't matter to a company? Why should you isolate an engineer from that as though it doesn't matter?

As an electrical engineer, we scrounged for every cent on devices when they were being released. A TVS diode can be replaced with a capacitor? That's a cent. A cheaper processor? Several tens of cents. Over ten million devices plus the legacy of your design into the next generations, that's a lot of money. Someone else negotiates the price of the TVS diode and the processor, but that doesn't mean you should be isolated from the cost. A thing that does X and is more expensive is worse than a thing that does X cheaply.

Software engineers spend fractional cents on requests executed thousands of times per second. That's the same scale as the electrical engineering example when you do this.

As far as I can tell, most good software engineers are very cost aware. That doesn't mean they don't do stuff. They just understand the cost of that stuff. This does seem to be a big divide between senior and junior engineers, as well.

doix · a year ago
The "problem" with software is that the margins are "too high", so companies _usually_ don't care. The general attitude I've encountered is that the engineering salary dominates the cost, so it's usually not worth spending time optimizing runtime costs.

This is eventually taken to the extreme and you occasionally see posts here titled something like "how we saved millions by doing X", where the thing they were originally doing was extremely wasteful.

For the last decade, we've also been in a "free money" mode. Where companies were happy to spend money as long as it led to growth. Optimizing for cost wasn't a priority.

That has leaked into electrical engineering as well. There were a few products that shipped full Raspberry pis in an enclosure in the name of velocity. The savings possible there were probably in the dollars, not cents, not to mention the supply chain issues. And yet companies did it in the name of velocity.

bongodongobob · a year ago
> Why should you isolate an engineer from that as though it doesn't matter?

Because it's not their job and therefore they don't have the information necessary to know what is or isn't expensive.

Their job is to come up with the best design using common sense when it comes to cost.

Cost of a part isn't the only thing that matters either. Ok, we can save 1 cent if we swap this part out. But now we have to purchase lot sizes that are 10x bigger. How does that impact production? How does that affect operational budgets? Etc.

The engineers engineer and the bean counters count beans. They meet and find a happy place.

Why would you even want that extra workload? The fact that you think it's so easy just goes to show why actual accountants do the accounting, managers do the managing, procurement does the procuring, and operations does the operating.

"I know calculus, accounting is easy!" Sure, if you throw out all of the variables other than unit cost.

rramadass · a year ago
You are very right. Good Hardware/Software Engineers are cost aware at some appropriate level which may not be the detailed bean-counter level. For example, I used to interact with Marketing/Sales folks to get some data on unit cost, sales targets etc. which i then used as motivation to better focus on prioritizing features and time frames. Nothing clears your mind of irrelevant data then knowing what exactly matters as the bottom-line for a company.
kortilla · a year ago
The time you spent scrounging for cheaper parts needs to be compared to the opportunity cost and the actual production scale.

Software engineers, especially at startups, are building proofs of concept that they need to iterate on very quickly. Spending significant thought on reducing opex is an absolutely terrible call in the early stages of dev.

If you have a profitable product, or one that would be if you can squeeze costs, then you play the optimization game.

The difference between electrical engineering and software engineering is that software can be updated after it’s deployed. The ability to get all of those gains later changes the strategy completely

stcroixx · a year ago
Many software companies spend money like they have no care in the world. Inflated salaries and all kinds of silly perks. Feels pointless to care about saving them money when they're going to hire Beyonce to be at the holiday party.
Jgrubb · a year ago
It's performance optimization - you're well positioned to make decisions about execution times and app responsiveness but too often app devs are gatekept away from the cost data. Tools like this try to fix that. This is net good.
gopher_space · a year ago
In this context I'd expect cost to relate to hardware and bandwidth. Simplest example might be bucketing memory or storage requirements against the different tiers of offerings.

Personally, baking this kind of spreadsheet work into a pipeline was a moderate pain in the butt and hazardous to fully automate.

delusional · a year ago
I'd be careful about implementing it without the appropriate support at least. The cheapest option is to do no work, that's not going to get you very far. The cost of the infra always has to be held up against the value of the product.
langcss · a year ago
I like the idea that a PR could surface a cost $1000 a month say then finops reviews that PR.

The dev doesn't worry about it unless it is obviously crazy, I.e. above a team budget. If so they sanity check the code.

lumost · a year ago
A finops person will need to understand the cost and the alternatives. This could add a lot of unnecessary friction to a necessary and reasonable activity.
natbennett · a year ago
Yeah I’m all for engineers knowing about the economics of the business but the people saying “this is ridiculous of course engineers should know what things cost” are substantially undercounting the number of engineers who value their own time at $0
Namret · a year ago
The main page doesn't mention Terraform explicitly (except for the user feedback section). Are there plans to make this compatible with e.g. AWS CDK or Pulumi?
rumno0 · a year ago
Yes, we have got quite a lot of requests for those. On the roadmap for sure!
purple-leafy · a year ago
Good idea mate. This is the kind of thing that should have heaps of users.

I wanted to watch the YouTube video but I didn’t have access to audio, and gave up. Video took to long and had too few visual cues - I think many people will do the same.

So you should make a super short gif (10-20 seconds max) that gets the point across extremely fast and visually - no audio.

Post it on Reddit on webdev, you’ll get a shit tonne of people installing this.

I’ve had lots of success with this simple method (sold a personal project with 700,000 users)

rumno0 · a year ago
Thanks for the feedback - appreciate the comments on the video, I can see that without audio the first minute or so is a bit dull -

Hope this Gif is clearer - https://github.com/infracost/jetbrains-infracost/blob/244ee8...

purple-leafy · a year ago
It’s much improved! My last feedback would be to zoom your editor a lot more so folks on mobile can see things better :)
eitally · a year ago
This seems to be solving a problem that most enterprise software engineers don't have. If you're at a large company that has already chosen its preferred cloud, you're probably already spending $xxM+ with them annually and you probably get CUDs & other incentives to keep your business growing with them.

That said, I've never personally seen any cloud project where there wasn't a business case review that didn't include a review of architectural plans/assumptions and expected cloud service consumption profiling. I think what's different here is that you can help engineers close a feedback loop that is often left open between when a project is planned & scoped and when 1) the landing zone (or data pipelines) is created, and 2) when the app/system is moved from test/QA into production. This could be helpful for the project/product manager, especially, because anything that looks out of whack with the forecast should be escalated promptly.

rumno0 · a year ago
To a certain extent I agree - I've worked on projects where a resource amounts to a rounding error in the overall cloud bill; for many organizations, cost is an important NFR for a project.

Going off the other threads of this post, how much engineers should know or care about billing seems to be open for debate; I think an engineer needs to appreciate that often cost is one of the many trade-offs that need to be accounted for

bearjaws · a year ago
This is amazing, I think it's best applied at CI/CD first, but having the plugin is good too for ICs to get it into a company.

How "smart" is it? Say I make a copy of a large database in TF and redeploy it into a staging env, will it know that the storage is $200 a month?

Also maybe put the supported clouds on the front page? I work multi-cloud so was worried it was only AWS.

rumno0 · a year ago
Hey - great feedback!!

If you're using tfvars for your envs, its "smart". With easily inferable env names for tfvars, we will generate estimations for each env.

In the video, I give an example where for the prod env, I turn on multi-az and have a larger storage and the price goes up.

Good suggestion about supported clouds, I'll update!

rbro · a year ago
Looks great based on the video!

As a data engineer in a consulting company: this would be a good way to get an idea of cost once we've written infra for projects.

Couple of questions:

1. Is Bicep supported?

2. Any plans for a VS Code plugin? (I just saw in your docs you have a plugin for this, great!)

3. How are you handling pricing of resources that are dependent on consumption?

rumno0 · a year ago
1. Not at the moment, but we're looking at other IaC tools to support on the road map.

2. There is a vscode extension - https://marketplace.visualstudio.com/items?itemName=Infracos...

3. That is a challenge, we use usage files, but in the future would like to pull it from the cloud account to be more accurate and the best suggestions. https://www.infracost.io/docs/features/usage_based_resources...

manmal · a year ago
Looks great! The markdown link to your site is broken.
rumno0 · a year ago
All fixed, appreciated!
blorenz · a year ago
I just installed to test this out and my cost isn't being calculated at all. I took a ekctl yml file and had chatGPT convert it to a terraform file; the terraform file validates; but nothing is discovered by Infracost plugin. I have it off my <project root>/deploy/terraform/. I wish there was some more feedback from the plugin why it cannot locate or visualize my cost.
rumno0 · a year ago
I just gave this a try with https://github.com/eksctl-io/eksctl/blob/main/examples/01-si...

ChatGPT gave me a decent chuck of terraform and running Infracost against it gave me a $515 monthly cost.

If you go to the settings of the plugin and get the absolute path of infracost binary then run

infracost breakdown --path .

in the dir with the terraform, does it give you a breakdown?