Excluding my bias since I work for Strapi, I have been using it long before I started working for them. I first started using Strapi in a production environment 3 years ago and have kept the application running since. A my peak I handle about 3 to 5 million requests per week however I average about 800k to 1.2 million a week.
Strapi is absolutely capable of being used in large scale production applications, however I would caution you that the cheapest server/hosting you can find will not hold up to that. Strapi itself is only a small piece of the puzzle (the easiest part ). But the bulk of stack that has to pull the weight is the database.
I have a 5 node MariaDB Galera cluster (2x write, 2x read, 1x Arbitrator) along with a dual (active/failover) ProxySQL configured to split read/write. That also combined with the community Redis LRU cache middleware.
My actual Strapi implementation is 3x 6 core, 8GB of RAM virtual machines each running pm2 in cluster mode with 4 Strapi instances (in total 12 Strapi instances for a single environment).
What is possible with Strapi is limited to how you are hosting it, using various other applications to increase performance. I’ll make the analogy of:
Do you want it fast, easy, or cheap? Pick two. In my case, this is a hobby project however I landed on the fast and easy and I spend roughly 150$ to 200$/month for my setup.
Here is a rough layout of the design (it’s very high level):