I have a massive Laravel application that consists of a dashboard where users may store a variety of complicated data sets across more than 100 tables in the database. It also has an API for mobile apps that can handle up to 300,000 requests per minute. Since everything is housed on a single AWS-hosted EC2 server, including all app images, corporate logos, dashboard resources, and mobile app api, I'm experiencing speed concerns as the app scales. I need an answer to this issue. Should I separate everything into distinct machines? How, if so?
The entire application is now running on an AWS EC2 12xlarge instance using PHP 7.2 and Laravel 5.5.