It's also great to partition a large machine into smaller ones. Containers are not yet completely isolated from each other, but, if you own all the containers, it's a perfectly good solution and more flexible than virtualized hardware.
If you plan on separating your app and database servers to different machines, doing so from the start may be a clever idea.