5,556 karma · joined July 10, 2013
The good news is you should stop worrying about this stuff, and just build. You'll eventually run into bottlenecks and can address them then. That's how best learning happens anyways. Premature optimization is fun and intellectually stimulating, but rarely gets you closer to delivering value.
My rules of thumb for starting out:
- Start with a monolith (microservices are great for certain problems, but it's very unlikely you'll have those problems in the beginning, and they add quite a bit of complexity)
- Use a relational DB (same caveats as above for NoSQL, RDBMS can handle search well enough early on as well)
- Use managed services as much as possible (cloud > managing your own hardware, RDS > managing your Postgres instance, etc). They typically have sensible defaults, provide greater security/scalability/availability, and let you focus on the product.
- The fewer independent moving parts in your architecture and infrastructure, the better. Let the complexity add over time, as needed.Dune and sequels by Frank Herbert are the next logical option, with similarly large scope.
The Expanse series by James S.A. Corey is great, set in the solar system in the near future.
Andy Weir's Project Hail Mary and The Martian are super fun reads, technically fulfilling the "not on Earth" requirement. Both are about one person's overcoming great odds, so a very different brand of sci-fi.
Eventually I stumbled on the idea of running the VPC-requiring commands from an AWS CodeBuild script, and invoking it from a workflow executed on a GitHub-owned runner. Works beautifully and I was able to remove a ton of complexity from my infra that this Terraform module adds.