Ask HN: Should a solo developer use AWS for his public side project?
I am working on a side project that I intend to launch soon and I am starting to thinking about the "sys" part of the project.
I need pretty basic setup (a db server, a redis one, one for the rails app and a CDN). I am not a sys ops expert but with some work I can set these servers up.
I don't want to use highly managed solutions like heroku, they are too expensive and knowing that I can set up on myself, I want to avoid this high expense.
On the other hand, something in the middle, like AWS has my attention. It would give more flexibility for sure, and I would like to learn it, but their opaque pricing it scares me a bit.
I would like to receive advice for people who can understand my position as a solo developer (with a basic European wage) and who can't afford to spend 100/more euros/month for a project until it pays for itself alone.
24 comments
[ 3.8 ms ] story [ 60.5 ms ] thread- You can use AWS but you will no doubt spend a lot of time figuring out stuff, BUT if you think it is fun and if you can use it to further your career then it makes total sense!
- If your focus is on the development and not a side project you should really go with something hosted like Heroku because you will be able to spend much more time on development instead of configuration and be spending time worrying if you have done it correctly. Heroku is pretty cheap for what you get in terms of hours saved but you are giving up some flexibility, no doubt!
If your project lifts off and Linode doesn't cover you, you can look at AWS then.
I've been looking at DO and something that strikes me is the 20% backup fee, with ebs, the thought backups never even occurred to me. Maybe they should've.
Aws pricing, I found this useful: https://calculator.s3.amazonaws.com/index.html
That said, once your product outgrows simpler infrastructure I'd wholeheartedly recommend AWS. For the past few years I've been using AWS for my day job and side projects. Prices are competitive, and once you're past the learning curve, you'll have a great deal of flexibility.
> I would like to receive advice for people who can understand my position as a solo developer (with a basic European wage) and who can't afford to spend 100/more euros/month for a project until it pays for itself alone.
Heroku is $7 a month (not counting 1000 hours free) for a dyno, $9 a month for a 10M rows Postgresql database and Cloudflare is free so it's very affordable to start with in my opinion. How much is your time worth? You can make it a bit cheaper with AWS probably but you'll pay for it with your own time and it'll probably be less robust unless you know what you're doing (e.g. coping with server failure, backups, rollbacks, security, deployment process, scaling, logging).
I like Heroku because it's simple. You can mostly just focus on your code, leaving server and infrastructure configuration to the defaults and know it's going to be robust and secure. AWS and even Digital Ocean have a lot of customisation and complexity which just means more things can go wrong which will eat up your time when you could be coding.
Then my projects would die because I spent far more time doing this than writing application business logic. The classic "solving scaling problems with zero customers".
Heroku is expensive when you have scaling issues, but until then, it's $7 a month with the free Postgres and Redis options...
Almost, dynos don't persist filesystem changes but for databases you're suppose to host the data elsewhere (e.g. Heroku Postgresq, AWS RDS, AWS S3) and that data will be persisted. This is by design and a very good strategy for production systems as you can then easily scale by adding more stateless dynos later. All configuration for your dynos is stored and versioned in Git and all your important data is stored somewhere robust with proper backups and rollbacks.
If you've advocating storing your state on the server itself by e.g. using AWS EC2 or Digital Ocean, you're going to need your own strategy to make sure you don't lose any data or configuration settings (e.g. packages, config files) when your server box fails and storing state on the server means you can't easily horizontally scale.
When Heroku doesn't let you SSH into active servers, only lets you deploy via Git and doesn't let you store state on servers, it's done intentionally to force you into making good choices that scale.
1- For DB server you can you RDS free tier I would say it would be enough for a side project
2- For Redis Instance you can use EC2 free tier to run single Redis Instance or you can try Amazon elastic Cache as well
3- For Rails app depending upon your need again you can either use free tier server or whatever suits you check different AWS EC2 instance types https://aws.amazon.com/ec2/instance-types/
4- For CDN you have to use Amazon S3 first and that would cost you and cost depends upon usage + storage, since its a side project bill won't be too much
Happy Deployment ;)
Personally I've never found a reason to use AWS/Azure/GCS for small projects, they're just too costly.
AWS is a great great thing, but has opaque pricing and a lot of nuance to getting everything running smoothly. 99% of projects can survive on a single beefy server for a long time before scaling becomes a concern, at which point that is a good problem to have. Don't make it a bad problem now by making things too complex.
I'd go with the cheapest solution, like a digital ocean droplet before going to a more expensive (but more fully featured) solution. You can always switch later.
I took us to AWS to take advantage of things like Redshift, Aurora, etc. Prior to AWS, we just had our rdbms, redis, app servers on relatively inexpensive Linode boxes.