Ain’t no magic in that cloud...
One of the cost saving measures that is common in a traditional (non-cloud) hosting environment (e.g. on-prem) is to co-locate applications and services on larger compute nodes. This is driven by the basic resource constraints inherent in using physical infrastructure.
It’s often asked whether this same approach can or should be taken during a cloud migration, for the same reasons of cost-out.
Yes, even in cloud, you can run multiple applications on the same host. In fact, the same instructions apply whether doing this on-premise or in cloud: https://www.google.com/search?q=how+to+make+spaghetti
Shared compute nodes have always and always will create nothing but problems. In fact, it’s one of the main problems that virtualization, cloud and containers have been trying to solve for many years.
Ultimately, with the right amount of automation, it is far cheaper and more effective to manage many smaller and more specialized compute nodes than it is to pack many processes into a few large nodes.
Unfortunately, there’s no magic fix! If you want to save costs in cloud, don't look at infrastructure, look at your applications! You’re just not going to see much cost savings by running your same old applications on a brand-spanking new cloud.
The key is to refactor (or rewrite) your applications to take advantage of the unique capabilities that the cloud provides. Well designed and implemented applications that are highly modular (e.g. microservices) can scale very tightly to demand. This keeps costs to a minimum by consuming just enough resource as required at the moment.
Likewise with databases. Yes, you can run a small number of database nodes that each host many schemas, but then you lose much of the ability to easily automate your infrastructure. Well designed and implemented applications utilize many different data persistence technologies (relational, NoSQL, object storage, ephemeral, etc) that closely fit specific requirements. This keeps costs to a minimum because data persistence is optimized to specific requirements.
Running the same old apps the same old way in cloud will probably be more expensive than running them in the same old data centers.
With cloud you’re not just paying for compute, network and storage. You’re also paying for the privilege of the API that you can use to drive your infrastructure, the high level services that are built on top of the low level IaaS layer and the high availability and flexibility that a proper cloud provides.
You don’t have to use all the special things that make a cloud a cloud, but if you don’t, why did you move anything to the cloud?