There are three principles of pricing: it must be comparable, practical, and consistent.
Usage-based pricing can work well. For SaaS companies, a standard unit is per-seat pricing. However, critical applications within DevOps and infrastructure may have few users but drive enormous economic value. For those companies, per node (virtual machine) pricing provides a decent proxy for the size of the company and the measure of the value.
But the way that we run software is changing. Virtual machines are no longer the logical unit of how software runs. Instead, platforms like Kubernetes split virtual machines into smaller units, containers, that can scale up and down extremely quickly and share resources. Technologies like AWS Firecracker use lightweight micro-virtual machines to the same effect.
Serverless frameworks specifically abstract the node away - users don't know or care how many virtual machines, containers, or micro-virtual machines are being used to fulfill autoscaling requests. AWS Lambda charges per function invocation.
So what's next if per-node pricing doesn't make sense anymore? First, it will have to be comparable across cloud platforms (ruling out vCPUs and bespoke "execution units" like Heroku's dyno). Second, it has to be practical, which rules out tough-to-measure and confusing metrics. And finally, it has to be consistent - something that the customer can reasonably predict.