1) Code and execution environment 2) Compute infrastructure to run (1) on
Serverless, to me, means that (2) is abstracted away from you. You submit (1) to the serverless service (AWS Lambda for example) and the service figures out how to run it. Serverless does not mean there are not any servers. It is just something you do not need to ideally worry about. Abstractions are leaky though, and they can leak in very mysterious ways the higher up the abstraction tree you go.