A lot depends on where and how you work. If you are responsible for development and end to end operations down to the VM, K8s and Docker make a ton of sense.
If someone is doing that for you, ie. roles are separated, or you don’t want to take it on and prefer to outsource it, then a higher level abstraction like Heroku makes more sense. Debugging is different (still possible, just different from if you owned the full box).
This split also accounts for why AWS Lambda is growing in popularity (and debugging is probably its main gating factor).
If someone is doing that for you, ie. roles are separated, or you don’t want to take it on and prefer to outsource it, then a higher level abstraction like Heroku makes more sense. Debugging is different (still possible, just different from if you owned the full box).
This split also accounts for why AWS Lambda is growing in popularity (and debugging is probably its main gating factor).