Ask HN: Best free compute and other resources for startups?
I'm interested in pursuing a few new concepts, and I'm looking for the best free resources for startups that aren't going through an incubator. Specifically looking for free tier or startup credits beyond what AWS / DO / GCP has to offer, or for off-the-beaten-path programs that single-founder startups might be able to take advantage of. I'll be using Stripe for processing any payments.
What do you folks use when you're looking to stand up your MVPs?
144 comments
[ 2.9 ms ] story [ 197 ms ] threadsecurity might be too much of a concern for some applications
Running a server at home is fraught with peril but if those downtimes are ok, then go for it.
You can also buy two.
I don't think so. AWS Lambda has a generous free tier and runs on infrastructure that has constant monitoring by professionals, spread across thousands of machines in multiple datacenters all over the world, with an SLA.
Your one (or two) servers that share a single consumer internet connection (with no SLA) will never be more reliable.
Yes, you can get more powerful, but again, that's a business decision you have to make. Do you want power or reliability? If uptime is important to your business, then running it at home off of consumer internet is not a good idea.
You need a backup plan for paid services too.
Was this a business or consumer account?
Do you only have one ISP?
Sure, CPUs are cheap and (if you’re lucky enough to live somewhere that’s offers it) consumer internet can be absurdly fast. But if youra app goes down at a critical moment because your consumer-grade ISP has an outage, or someone tripped over the Ethernet cable, or you had a brown out because you live in the UK and everyone put the kettle on at the same time, you’re going to look like a bit of an idiot.
I did all of this for my family's software company 20 years ago. We were serious about it, too: SDSL line (good at the time!) with an SLA, natural gas standby generator, redundant hardware... never again. I spent all my time futzing with infrastructure rather than producing any business value.
I did learn a ton, and that continues to be valuable (it surprises me how often I'm the only dev in the room that has experience configuring IP routing). But it's a huge time-sink, and I'd never consider doing it to save money (the amount of money saved would be marginal, at best).
Personally I’ve been using $3 Lightsail instances on AWS. There’s a lot you can do with one CPU and half a gig of RAM. An MVP Rails app will squeeze into that easily enough.
Step out of your Silicon Valley bubble and recognize that this doesn't apply to everyone.
I only have 30 megabit up/down with Frontier. I can get faster, but it gets expensive quick, and I don't need more than 30 mbps, even as a gamer. Xfinity only offers 150 megabit down in my neighborhood, with a puny 15 megabit up, and for twice the price.
And as others have mentioned, it creates a single point of failure and if you get hacked, your entire home network is compromised. The last thing you want to have happen is for some unsavory type to decide they don't like you or your services and DDoS your home internet connection. I've had it happen to me and it's not fun.
I worked on a startup, out of a dude’s house, he also owned the house next door.
I had three separate FiOS ONTs connected to the rackmount server in the living room.
Lots of live video streams.
The accounts were business, so when the gardener slices one of the fiber cables, it was fixed in a few hours, and the other ONT was still working.
My other buddy lives 2 hours away and has symmetric 1Gbps service for $50/mo in a rural area.
I would love to be able to have a symmetric connection.
* Electricity costs for networking/compute hardware often equal VPS costs
* Massive single points of failure WRT power, compute, networking
* ISPs don't like when people run their businesses over consumer networks and will retaliate (forced to change to business plan, account terminated, etc)
* Vastly increased overhead managing the full infra stack (power, HVAC, networking, compute, firmware, OS, etc)
* Massively increased security liability (your site goes viral and now Hacker News and Reddit are sending traffic to your house, on the same network where your personal laptop with your CC info saved on it lives)
XaaP services abstract away so very many of these concerns for prices that oftentimes are below what you pay for the electricity to run your own infrastructure.
I also remember downloading quite a bit of MP3s hosted on an SFTP server in a friend of friend’s dorm in Philadelphia.
It's also pretty barebones in terms of upsold services, but apparently the customer support is pretty top-notch. I'd take a look at it.
> The $50 credit can give you up to 10 months of hosting on our 1GB plan. You can also use the credit towards our add-on services such as backups, Block Storage, or NodeBalancers. Use the promo code today!
So they mentioned 10 months in the email, and I searched a bit further and didn't see anything about service credit expiration. You can also get service credits using referrals, coupon sites, and even blog posts:
https://www.linode.com/community/questions/8788/share-your-l...
Airbnb cereal and all that. https://medium.com/@austincoleschafer/a-short-story-about-ho...
The next best is Heroku's free tier.
It's cheaper than hiring an operations team, but it's a heck of a lot more expensive than, say, dokku on a Digital Ocean or Linode VPS.
MongoDB Atlas has a free cloud database tier: https://www.mongodb.com/cloud/atlas
Tooling
For CI I bought a cheap Intel NUC that just sits on my table and runs Drone, Node-RED, my testing environment server.
1. Here from Drone I get all the test pipelines and most of my executable/docker image builds at a much better speed than I would get with Travis, CircleCI and so on. My desktop runs a Drone agent too, so never waiting too long for new builds. 2. Node-RED is used for various automation tasks such as healthchecks for all my services with rate-limits, a bit more complex checks (rather than just simple /health or /status endpoint ping), mailgun webhook handling, github brew formula updates and so on. It does control my TV too :D 3. I also run some tasks on Google Cloud builder which is free and fast. 4. Uptimerobot is also used (http://uptimerobot.com/) as it provides free, second opinion whether my services are down or not.
Compute
For compute I opted for GKE (at the time it was the best managed k8s you can get (and it's still probably is)) on Google Cloud with 3 1vCPU 3.75GB RAM VMs. That gives me plenty of resources to run my stack and any additional side-side-project on it. I tend to code in Go so I don't need much resources. I use managed postgres as a database so I can sleep peacefully.
For additional services I ended up choosing Vultr (https://www.vultr.com/) as they have many regions available and their pricing is really good. There is a nice, non-official CLI and so far their uptime was quite good (few issues but nothing major).
It really depends how much time you want to spend on ops. If you are fine with doing quite a bit of ops, go with Vultr or any other cheaper cloud provider. If you want to spend more time on features, go with GKE and fully automate deployment. Git push -> Google Cloud Builder -> Keel (https://keel.sh) -> new version deployed :)
Namecheap does free ID protect for domains.
PayPal offers a good micro transaction fee rate if you plan to do small ($10 or smaller) transactions.
You can use services like Algo or Streisand to set up a relatively secure auto configured Wireguard VPN.
Nextcloud gives you a HIPPA compliant personal cloud for email, calendar, chat, etc.
GitLab offers unlimited free private repositories and some basic CI.
At OVH you can have a Intel Xeon D-1540 (8 c / 16 t - 2 GHz / 2.6 GHz) with 64GB ram for like 90 Euros/month + VAT (US link: https://us.ovhcloud.com/products/servers/infrastructure-serv...)
https://about.gitlab.com/solutions/google-cloud-platform/
Most of the cloud providers have some kind of startup program, where they offer free credits to startup.
We (my company) got credit benefit from IBM, it's been a real savior for us. You can check it out here https://developer.ibm.com/startups/
I'd go to Azure over IBM Cloud, and I have perturbed many electrons about how frustrating Azure has been.
I´ll miss it, it was a pretty awesome program.
However, be weary of Linode's "backup" service if you intend to store a lot of files (as opposed to lots of data / large files). It's file-based (not block-based) backup, and I can confirm it does fail. In our case, we weren't storing tiny files either, they were images uploaded to our infrastructure. Granted, don't do that(!), use S3.
Also, regarding AWS/S3, there's a plethora of ways to get into AWS's Activate program (https://aws.amazon.com/activate/) which includes a decent chunk of free credits.
Huh? Wouldn't it be a lot better to be wary of that service, thus lowering the risk that you'll be weary of it at some point?
My pick for MVPs is AWS Lambda. It's very easy to get up and running, and you get access to the rich AWS ecosystem. Yeah yeah, the "unlimited scale" benefit will be great when you're accelerating user growth, but that's not why its a good pick for MVPs. Need a cron? Not too bad on App Engine, but pretty hard on Heroku. Cinch on Lambda. Aggregated logs? Easy on most managed platforms. How about distributed tracing? Ridiculously easy on lambda. Need a quick queue? Horrible on heroku, alright on google cloud, but on AWS? Create one on SQS, wire it up to a lambda, done. There's a learning curve, but the power of the AWS platform is really what makes lambda a great choice.
LocalStack tries, but IMO it's not great.
This is acutely top-of-mind for me because I used to run a devops consultancy and I currently head devops, including release management, for a startup built heavily on AWS Lambda. I am doing my level best to reduce the loop as much as I can for the dev team.
It's still way, way slower than control-S. And always will be.
I test the lambda body locally with a single command. Only upload a new zip when you hit the release candidate stage and that's not frequent enough for the few seconds it takes to upload to lambda to be a problem.
And an API.
And a website.
And a CDN.
And...
And if you get as far as CloudFormation I just have one word of advice. Run!
It's ugly. It has a TON of powerful functionality that the documentation dives into way too early for most people. It has some weird behavior, especially when you get into networking or stateful resources. It's not perfect. But it gets the job done.
CF's limitations are in part due to the fact that AWS services are all independent entities and the interoperability services have tremendous difficulty getting other service teams to do their part.
The CloudTrail team, for instance, went to great lengths to furnish documentation for other teams to configure their API logging; I know our team fucked it up repeatedly because it was always an afterthought.
You can see in CF that some resources are basically useless, and are plainly provided by CF so that the service owner could check a box. Read "Updating DB Instances" here[1] and then look at all the properties that require replacement.
CF's design reflects this reality. It does not try to understand how services interact or what objects are. Rather, a "resource" knows how to set up and teardown and a few other operations.
If you manage resources exclusively through CF, it can handle most simple use cases. Which is the other limit of CF: by design, they're trying to keep their core invariants simple.
For instance, CF offers no mechanism to stage deploys. As an example, the popular Serverless tool has to initially construct a stack with just an S3 bucket, and then issue an update to that to include your actual stack.
Internally, we proposed doing staged deploys (because wound up hacking them together) and they weren't interested. And I think that's because they would rather keep the API simple even if it means users move away from CF; possibly a consequence of a loss leader business model.
So, yes, CF does get the job done at first, but you will eventually find yourself outgrowing it.
[1]: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGui...
It's easy. But if that's too much for you, the serverless framework has some nice plugins for all of it.
And local development when you've opted to use systems like Cognito are well beyond its scope, unless someone has something very clever that I haven't seen.
From a lot of experience doing this on AWS and on other clouds, I have learned that it is better to use systems that you can operate, and then use hosted versions where applicable. RDS is great, but it's great mostly because you can run PostgreSQL locally and inspect its brain. DynamoDB, SQS, etc. tend to be untrustworthy and should be avoided unless you have a bulletproof story for local testing (and none of the fake implementations are bulletproof).
(I actually have an answer for local dev with Cognito because my current employer already had Cognito when I showed up, but it amounts to "have configurable signing keys and sign your own JWT in dev".)
Our local tests' leaky abstractions don't care about anything happening upstream. They only care about testing our core "agnostic" logic.
This enables you to, with a little more effort, swap out the Interface Adapter part with, say, a CLI. Or, if you ever want to get off lambda, its a bit easier as well.
Mocking out dependencies, like S3 buckets, isn't worth it during a prototype/MVP. As time goes on, sure, go for it. But early on, just use AWS. Don't use localstack or any of the other various tools that try to replicate AWS. They're all going to get it wrong, hopefully in obvious ways, but usually in subtle ways that'll crash production, and you're just creating more work for yourself. Just use AWS. Just use AWS. Just use AWS.
Then, everything is once more tested using AWS. I stay away from replicating AWS services locally.
It greatly simplifies refactoring and overhauling the core itself, as well as trying out new approaches.
(Also, getting a bit further away from that, I find API Gateway kinda shifty and I dislike that it's so hard to run something like NestJS inside of Serverless. Doable, there are examples, but it kinda sucks.)
Are you saying you need an environment to test in that is 100% disconnected from the internet? Given the interconnectedness of APIs in 2019, that seems like making things harder than necessary.
For personal projects, having to futz with Pulumi--and, I should note, Pulumi is the one I like--just to write some code on top of a web server just really sucks. Iterating on a heckin' cloud template just to be able to write some code sucks. Waiting (and as somebody who works on devops projects primarily at work, I am very familiar with how long one waits) destroys motivation to work on anything, both at the start of a session and in the middle--like, blowing away all those dependencies when I need to reset takes way longer than `docker-compose down && docker-compose up`. I am also incredibly cheap for personal projects, because I cannot rationalize spending money on something I'm not certain I'm going to ship, and so I can't adequately ensure that AWS is not going to start dinging my credit card for resources.
I think things like the AWS SAM or LocalStack do a decent job at this. But, maybe more importantly, it requires a shift in developer thinking. Screw local development; yeah, I'll invoke locally during prototyping, but once the essential structure is done I'm going to deploy it and test directly on AWS.
I don't find the feedback cycle due to deployment time to be a blocker. SAM can deploy a function in 10 seconds. Its not an instant code reload, its not ideal, but its also not context-breaking like a 2 minute deploy would be (to be fair, SAM is capable of 1+ minute deploys, but that's usually only when you're adding new AWS resources like new buckets or event invocation rules, not when you're just changing the function code).
This post talks about how our team experienced much of what’s in this thread and what we built to solve it: https://www.stackery.io/blog/how-do-we-setup-a-proper-server...
VS Code folks seem to be pretty excited about our plugin https://marketplace.visualstudio.com/items?itemName=stackery...
We’d love to have you give it a try and let us know how it works for you.
The problem that I have, and it is probably intractable is 1) I don't want to manage developers YOLOing dev stuff around at work and having a gigantic bill show up because a developer randomed something expensive and didn't know/didn't care to monitor it, and 2) I don't want to deal with the expense or the slowness (of deploys and redeploys, and that includes the AWS resources--ever gone "ugh, I need to burn this down and start fresh" on a dev environment in AWS? it takes forever) of using AWS for development on personal projects.
Visual tools: If you are proficient at writing CFN templates or have found another tool to do that, cool. FWIW, our customers tell us they find the visualization useful when onboarding other engineers onto a project and then when they have a split screen between the template and the visualization to see how the CFN template is built.
Yoloing Developers: Heh. I'm stealing that phrase. But seriously, this is a common concern and a reason why managing accounts and namespacing for dev/test/staging/prod environments is a big deal. (plug - we do that too) At AWS dev managers get daily reports on the cost of each developer's accounts. While serverless tends to be much cheaper for dev environments than containers or EC2 instances, there are indeed ways to run costs up.
Deploying and redeploying: That's precisely why our CLI enables development against live cloud resources. When you use stackery local invoke, it assumes the function’s IAM role and fetches the function’s env var values. This enables rapid, and accurate, local function development. On the infrastructure side, it's common for our users to make up to 5 or more changes to their architecture in a day. The more you can do with the building blocks, the less code you need.
Thanks for taking a look.
Also: http://www.lowendtalk.com
Some other services not mentioned there that I've used for free recently:
- humio cloud for log aggregation
- nodequery for server monitoring (though its future is unclear)
- braintree used to waive a big chunk of payment fees ($50k?) for startups, but I'm not sure the program exists anymore
Beyond things that are literally free, I'm a big fan of cheap vps providers if your uptime can take it and you can do your own ops. One of my projects makes ~$200/month and is hosted for $6/year on a 256MB vps. Lowendtalk/Lowendbox is the usual place I find these.
I generally run one instance + sqlite and accept the downtime. The next step up might be two vms across two providers + a cheap managed db.
I don't think I have any super strong recommendations. I did become a fan of BuyVM recently due to their $1/month shared sql plan. But, they're apparently they're planning to retire it, which puts them at a similar price point as something like vultr.
The company went bankrupt in less than two months. I didn't even bother to wonder why.
They do lag behind in terms of security updates, however. Not something I'd use to store anything of real value in these days of SPECTRE, ROWHAMMER, ZombieLoad etc.
I disagree! Learning experience and posting about it aside, almost a year later it's still running at $0pcm?
You, what, doubled to tripled the setup time? And cut annual running cost from let's say $5*12 = $60 (plus taxes over there?) for some cheap but not free tier hunting setup.
Seems that it was worth your while to me. Obviously increasingly so for as long as it can survive (the companies don't fold, or stop the free tier).
On other hand, I think I'm much lazier when it comes to marketing them since there's no urgency to make a profit.
https://firebase.google.com/pricing
I'm hosting my game servers today on $1000 of free credit from this program. If you have VCs and whatnot, they'll be able to get more credits out of the same program for you, but this was great as a solo founder.