I am a Computer Science student and I am developing a Flask app and trying to deploy it on the web with Google Compute Engine.
From what I understood, between the end-user (client) and my Flask app, there is at least 2 major elements:
(NGINX, Apache)
(Gunicorn, Uwsgi)
Flask
)I went on multiple websites to look what web-servers they were using and I saw a lot of Amazon S3
web-server. Does it means that Amazon has it own Web-Server or they are using NGINX under the wood? I am extremely confused about it.
Amazon S3 is an object storage, quoting from the Hosting a static website on Amazon S3 page:
You can use Amazon S3 to host a static website. On a static website, individual webpages include static content. They might also contain client-side scripts. By contrast, a dynamic website relies on server-side processing, including server-side scripts such as PHP, JSP, or ASP.NET. Amazon S3 does not support server-side scripting, but AWS has other resources for hosting dynamic websites.
On the other hand, AWS offers a wide range of services to host websites which you can see here.
Thanks for your answer it's clear. So I have a Flask App, I can host static files (public_html) on Amazon S3 and the leftover on a Uwsgi for example?
Yes, depending on the requirements you have your options from the Flask app are Lightsail (less demanding/smaller requirements), ECS with Fargate or EC2 Instances. You can host your static files on S3, but depending on the amount it might not be worth the effort.