I'm not saying learn CloudFormation, CodeDeploy, or any of the hardcore DevOps stuff you'll be interested in once you start to scale.
But you need to know how security works (i.e. IAM), how to build networking infrastructure (i.e. VPC), how to deploy servers and databases (i.e. EC2 and RDS/DynamoDB). And, of course, how to do things cost-effectively.
If you don't take the time to learn the cloud, you're going to be stuck when it's time to push your project into production. So you're going to need to:
1.) Hire a cloud architect. This isn't cheap nor is it a good solution. If you ever part ways with your cloud architect, you're going to be starting step one all over again. Except now you have to learn how the cloud works and how your environment was architected. And that's assuming your architect doesn't maliciously make a mess of things on the way out (which happens -- A LOT).
2.) Open a support ticket for every little issue you run across. This can easily become a blocker with deployment. Not to mention you're likely going to have a developer support plan. Which means you get email-only support and the replying support engineer may not even be in your timezone.
So not only do you have to deal with the inefficiency of back-and-forth email conversations, you may have to deal with the time lag based on the engineer who works on your case.
And if you're running a small/solo shop, you really need to learn the basics of that cloud vendor before rolling out on the cloud platform. I see too many people roll things out on AWS without any knowledge of the platform whatsoever.
Then go through the Certified Cloud Practitioner course. That will give you the very basics.
Once you're done with the CCP, you can move to the Solutions Architect Associate course. You don't have to get the certs (although they are useful). But the courses will give you a good understanding of AWS.
Just to be clear, that's about 50 hours of content. But I suggest being over-prepared rather than under-prepared.
acloudguru.com cloudacademy.com
I will always appreciate AWS for how I can rely on it in production, but it definitely require a lot more verbosity and configuration than it needs to. I wish we would remember the product design lessons DHH taught us. Convention is preferable to configuration when possible for a reason. It reduces unnecessary complexity. It makes it easier for your brain to work with.
If you want something managed that requires minimal time worrying about infra, they're a great choice. For something that truly requires low costs per user, I wouldn't use them but they make a ton of sense for many projects.
And to be fair, AWS also has some serious limitations in terms of price scalability compared to a VPS like Digital Ocean or Linode: https://questinglog.com/costs-are-part-of-scalability/#just-...
With AWS although you have to pay the premium on egress, you don't pay that until you leave their sandbox; what's more, you can add links into your VPC that sidestep it. If you're just running open source software or a kubes cluster on commodity boxes and you're fine owning all of your operational burden, sure. Use whatever you like. But if you want reliability and good DX, your options get narrower.
Personally, I think that AWS Code Suite and VS/Azure spaces (and GitHub spaces by proxy) are going to be the real challengers in this space. There is a real UX problem to solve but it doesn't mean I want to necessarily use a different platform.
If Render is good enough for Stripe's production workloads, then it's good enough for mine.
It's about ecosystems. Heroku has a decent ecosystem, but nowhere near AWS or Azure. I find it far more likely that AWS and/or Azure will improve their ecosystems to attain parity with the gold standard Heroku (or Render for you) DX in the small but which can scale all the way up. But you may find that a tall tale, and if so I would understand. The track record on the AWS/Azure side isn't great. But the latter did acquire GitHub, and I fully expect them to exploit that. I would be surprised if AWS lets them 1-up their incumbency through that vector without neutralizing it.
React itself is fine and relatively straight-forward, but its ecosystem is massive and there are many competing options for several accompanying libraries. AWS includes a powerful array of services, but it's considerably more time-consuming to learn than other hosting options such as Render.com.
I'd say your best bet is to just use an MVC-ish back-end framework and sprinkles of JavaScript. Once you've done well enough to hire a few engineers, then maybe start thinking about React, AWS, more complex devops, etc.
At the beginning, the most important thing is speed.