Hacker News new | ask | show | jobs
by cmurf 2884 days ago
Is it generally reliable asking Amazon support what capacity you need for a particular use case, so you're not buying more than needed? e.g. a service that might be used once per day for a minute, and another day it might get used a dozen times for maybe an hour, and only during fixed business hours. And there are general purpose, compute optimized, storage optimized, etc. But what if the service is more network latency sensitive than either storage or compute sensitive?

Or are there 3rd party estimators that do a better job of telling you what kind of instance to get? Or just pick a general purpose instance, run it for a week, and then tweak it?

4 comments

I am on GCP but I usually request/allocate more and once in production for a few weeks, I can turn some things down and others up. That is if your product/setup is new and you aren't sure how everything will interact once live (in terms of perf).

Otherwise, for Lambda there is on Github a repo with a script that will publish your code in every configuration possible, run stress tests, and only keep the most optimum (perf/cost).

Hi, could you share the link of said repo?
I searched around and closest I found was https://github.com/Nordstrom/serverless-artillery
> Is it generally reliable asking Amazon support what capacity you need for a particular use case

Everyone's use case is different, they are not experts at your application, you are.

Spend some time learning about the various services, do a deep-dive and maybe even a prototype on the ones that look interesting. There are literally dozens of ways to build any application, depending on what your goals are (low cost, low latency, low maintenance, etc)

> run it for a week

Run it for an hour, you should be able to quickly get a cost/benefit.

There are a ton of instance types, but you generally only need to test 2 or 3 families, and 2-3 sizes. (Do you need lots of RAM? CPU? Disk? FPGAs? GPUs?). It's worth the time to automate this, so you can periodically test it. (Yes, it will cost you a dollar or two.)

> But what if the service is more network latency sensitive

Don't forget your own part of the stack here. Writing in a scripting language can add miliseconds, as can normalizing your data (i.e. NoSQL usually prefers de-normalizing, which trades off more duplication for lower latency).

You can also pay (extra) for no hypervisor.

I think you will have to buy premium support https://aws.amazon.com/premiumsupport/ or spin up an instance around what usage you expect and then analyze your bottlenecks to swap it later on.
What I do is first automate setting up an instance from scratch, then launch a variety of instance types and benchmark their performance at the task I want them to perform.