Am I missing something important?
Micro services also utilize these databases and frameworks.
If you have to have several hardware servers, I don't see why the application server itself cannot contain basic boilerplate code to coordinate communication between the different instances of itself that are running on different machines.
You want offload your non-time dependent requests to other machines to handle without slowing down your request processing on the web servers.
Also most queues provide a mechanism distributing load and autoscaling.
Asynchonous tasks like sending emails and processing credit card payments. Example, user signups, and your flow is to send a welcome email. You don't want the signup response to wait on sending the email for example. So you drop it on a queue to be processed "later".