Which is the best method to communicate with an arduino from a FrontEnd-Backend

Hello Everyone!

I have a question to ask that I have been asking to myself the last 3 months and I could't find a correct answer for this. Maybe because there is not a correct answer, but here it goes.

I'm creating a product by using an arduino nano. I need to communicate from Arduino to a Backend-> FrontEnd and vice versa.
From Arduino to Backend is fine (I guess), I'm just pushing the data from the Arduino to the Backend by hitting a cloud API.
What I could not solve is how to communicate from the Front-End to the Arduino? It means, when I press a button in my Front-End app, I need to tell to the Arduino to do something.
I'm not talking about creating a local webserver on the Arduino and using javascript to change states. I'm talking to a cloud service that needs to be communicated all the time, therefore, the webserver with the Backend and FrontEnd are hosted out the Arduino.
The first approach was, ok, I will hit an API GET Method and when something changed in the backend (Like someone hit a button in the FrontEnd and the action was saved in a DB), then I will turn my "thing" on.
But is like, there will be a delay and it will depend on how often I'm executing the GET Method from the Arduino.
Then, I'm looking something different and I'm not sure if what I'm talking is about websockets.

For example: When I turn on a wifi lamp from its mobile app, the light turn on immediately. How does it work and how I can apply that technology to my device?

I was thinking on using mosquitto subscriber client/server, but is how companies solves their communication diagrams?
Also if I use mosquitto, how can I handle multiple users? The product will be living on different locations with multiple users which will be communicating against only one server.

Thank you in advance,

If you want rapid turnaround from your front end, you need to be polling frequently or have a socket open. Your users probably won't want to poke a hole in their firewall. Look at Blynk. MQTT is another possibility as you surmise; give each nano their own channel to communicate on.

I guess I finally understood how to communicate the Arduino with the API and vice versa. Thank you for the clarification.