In the beginning, there were physical machines.
Like, actual computers sitting somewhere in your office that you had to configure, maintain, etc. You used them to serve your website or web service to people.
Then there were off-premise managed hosts, I guess. They’re your computers (or at least for the time you’re paying for them), but sitting somewhere else, managed by someone else.
You’d pay some company to manage a server for you that they had in some building with a bunch of other computers. Maybe they have just hundreds of computers. Maybe thousands. Whatever.
Then there was EC2 from Amazon Web Services. Basically, Amazon has a shit-ton of computers - really just little machines sitting on racks in huge “farms” wherever - and they let you rent their computing resources.
At this point, there’s really no concept of your machine sitting on someone else’s premises. You’re just renting raw compute power (mostly). Amazon can’t even point to which machine is yours.
Your computer might actually just be a logical division of some machine on a rack somewhere which has ten other “computers” running other peoples’ applications inside of them.
But you still had some concept of a “computer” even if you couldn’t point to which was yours. For example, you could SSH into your EC2 “instance”.
Now shit gets truly crazy, in my opinion. You no longer have some abstract machine instance that you can connect to, deploy applications to, etc. Instead, you just have raw compute, pure and simple. Sure, the raw compute is backed by EC2 server instances, but you don’t deal with them. Instead, you create a Linux container from an image and then you, more or less, shoot that container (using Kubernetes or something) into that amorphous blob of compute power that you paid AWS for. Then, the containers use the resources of the instances to run your application inside their own virtualized and completely isolated environments.
Just take a moment to think about how abstract computing has gotten.