There are two forces that are driving the abstraction of infrastructure:

Developers would love to have a zero-added-effort abstraction for infrastructure – write your application and automatically figure it out. But there's no silver bullet (yet?).

A few different ways to "magically" abstract the infrastructure, each operating at a different level in the stack: