There are a few ways to deploy an application to production in 2022.
One way is to go to AWS and get an EC2 instance, (or go to DigitalOcean and get a droplet), install a bunch of stuff, and then run your server. If you do it this way, you have to deal with stuff like firewalls, nginx, annoying proxies, etc. In cloud computing speak, this is considered IaaS (Infrastructure as a Service).
Another way is to use a PaaS product. PaaS stands for platform as a service, which means that everything below the application has been abstracted away for the developer – you don't have to worry about monitoring and maintaining servers, setting up middleware, or dealing with runtime environments.
Examples of PaaS include:
The fundamental trade-off between using a generic VM like an ec2 instance or a droplet vs. using a PaaS product is customizability+cost vs. convenience.
Let's take DigitalOcean as an example. To deploy a Flask application on a DigitalOcean droplet, you have to follow all these steps.
To deploy a Flask application on DigitalOcean App Platform, on the other hand, you only have to follow these steps. The app platform automatically detects that your github repo contains a python application, and performs many of the configuration actions for you.
On the other hand, DigitalOcean App Platform turns configuration into somewhat of a black box. You can customize some stuff using the app spec, but it's not nearly as flexible as just ssh'ing into the box and doing whatever you want with it.
Finally, a droplet is only $5/month, while App Platform is $12/month, so you do pay for the convenience.
In general, unless you really need the customizability, I recommend that you just go with the PaaS solution. There's a high chance that you mess something up in the configuration, and it's worth the extra $7/month to not have to worry about it.